2014-10-28 143 views
10

我创建了一个带WIX的MSI,需要提升权限才能正常工作。在MSI项目中,我指定这通过WIX刻录引导程序不要求我的MSI的管理员权限

<Package [...] InstallPrivileges="elevated" /> 

现在我包括这款微星在定制bootsrapper项目的基础上WixWPF Bootstrapper。 据我了解,引导程序本身不应该改变机器状态,因此不应该要求提升特权。

我现在期望引导程序自动启动具有提升特权的集成MSI,如有必要,提示用户使用UAC对话框。但事实并非如此。相反,安装只是失败。 但是,当我以管理员身份显式运行引导程序可执行文件时,它可以正常工作。

如何在安装MSI时让引导程序请求提升权限?

+0

只需知道,您是否为您的MSI设置了此属性? InstallScope =“perMachine” – Isaiah4110 2014-10-28 18:20:56

+0

@ Isaiah4110我没有设置该属性;如果这会产生任何影响,我会在明天检查,因为我现在无法访问我的项目。谢谢! – 2014-10-28 19:28:55

+0

@ Isaiah4110谢谢,就是这样!如果您以此作为答案,我会很乐意接受它。 – 2014-10-29 07:36:04

回答

13

由于未设置用于MSI的INSTALLSCOPE属性,因此默认为每用户安装,并且引导程序应用程序认为它不需要任何ADMIN/Elevated权限来运行它。

现在在你的情况下,你是MSI的作者,你很容易将InstallScope添加到包元素。

InstallScope="perMachine" 

如果你不是MSI的作者,还是引导程序,只要您可以使用它来迫使每台机器的MSI/EXE的属性。

  1. MSIPackage - ForcePerMachine
  2. EXEPackage - PerMachine

那么,为什么引导程序认为每机安装需要提升的权限和每用户犯规?很简单,按用户安装,注册表值写在HKEY_CURRENT_USER下,并且对于每台机器安装,注册表值写在HKEY_LOCAL_MACHINE下。只有管​​理员用户可以读取/写入HKLM。

+0

谢谢,我欣赏额外的背景信息! – 2014-10-29 18:30:51