【发布时间】: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