后,我有以下WiX的片段:执行需要提升一个自定义操作安装
<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>
基本上就退出对话框我显示一个对话框,上面写着:启动应用程序。注意:这个应用程序需要提升。这一切工作正常,除了一个障碍。如果启用了UAC,似乎MSI会用用户令牌剔除并剥离它的组,因此当它试图启动需要提升的应用程序时,它不再是一个选项。
我如何将这些字符串串起来工作?
我试图夹住Impersonate =“no”,但在这一点上工作已经太迟了。
关于您的疑问,问题是需要提升的组合,以及CreateProcess无法提升其创建的进程的事实。相反,CreateProcess返回ERROR_ELEVATION_REQUIRED,这是自定义代码可以处理的。 Windows Installer只报告错误。 – 2010-02-25 14:31:06