WiX安装程序应始终以管理员身份运行
问题描述:
我使用WiX开发了一个用于.NET WPF应用程序的自定义安装程序。如果我右键单击并以管理员身份运行,则工作正常,但如果没有运行,某些组件由于权限不足而无法安装。WiX安装程序应始终以管理员身份运行
这些组件包括SQL Server Express 2008 R2,FoxIt Reader,ActiveX组件和其他一些组件。它还要求在新安装的数据库上运行一些SQL脚本 - 无论如何,它们都需要管理员权限。
我尝试添加了InstallScope =“perMachine”和InstallPrivileges =“架空”属性包节点,但这似乎并没有发挥作用。
我敢肯定,这是愚蠢的,但我找不到任何参考或在线。
答
我认为,如果你只需要添加
<Property Id="MSIUSEREALADMINDETECTION" Value="1" />
应该解决的问题。如果不是,请告诉我,我可以再做一些检查。
答
对我来说,我应该运行一个注册表命令,通过CustomAction WiX元素删除一个系统环境变量,这需要管理员权限。
使用CustomAction→Impersonate =“no”为我工作,如后所述https://*.com/a/8657472/3205679。
WiX的自定义操作代码:
<CustomAction Id = "Uninstall_MYSYSENV"
Directory = "INSTALLFOLDER"
ExeCommand = 'cmd.exe /c "reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v MYSYSENV /f"'
Execute = "deferred"
Impersonate= "no"
Return = "asyncNoWait"
/>
<InstallExecuteSequence>
<Custom Action="Uninstall_MYSYSENV"
After="InstallInitialize">Installed AND NOT UPGRADINGPRODUCTCODE</Custom>
</InstallExecuteSequence>
谢谢 - 我会摆弄它。我应该把这个放在哪里? – rumblefx0 2011-05-27 10:05:02
它在产品元素下的任何地方。我喜欢把我的所有房产都放在底部,但这只是个人偏好。 – Adkins 2011-05-28 14:13:43
谢谢......这帮助我解决了同样的问题。 – Brandon 2011-09-20 22:31:56