I ran into this same issue. If you need any Immediate action to run with
admin rights when UAC is enabled you have to launch the setup as an
administrator. Also if you set Impersonate to 'yes' for a deferred
action unless you start the install with elevated rights the
impersonated deferred action won't have full admin rights under UAC. I
found the best way to get around this is with a bootstrapper application
as long as the bootstrapper has a manifest to require elevation.

The other option is to just not require admin rights at all during the
UI phase. It generally requires thinking completely differently and can
be more challenging to architect but it does pay dividends. You have to
remember that if you ever want to script your install for silent mode
using just the MSI you won't be able to run it with admin rights unless
you pass the command line through the bootstrapper. Also if you ever go
to add/remove programs and click modify, the MSI is executed, not the
bootstrapper, and that MSI will not run with the admin rights you
initially launched it with.

I like to think of a bootstrapper as a way to check prerequisites and
install them and that's it. If you are using it to launch with admin
rights you've added a whole additional bunch of requirements and
assumptions to your install.

In your fragment below I noticed you have execute deferred with no
impersonation. That should run under the system credentials, not the
launching user, so even if you launch elevated it should use the system
account.

Do you have an example for why you require elevated privileges? I ask
because I recently rearchitected our installer to remove that
requirement.

-Brooke

-----Original Message-----
From: Jan Bilek [mailto:bil...@gmail.com] 
Sent: Thursday, June 04, 2009 2:52 AM
To: wix-users@lists.sourceforge.net
Subject: [WiX-users] UAC - how to execute installer with elevated
privileges

Hello again,
I'm using simular custom actions in my installer:

<CustomAction Id="InstallFile" FileKey='file' Return='check' 
Execute='deferred' Impersonate="no"/>

I need to execute them under current (logged in) user, who has admin 
privileges. Everything works fine except for systems with UAC turned on 
(Vista,Win7). The CAs get executed under SYSTEM user.
So i'd like to ask you how to make it work. I can run msiexec.exe file 
from command prompt (with admin rights), but it's just a temporary
solution.

So, should i...
1) use a bootstrapper-like app?
2) embed a manifest file to the .msi installer file? (is that even 
possible???)
3) use any other more comfortable way? (set a msi attribute/property?)

Thanks for any help,
Jan




------------------------------------------------------------------------
------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises 
looking to deploy the next generation of Solaris that includes the
latest 
innovations from Sun and the OpenSource community. Download a copy and 
enjoy capabilities such as Networking, Storage and Virtualization. 
Go to: http://p.sf.net/sfu/opensolaris-get
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users



------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises 
looking to deploy the next generation of Solaris that includes the latest 
innovations from Sun and the OpenSource community. Download a copy and 
enjoy capabilities such as Networking, Storage and Virtualization. 
Go to: http://p.sf.net/sfu/opensolaris-get
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to