2011-05-25 213 views
11

我使用WiX开发了一个用于.NET WPF应用程序的自定义安装程序。如果我右键单击并以管理员身份运行,则工作正常,但如果没有运行,某些组件由于权限不足而无法安装。WiX安装程序应始终以管理员身份运行

这些组件包括SQL Server Express 2008 R2,FoxIt Reader,ActiveX组件和其他一些组件。它还要求在新安装的数据库上运行一些SQL脚本 - 无论如何,它们都需要管理员权限。


我尝试添加了InstallScope =“perMachine”和InstallPrivileges =“架空”属性包节点,但这似乎并没有发挥作用。

我敢肯定,这是愚蠢的,但我找不到任何参考或在线。

回答

21

我认为,如果你只需要添加

<Property Id="MSIUSEREALADMINDETECTION" Value="1" /> 

应该解决的问题。如果不是,请告诉我,我可以再做一些检查。

+0

谢谢 - 我会摆弄它。我应该把这个放在哪里? – rumblefx0 2011-05-27 10:05:02

+0

它在产品元素下的任何地方。我喜欢把我的所有房产都放在底部,但这只是个人偏好。 – Adkins 2011-05-28 14:13:43

+0

谢谢......这帮助我解决了同样的问题。 – Brandon 2011-09-20 22:31:56

0

对我来说,我应该运行一个注册表命令,通过CustomAction WiX元素删除一个系统环境变量,这需要管理员权限。

使用CustomAction→Impersonate =“no”为我工作,如后所述https://stackoverflow.com/a/8657472/3205679

WiX的自定义操作代码:

<CustomAction Id = "Uninstall_MYSYSENV" 
       Directory = "INSTALLFOLDER" 
       ExeCommand = 'cmd.exe /c &quot;reg delete  "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v MYSYSENV /f&quot;' 
       Execute = "deferred" 
       Impersonate= "no" 
       Return  = "asyncNoWait" 
       /> 

<InstallExecuteSequence> 
     <Custom Action="Uninstall_MYSYSENV" 
       After="InstallInitialize">Installed AND NOT UPGRADINGPRODUCTCODE</Custom> 
</InstallExecuteSequence> 
相关问题