Thanks Palbinder.

What are the consequences of targeting earlier vs. later versions of 
Windows Installer, other than if you specify a greater number than the 
Windows Installer version, earlier versions won't load it?

The software itself supports Windows 2000-Windows 7, which is why we 
target 200 and above. However, if absolutely necessary, we can pull it 
up to Windows Installer 3.0.

I did end up trying that--I set ALLUSERS=2 and MSIINSTALLPERUSER=1 or "" 
depending on the circumstances. If I set these by default with 
<Property>, the install proceeds as expected. However, when I try to 
switch on-the-fly in the UI, I don't get the expected results. 
Specifically, in the WiX advanced UI, when switching from per-machine to 
per-user, the per-machine configuration still actually attempts to get 
installed, but it does not elevate. Since it does not elevate, the 
installation fails. Hope this makes sense.

I modified the WiX advanced UI ControlEvent so that instead of setting 
ALLUSERS="" or ALLUSERS=1, it sets MSIINSTALLPERUSER=1 or 
MSIINSTALLPERUSER="" (actually {}, which has that functionality). 
ALLUSERS is supposed to remain 2. However, that modification did not 
help any.

Do the WiX built-in UI dialogs come with support for "Single Package 
Authoring" with MSIINSTALLPERUSER, in some fashion?

-Sean

On 11/9/2011 3:23 AM, Pally Sandher wrote:
> First you need to target Windows Installer 4.0 (or later which means 4.5 on 
> pre-Vista platforms) if you want to make a single package which can do 
> per-user&  per-machine installations. This will involve bootstrapping the 4.5 
> redistributable for pre-Vista SP2 platforms.
> The code you pasted shows you currently targeting Windows Installer 2.0 which 
> will never work&  is pretty random anyway as you'd get better results 
> targeting 3.1 if XP is the earliest platform you're supporting.
>
> Second you need to set the ALLUSERS property to 2&  set the MSIINSTALLPERUSER 
> property accordingly (empty for per-machine, 1 for per-user) for Windows 
> Installer 5.0 platforms (Windows 7&  Server 2008 R2) ->  
> http://msdn.microsoft.com/en-us/library/aa367559.aspx
>
> That should get you started.
>
> Palbinder Sandher
> Software Platform Engineer
> T:+44 (0) 141 945 8500
> F:+44 (0) 141 945 8501
> http://www.iesve.com
>
> **Design, Simulate + Innovate with the<Virtual Environment>**
> Integrated Environmental Solutions Limited. Registered in Scotland No. 
> SC151456
> Registered Office - Helix Building, West Of Scotland Science Park, Glasgow 
> G20 0SP
> Email Disclaimer
>
>
> -----Original Message-----
> From: Sean Leonard [mailto:lists+sourcefo...@seantek.com]
> Sent: 08 November 2011 20:26
> To: wix-users@lists.sourceforge.net
> Subject: [WiX-users] Per-Machine and Per-User installs on XP/Vista/7 in the 
> same MSI
>
> In WiX 3.5, I am trying to create an MSI that can do both per-machine
> (ALLUSERS=1) and per-user (ALLUSERS="") installs from the same MSI. In
> this case, I want the default behavior to be per-machine, unless the
> user takes explicit steps to install per-user.
>
> I read several forum posts (and some of the Microsoft documentation),
> but they are confusing, or not promising. I am hoping that some
> ingenious folks here can figure out how to do this!
>
> Here is the scenario:
> Using WixUI_Advanced
> When double-clicking on the MSI (i.e., msiexec /i path-to-msi.msi,
> without setting any properties explicitly):
> On Windows XP:
>    if the user is an administrator (privileged), the default Install
> button installs per-machine.
>    if the user is not an administrator (not privileged), the default
> Install button installs per-machine--which will fail. However, clicking
> the "Advanced" button allows the user to install per-user.
> On Windows Vista/Windows 7:
>    if the user is an administrator (privileged), AND elevated, the
> default Install button installs per-machine. (The shield icon may or may
> not be visible.)
>    if the user is an administrator (privileged), AND NOT elevated, the
> default Install button installs per-machine. (The shield icon should be
> visible.)
>    if the user is not an administrator (not privileged), the default
> Install button installs per-machine--which will require the user to be
> prompted for an administrator's credentials. (The shield icon should be
> visible.) However, clicking the "Advanced" button allows the user to
> install per-user.
>
> In all cases, explicitly setting ALLUSERS="" or ALLUSERS=1 at the
> msiexec command-line will force per-user or per-machine installs.
>
> ********
> The closest we have gotten thus far is:
> <Package Id="*" InstallerVersion="200" Compressed="yes"
> InstallScope="perMachine" InstallPrivileges="limited" ReadOnly="no"
> Keywords="!(loc.PackageKeywords)"
> Description="!(loc.PackageDescription)" Comments="!(loc.PackageComments)" />
>
> (And various other supporting WiX elements.)
>
> In the configuration above:
> On Windows XP, the behavior is correct.
>
> On Windows Vista/Windows 7:
>    *CORRECT*: if the user is an administrator (privileged), AND elevated,
> the default Install button installs per-machine. (The shield icon is NOT
> visible.)
>    *INCORRECT*: if the user is an administrator (privileged), AND NOT
> elevated, the default Install button installs per-machine. The shield
> icon is visible. However, the package does NOT elevate. The error given
> is: "You do not have sufficient privileges to complete this installation
> for all users of the machine. Log on as administrator and then retry
> this installation." Error 1925.
>    *INCORRECT*: if the user is not an administrator (not privileged), the
> default Install button installs per-machine. The shield icon is visible.
> However, the package does NOT elevate. Same error as above. Clicking the
> "Advanced" button allows the user to install per-user successfully,
> without elevation.
>
> In all cases, explicitly setting ALLUSERS="" at the command-line
> performs the intended behavior of forcing per-user installation.
> ALLUSERS=1 at the command-line has the intended behavior of forcing
> per-machine installation, but it does NOT force elevation--so
> per-machine fails on Vista and 7.
>
> ********
> So basically, is there some way through custom actions or otherwise, to
> cause an MSI built with InstallPrivileges="limited" to request
> elevation? Alternatively, is there a way to cause an MSI built with
> InstallPrivileges="elevated" to reconfigure itself so that it does not
> request elevation?
>
> Thanks all,
>
> Sean
>


------------------------------------------------------------------------------
RSA(R) Conference 2012
Save $700 by Nov 18
Register now
http://p.sf.net/sfu/rsa-sfdev2dev1
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to