[wix-users] Serious problem with FindRelatedProducts and install context
Wheeler, Blaine (DSHS/DCS)
BWheeler at dshs.wa.gov
Wed Mar 28 08:14:13 PDT 2018
+ 1 to Edwin
-----Original Message-----
From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org] On Behalf Of Edwin Castro via wix-users
Sent: Tuesday, March 27, 2018 7:02 PM
To: Alan Sinclair
Cc: Edwin Castro; WiX Toolset Users Mailing List
Subject: Re: [wix-users] Serious problem with FindRelatedProducts and install context
Just remember that "the original install" is not really a thing. You can only determine 2 things:
1.) Has this package been installed per-machine previously?
2.) Has this package been installed per-user *by this user* previously?
If the package was installed per-user previously by a *different* user, then you won't know and will be "forcing" all future installs to be per-machine if this user selects per-machine.
Any and all previous installs done per-user by different users will no longer be able to upgrade after a per-machine install occurs. Those installs will be forever stuck at the version they had when the per-machine install happened. Need a new feature or bug fix? Sorry you can't upgrade your existing per-user install because somebody else installed per-machine after you!
The requirement doesn't really make sense. It is a bad requirement.
--
Edwin G. Castro
On Tue, Mar 27, 2018, 18:32 Alan Sinclair <anadem at gmail.com> wrote:
> > What if UserA installed per-user and then a sysadmin installed
> per-machine and then UserB tries to install per-user? That's three
> different installs and none of them would logically be upgrades
> because the context is different.
>
> You're right of course, but we don't need to support those cases...
> not sure what management will require if/when they happen ;-) However
> I was asked for a dual-scope installer, and need to make it able to
> update, forcing subsequent installs to the same scope as the original
> install. Per-user will be to the usual per-user locations (to avoid
> needing elevation), with per-machine going to the usual per-machine slots.
>
> (My windows installer experience likewise has been all per-machine
> with enterprise software --and that was over ten years ago-- so I'm
> both ignorant and rusty.)
>
> Thanks for the ideas
> Alan
>
> On Tue, Mar 27, 2018 at 4:49 PM, Edwin Castro <egcastr at gmail.com> wrote:
>
>> I *think* burn doesn't support dual-scope out of the box. That said,
>> you could write a custom BA that presented that choice to the user
>> and passes the appropriate ALLUSERS and MSIINSTALLPERUSER values.
>>
>> I'm guessing you intend to force per-machine if the product was
>> installed per-machine previously.
>>
>> What if a user really wants a per-user install even though there is
>> already a per-machine install?
>>
>> What if UserA installed per-user and then a sysadmin installed
>> per-machine and then UserB tries to install per-user? That's three
>> different installs and none of them would logically be upgrades
>> because the context is different.
>>
>> I don't have practical experience with per-user installs because I do
>> setup exclusively for enterprise software that is intended to be
>> installer per-machine only ... *but* ... The more I think about this
>> the more I think it never makes sense to have installers that target
>> both per-user and per-machine contexts. They really are different
>> beasts and probably deserve their own separate MSI packages. I could
>> see a single bootstrapper that was responsible for determining the
>> kind of install/upgrade we're interested in and then installing the appropriate MSI but that would be about it.
>>
>> --
>> Edwin G. Castro
>>
>> On Tue, Mar 27, 2018 at 4:36 PM, Alan Sinclair <anadem at gmail.com> wrote:
>>
>>> oops, meant to write AppSearch not FindRelatedProducts (brain fail)
>>>
>>> The issue isn't per-machine vs per-user, it's per-machine upgrading
>>> per-machine. Installing the dual-scope package, only per-user
>>> previous installations are detected and upgraded.
>>>
>>> When version 1.0 is installed per-machine, a subsequent install of
>>> version 2.0 does not 'see' the v1.0 installed product, and installs
>>> v 2.0 as a fresh new product (overwriting the per-machine files if
>>> v.2.0 is installed per-machine .. which is what I meant by "only one
>>> set of files")
>>>
>>> *> I have a feeling you'll need a bootstrapper to install the
>>> upgrade MSI *
>>>
>>> Would that be an exe which passes ALLUSERS and MSIINSTALLPERUSER to
>>> msiexec to install the MSI?
>>> Would Burn be a candidate for that? I've never used Burn. Can Burn
>>> allow the user to choose per-machine or per-user in a non-upgrade
>>> install? (for an upgrade we'd want to remove the ability to choose)
>>>
>>> many thanks
>>> Alan
>>>
>>>
>>>
>>>
>>>
>>>
>>> On Tue, Mar 27, 2018 at 4:23 PM, Edwin Castro <egcastr at gmail.com> wrote:
>>>
>>>> Just curious, what do you mean "there's only one set of files"?
>>>>
>>>> A per-user install and per-machine install should probably install
>>>> to different locations. What if UserA and UserB both perform
>>>> per-user installs? Those installs should not conflict with one
>>>> another and should not conflict with a per-machine install.
>>>>
>>>> I have a feeling you'll need a bootstrapper to install the upgrade
>>>> MSI with appropriate values for ALLUSERS and MSIINSTALLPERUSER
>>>> depending on whether the user wants to install/upgrade per-user vs per-machine...
>>>>
>>>> --
>>>> Edwin G. Castro
>>>>
>>>>
>>>>
>>>> On Tue, Mar 27, 2018 at 4:05 PM, Alan Sinclair via wix-users <
>>>> wix-users at lists.wixtoolset.org> wrote:
>>>>
>>>>> I'm making a dual-scope MSI which uses the InstallScope dialog for
>>>>> the user to choose per-user or per-machine. It installs fine, but
>>>>> upgrades to a per-machine installation fail.
>>>>>
>>>>> FindRelatedProducts seems to search only the scope in current
>>>>> force when it runs, and it's sequenced right at the start (so
>>>>> early it doesn't even appear in the log.)
>>>>>
>>>>> My MSI has ALLUSERS=2 and MSIINSTALLPERUSER=1, with the
>>>>> InstallScope dialog changing that as required, so
>>>>> FindRelatedProducts looks only in per-user scope. If an
>>>>> earlier-versioned MSI was installed per-machine,
>>>>> FindRelatedProducts does NOT find it, so the install does not
>>>>> upgrade, and Control Panel's ARP shows the product twice (there's
>>>>> only one set of files, of course).
>>>>>
>>>>> Is there any way to solve this? Can FindRelatedProducts be run
>>>>> later in the sequence, after the UI? Or can FindRelatedProducts be
>>>>> run twice?
>>>>>
>>>>> Or can I add custom actions before FindRelatedProducts to look in
>>>>> the registry and check previous install scope, then adjust
>>>>> ALLUSERS etc accordingly so FindRelatedProducts searches the right scope?
>>>>>
>>>>> How can a dual-scope package be upgraded in both per-user AND
>>>>> per-machine installations?
>>>>>
>>>>> Thanks
>>>>> Alan
>>>>>
>>>>> __________________________________________________________________
>>>>> __ WiX Toolset Users Mailing List provided by FireGiant
>>>>> http://www.firegiant.com/
>>>>>
>>>>
>>>>
>>>
>>
>
____________________________________________________________________
WiX Toolset Users Mailing List provided by FireGiant http://www.firegiant.com/
More information about the wix-users
mailing list