Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Executing a custom action that requires elevation after install

I have the following WiX snippet:

<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOX" Value="1" />
<CustomAction Id="StartAppOnExit" 
              FileKey="Configurator.exe" 
              ExeCommand="" 
              Execute="immediate" 
              Impersonate="yes" 
              Return="asyncNoWait" />
<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" 
          Value="Configure initial settings" />
<UI>
  <Publish Dialog="ExitDialog" 
           Control="Finish" 
           Order="1" 
           Event="DoAction" 
           Value="StartAppOnExit"
  >WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>
</UI>

Basically on the exit dialog I display a box that says: launch application. Note: this application requires elevation. This all works fine except for a snag. If UAC is enabled it seems that the MSI mucks around with the user token and strips its groups, so when it tries to launch the application that requires elevation it is no longer an option.

How do I string this together to work?

I tried chucking an Impersonate="no", but it's too late at that point for this to work.

like image 551
Sam Saffron Avatar asked Feb 24 '10 11:02

Sam Saffron


People also ask

What does “the requested operation requires elevation” mean?

Sometimes when you try to access a file/folder on your external drive or attempt to run a program, you may encounter a message saying “The requested operation requires elevation”. This error indicates that you do not have the essential privileges to perform a particular action on Windows and thus need elevated permission of a local administrator.

How to fix “elevation Windows 10 requests Elevation” error?

The UAC settings may lead to the problem the requested operation requires elevation Windows 10. So, in order to solve the problem, you can try to turn off the UAC first. Now, here is the tutorial. Step 1: Press Control Panel in the search box of Windows 10 and choose the best-matched one to continue.

How to fix error 740 – the requested operation requires elevation?

Repeat the action that was previously causing the “ Error 740 – The Requested Operation Requires Elevation” and see if the problem is fixed. Press Windows key + R to open up a Run dialog box. Next, type ‘cmd’ inside the text box and press Ctrl + Shift + Enter to open up an elevated Command prompt.

How to fix “GPEdit cannot elevate” issue in Windows 10?

The fourth solution to fix the issue of the requested operation requires elevation is to select Elevate without prompting in GPEDIT. Now, here is the tutorial. Step 1: Press Windows key and R key together to open Run box, then type gpedit.msc in the box and click OK to continue.


1 Answers

The UI sequence is running as a limited user, and it launches applications with a call to CreateProcess. If you use something like a WixShellExec with [WixShellExecTarget] instead, it will act like Explorer and show a UAC prompt if the target requires elevation. Or you could modify your Configurator.exe to allow being launched without elevated privileges, detect that case, and relaunch itself with elevated privileges.

For example, this should work:

<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOX" Value="1" />
<CustomAction Id="StartAppOnExit" BinaryKey="WixCA" DllEntry="WixShellExec" Execute="immediate" Return="check" Impersonate="yes"/>
<Property Id="WixShellExecTarget" Value="[#Configurator.exe]"/>
<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Configure initial settings" />
<UI>
  <Publish Dialog="ExitDialog" Control="Finish" Order="1" Event="DoAction" Value="StartAppOnExit">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>
</UI>
like image 146
Michael Urman Avatar answered Oct 22 '22 19:10

Michael Urman