Jump to content


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.
Photo

Changing An Installer From Per-User to Per-Machine


6 replies to this topic

teru747

teru747
  • Members
  • 4 posts

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?

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

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.

teru747

teru747
  • Members
  • 4 posts

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?

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

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.

teru747

teru747
  • Members
  • 4 posts

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?



teru747

teru747
  • Members
  • 4 posts

Posted 07 September 2003 - 03:43

By the way the stranded USER1 install registration can be removed using

msiexec /x [ProductCode]



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 08 September 2003 - 07:28

Looks like a feasible workaround to me.