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