我们有一个内部开发的程序.我们正在升级以使用Visual Studio 2012,因此必须将Visual Studio安装程序项目放在后面.如果已经安装了应用程序,InstallShield LE会给我们提供快捷方式的问题.这让我最终选择了WiX.
我已经研究了几天,并阅读了几篇关于如何获得管理员权限的帖子,但似乎都没有.该Package元素具有InstallPrivileges ="1"并且存在以下Property元素:
<Property Id="MSIUSEREALADMINDETECTION" Value="1" />
Run Code Online (Sandbox Code Playgroud)
它在启动时不会请求管理员权限,因此在尝试创建程序文件夹时会失败C:\Program Files(x86).
我为我们的产品实现了一个安装程序。安装程序需要管理员权限,因此我使用带有清单文件的安装引导程序(按照推荐那样)在启用了 UAC 的 Windows 计算机上获得这些权限。安装和卸载都很顺利——用户会被请求许可,安装程序会做它需要做的事情。
\n\n但是,如果您运行“控制面板\xe2\x86\x92程序和功能”并为已安装的程序选择“更改”*,则会出现错误(自定义,来自安装程序 LaunchConditions),告知安装程序需要管理权限。在这种情况下,我找不到任何方法来请求权限 - Windows 只是运行 MSI 文件,并且不知道有关所需权限的任何信息。
\n\n更奇怪的是修复功能 - 它请求许可,但随后无法使用 SetupBootstrapper 执行安装期间允许的某些操作。
\n\n我在这里发现了类似的问题:
\n\n但所提出的解决方案在我们的案例中是不可接受的。
\n\n现在更改功能的唯一解决方法是始终使用SetupBootstrapper,而不使用程序和功能菜单,但这对用户不太友好,并且迫使用户将安装程序保留在他/她的硬盘上。
\n\n有没有人更好的建议?
\n\nPS:我用的是WiX来创建安装程序,因此很高兴听到有关 WiX 解决方案的信息,但我很确定它不依赖于安装程序创建语言,而仅依赖于 MSI 细节。
\n