【问题标题】:How do I get WiX installer to request administrative privileges?如何让 WiX 安装程序请求管理权限?
【发布时间】:2012-12-30 04:00:03
【问题描述】:

我们有一个内部开发的程序。我们正在升级以使用 Visual Studio 2012,因此必须保留 Visual Studio 安装程序项目。如果已经安装了应用程序,InstallShield LE 会给我们带来快捷方式问题。这让我最终选择了 WiX。

我已经对此进行了几天的研究,并阅读了几篇关于如何获得管理员权限的帖子,但似乎没有一个有效。 Package 元素具有 InstallPrivileges="1" 并且存在以下 Property 元素:

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

它在启动时不会请求管理员权限,因此在尝试在C:\Program Files(x86)中创建程序文件夹时失败。

【问题讨论】:

  • MSI 在InstallExecuteSequence 之前不会请求管理员权限。要从一开始就获得管理员权限,您必须使用引导程序,请查看 WIX 提供的 Burn Engine。
  • 如果您的包是按机器安装的,那么 MSI 引擎会自动请求 UAC 提升。难道你的包是每个用户的,但仍然试图写入程序文件? ALLUSERS 属性是否设置为 1?
  • 感谢两位的建议。致 Natalie:我不能使用引导程序。输出必须是 MSI(其他人将升级链接硬编码到当前应用程序中)。我添加了以下内容,我不确定哪个(或什么组合)给了我我需要的东西,但它现在可以工作:InstallPrivileges="elevated" AdminImage="yes" InstallScope="perMachine"
  • @OpusKrokus 您可以将其发布为答案并接受它。事实上,我强烈建议你这样做。

标签: installation wix elevated-privileges


【解决方案1】:

回答如何让 WiX 安装程序请求管理权限

Opus Krokuscomment 中找到的解决方案。

回答

我添加了以下内容(到 Package 元素中),我不确定哪个(或什么组合)给了我我需要的东西,但它现在可以工作:InstallPrivileges="elevated" AdminImage="yes" InstallScope="perMachine "

【讨论】:

  • 我认为正确的是InstallPrivileges。我删除了AdminImage 属性,我的包仍在请求管理权限。 AdminImage 似乎意味着另一回事,请参阅:stackoverflow.com/a/15434458/145349
  • InstallScope="perUser" 有可能吗?我无法为每个用户设置提升的权限。
  • 您必须使用InstallScope="perMachine" 才能完成这项工作。
【解决方案2】:

查看this Stack Overflow question的答案。

这里是答案的精髓:

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

Opus Krokus 建议的解决方案对我不起作用。

【讨论】:

    【解决方案3】:

    您需要 2 个命令:

    <Property Id="MSIUSEREALADMINDETECTION" Value="1" />     
    
    <Condition Message="Installation requires Administrator privileges">
        <![CDATA[Privileged]]>
    </Condition>
    

    注意你必须用&lt;![CDATA[]]&gt;包围Privileged

    【讨论】:

      【解决方案4】:

      这对我有用,因为我为在 Windows 7(及更高版本)上安装而创建的 MSI:

        <!-- Set per-machine installation as default.
        See See http://msdn.microsoft.com/en-us/library/dd408007.aspx for an explanation of ALLUSERS=2 and MSIINSTALLPERUSER="".
        -->
        <Property Id="ALLUSERS" Value="2" />
        <!-- Needs to be empty value (and empty value must be commented out to get rid of error message when compiling):
        <Property Id="MSIINSTALLPERUSER" Value="" /> 
        -->
      

      如上述 XML-comment 中所述,详情请参阅http://msdn.microsoft.com/en-us/library/dd408007.aspx

      【讨论】:

        猜你喜欢
        • 2018-03-24
        • 2016-06-05
        • 1970-01-01
        • 2011-12-01
        • 2016-12-01
        • 2014-02-08
        • 2021-07-27
        • 2018-05-01
        • 2012-02-02
        相关资源
        最近更新 更多