This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Changing An Installer From Per-User to Per-Machine
Started by
teru747
, Sep 05 2003 06:25
6 replies to this topic
Posted 05 September 2003 - 06:25
I have a basic Windows installer that I would like to change from a per-user installation to a per-machine installation. I added the property ALLUSERS=1 to the Property table and new installations behave as expected.
I also changed the product code guid and product version to signify a major upgrade. The upgrade from the per-user installation to the per machine installation did not behave as well as the new installation did.
I used msiexec /i foo.msi to execute the upgrade.
The problem occurred during the uninstall. Uninstall completed without issue but left the product entry in the ARP. Attempting a second remove results in a pop up about the product not being installed properly. I had to clean up the registry by hand in order to correct the problem.
So my question is:
Is it possible to switch an installer from per-user to per-machine and have an upgrade remove the per user information from the registry?
I also changed the product code guid and product version to signify a major upgrade. The upgrade from the per-user installation to the per machine installation did not behave as well as the new installation did.
I used msiexec /i foo.msi to execute the upgrade.
The problem occurred during the uninstall. Uninstall completed without issue but left the product entry in the ARP. Attempting a second remove results in a pop up about the product not being installed properly. I had to clean up the registry by hand in order to correct the problem.
So my question is:
Is it possible to switch an installer from per-user to per-machine and have an upgrade remove the per user information from the registry?
Posted 05 September 2003 - 15:09
You must be logged on as the same user as installed the per-user version.
In addition I think you need to run the uninstall of the old version with ALLUSERS=0.
In addition I think you need to run the uninstall of the old version with ALLUSERS=0.
Stefan Krüger
InstallSite.org twitter facebook
Posted 05 September 2003 - 21:17
In my upgrade test I executed both installs as the same user. Is that uninstall prior to the install or is there a way to specify ALLUSERS=0 during the removal portion of the upgrade?
Posted 05 September 2003 - 22:13
Using the Upgrade table I don't think that's possible. You may have to invoke the uninstall using a custom action in the UI sequence.
Stefan Krüger
InstallSite.org twitter facebook
Posted 07 September 2003 - 03:41
Stefan,
Here is how I addressed this and I was wondering if you can think of anything that I might have missed.
Ensure that ALUSERS is null or missing from Property table
Create a custom action - SetPerMachine 51 ALLUSERS 1
Sequence SetPerMachine after FindRelatedProducts in InstallExecute and InstallUIExecute
This is a Windows NT/2000 Server and above application so it won't violate the warning about Win9x. It also isn't the ideal fix because upgrading the application as USER2 after USER1 installed it leaves a small amout of USER1's install around. The stuff that is left over (USER1's install registration) is not visible to an end-user and we are not seeking certification with this release.
Same user installs and upgrades over the old per-user install works as expected and the subsequent uninstall removes all trace of the applcation from the system. The per-machine aspect is also correct in that an install by USER1 of the new version can be removed by USER2. (Both USERS have administrative rights.)
I intend to address this further with a more complete solution once there is more time.
The msi also passed the "Full MSI Validations" in orca.
Is there something else I should be concerned about?
Here is how I addressed this and I was wondering if you can think of anything that I might have missed.
Ensure that ALUSERS is null or missing from Property table
Create a custom action - SetPerMachine 51 ALLUSERS 1
Sequence SetPerMachine after FindRelatedProducts in InstallExecute and InstallUIExecute
This is a Windows NT/2000 Server and above application so it won't violate the warning about Win9x. It also isn't the ideal fix because upgrading the application as USER2 after USER1 installed it leaves a small amout of USER1's install around. The stuff that is left over (USER1's install registration) is not visible to an end-user and we are not seeking certification with this release.
Same user installs and upgrades over the old per-user install works as expected and the subsequent uninstall removes all trace of the applcation from the system. The per-machine aspect is also correct in that an install by USER1 of the new version can be removed by USER2. (Both USERS have administrative rights.)
I intend to address this further with a more complete solution once there is more time.
The msi also passed the "Full MSI Validations" in orca.
Is there something else I should be concerned about?
Posted 07 September 2003 - 03:43
By the way the stranded USER1 install registration can be removed using
msiexec /x [ProductCode]
msiexec /x [ProductCode]
Posted 08 September 2003 - 07:28
Looks like a feasible workaround to me.
Stefan Krüger
InstallSite.org twitter facebook