【发布时间】:2016-06-11 01:21:23
【问题描述】:
我有一个InstallPrivileges="elevated" 的安装程序。我在文件表中包含一个 app.EXE
<Component Id="myapp" Guid="*">
<File Id="myapp" Source="myapp.exe"/>
</Component>
使用这些 CA 在提升状态下运行它:
<CustomAction Id="SetProp" Property="Launch" Value =""[INSTALLDIR]myapp.exe""/>
<CustomAction Id="Launch" BinaryKey="WixCA" DllEntry="CAQuietExec64" Execute="deferred" Return="ignore" Impersonate="no"/>
这样安排:
<Custom Action="SetProp" Before="Launch">NOT Installed</Custom>
<Custom Action="Launch" Before="InstallFinalize">NOT Installed</Custom>
但根据 Uachelper 类 (c#) 和缺失的结果,此过程未提升但详细日志和 myapp.exe 日志显示没有错误。
我还尝试使用类型 2 自定义操作(二进制密钥等)、类型 18 自定义操作(文件密钥等)并使用 requiredadministrator 将 app.manifest 包含到 myapp.exe 中。
在安装过程中没有提升 myapp.exe..。
我发现的解决方法是在安装完成后手动启动 myapp.exe(转到 [INSTALLDIR] 并双击 myapp.exe,会提示 uac 等),但我想避免这种情况。
我也想过尝试使用runas,但不确定这是否可行或是否可行。
所有这些都基于http://wixtoolset.org/documentation/manual/v3/customactions/qtexec.html、https://stackoverflow.com/a/10028939/4096653 以及更多关于 SO 的问题。
我缺少什么或者我还能尝试什么?
【问题讨论】:
标签: c# .net wix installation