Tengo el siguiente fragmento de código WiX:La ejecución de una acción personalizada que requiere la elevación después de la instalación
<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>
Básicamente en la pantalla final, que muestran una casilla que dice: aplicación de inicio. Nota: esta aplicación requiere elevación. Todo esto funciona bien a excepción de un inconveniente. Si UAC está habilitado, parece que el MSI se revuelve con el token de usuario y quita sus grupos, por lo que cuando intenta iniciar la aplicación que requiere elevación ya no es una opción.
¿Cómo puedo unir esto para que funcione?
Intenté conectar un Impersonate = "no", pero ya es demasiado tarde para que esto funcione.
En cuanto a su maravilla, el problema es la combinación de necesidad de elevación, y el hecho de que CreateProcess no puede elevar los procesos que crea. En cambio, CreateProcess devuelve ERROR_ELEVATION_REQUIRED, que el código personalizado puede manejar. Windows Installer simplemente informa el error. –