This website uses cookies. By clicking Accept, you consent to the use of cookies. Click Here to learn more about how we use cookies.
Turn on suggestions
Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.
- Revenera Community
- :
- InstallShield
- :
- InstallShield Forum
- :
- Re: Changing per-user, per-machine
Subscribe
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Subscribe
- Mute
- Printer Friendly Page
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Oct 21, 2008
10:54 AM
Changing per-user, per-machine
Hi, everyone -
I've spent a few hours scouring the forums for this, but no luck. Someone posted the same question a few years ago, but got no response. I'm hoping for better luck.
I'm looking for a way to change a per-user installation to a per-machine installation, ideally through a major upgrade. This is for a Basic MSI.
Initially, we released our product as a per-user (ALLUSERS not present in the property table), but then when IS 2008 came out and MS / IS recommended ALLUSERS be 1, we changed that with the next major version. ISSetAllUsers 'correctly' deletes the ALLUSERS property on a major upgrade, so we're not seeing errors (so long as the upgrade is run by the user who installed the old version, of course) - but we'd really like to get these installations to be per-machine.
I've seen something from Dickau saying that ALLUSERS must be the same for installed product and upgraded product, but I guess I'm hoping for a sneaky way around this.... or an absolute confirmation that it cannot be done.
Anyone? Anyone? Thanks.
I've spent a few hours scouring the forums for this, but no luck. Someone posted the same question a few years ago, but got no response. I'm hoping for better luck.
I'm looking for a way to change a per-user installation to a per-machine installation, ideally through a major upgrade. This is for a Basic MSI.
Initially, we released our product as a per-user (ALLUSERS not present in the property table), but then when IS 2008 came out and MS / IS recommended ALLUSERS be 1, we changed that with the next major version. ISSetAllUsers 'correctly' deletes the ALLUSERS property on a major upgrade, so we're not seeing errors (so long as the upgrade is run by the user who installed the old version, of course) - but we'd really like to get these installations to be per-machine.
I've seen something from Dickau saying that ALLUSERS must be the same for installed product and upgraded product, but I guess I'm hoping for a sneaky way around this.... or an absolute confirmation that it cannot be done.
Anyone? Anyone? Thanks.
(3) Replies
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Oct 21, 2008
11:13 AM
There are certainly various hacks you could explore (such as making the major upgrade item detect-only, removing the previous install via a custom action in the UI sequence, then fixing ALLUSERS to be what you want; or perhaps wiring up a prerequisite to uninstall the previous version), but I wonder if it wouldn't be more efficient and less error prone to detect this scenario and block with a message requesting they uninstall the existing per-user installation.
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Oct 21, 2008
01:30 PM
Well, it's the central application for our solution, and in some cases may contain a database with all their enterprise info. So I don't think very many customers will accept having to uninstall the product, unfortunately.
So let me ask about the hack you're referencing...
Why, if a major upgrade uninstalls the old product, must the ALLUSERS setting match, anyway?
And how risky vs. how reliable would you say this is?
Does the RemoveRelatedProducts action do anything but call msiexec /x {etc}?
Thanks for your help- I really appreciate it.
So let me ask about the hack you're referencing...
(such as making the major upgrade item detect-only, removing the previous install via a custom action in the UI sequence, then fixing ALLUSERS to be what you want;
Why, if a major upgrade uninstalls the old product, must the ALLUSERS setting match, anyway?
And how risky vs. how reliable would you say this is?
Does the RemoveRelatedProducts action do anything but call msiexec /x {etc}?
Thanks for your help- I really appreciate it.
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Oct 22, 2008
10:55 AM
ALLUSERS must match because otherwise the following scenario would be unpredictable:
User A installs the product per-user.
User B installs the product per-machine.
User A installs a major upgrade; which version does MSI try to remove?
The primary risk to going with a manual upgrade is that the previous package cannot be uninstalled during the execute sequence, such as in a silent install; a proper major upgrade can uninstall it regardless of UI level. There are other various differences between a proper major upgrade and a plain msiexec /x, such as whether UPGRADINGPRODUCTCODE is provided to the uninstalling product; I'm not sure what others there are.
User A installs the product per-user.
User B installs the product per-machine.
User A installs a major upgrade; which version does MSI try to remove?
The primary risk to going with a manual upgrade is that the previous package cannot be uninstalled during the execute sequence, such as in a silent install; a proper major upgrade can uninstall it regardless of UI level. There are other various differences between a proper major upgrade and a plain msiexec /x, such as whether UPGRADINGPRODUCTCODE is provided to the uninstalling product; I'm not sure what others there are.
![](/skins/images/3B39CE851FDD5528C393F146EB70A2D0/responsive_peak/images/icon_anonymous_message.png)