WiX安装程序应始终以管理员身份运行

时间:2011-05-25 09:32:29

标签: .net wpf installer wix

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

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


我尝试将InstallScope =“perMachine”和InstallPrivileges =“elevated”属性添加到Package节点,但这似乎没有什么区别。

我确定这是愚蠢的,但我在参考或网上找不到任何东西。

3 个答案:

答案 0 :(得分:23)

我想如果你只是添加

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

它应该解决问题。如果没有,请告诉我,我可以再做一些检查。

答案 1 :(得分:0)

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

使用CustomAction→Impersonate =&#34; no&#34;如 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>

答案 2 :(得分:0)

将此添加到您的包元素

<Property Id="ALLUSERS" Value="1" />    <!--equals to install="permachine" at package element but this element depricated -->
<Property Id="MSIUSEREALADMINDETECTION" Value="1" /> 

<Condition Message="Please Run as Administrator.">
      Privileged
</Condition>

然后使用Winrar为这些msi 文件创建一个简单的 sfx存档文件:

  • “设置”标签&gt; 执行后输入:您的msi文件名

  • 高级标签&gt;标记请求管理员权限选项复选框