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