WIX Burn Bootstrapper没有要求我的MSI的管理员权限

时间:2014-10-28 16:05:09

标签: wix windows-installer uac bootstrapper burn

我创建了一个带有WIX的MSI,需要提升的权限才能正常工作。在MSI项目中,我通过

指定了这个
<Package [...] InstallPrivileges="elevated" />

现在我将此MSI包含在基于WixWPF Bootstrapper的自定义bootsrapper项目中。 据我了解,引导程序本身不应该改变机器状态,因此不需要提升权限。

我现在希望Bootstrapper能够自动启动具有提升权限的集成MSI,并在必要时提示用户使用UAC对话框。但事实并非如此。相反,安装失败了。 但是,当我以管理员身份明确地运行引导程序可执行文件时,它可以工作。

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

1 个答案:

答案 0 :(得分:17)

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

现在,在您的情况下,您是MSI的作者,您可以轻松地将InstallScope添加到package元素中。

InstallScope="perMachine" 

如果您不是MSI的作者,仍然引导程序提供了一个属性,您可以使用该属性强制每台机器进行MSI / EXE。

  1. MSIPackage - ForcePerMachine
  2. EXEPackage - PerMachine
  3. 那么为什么Bootstrapper认为Per-Machine安装需要提升权限而Per-User不需要?很简单,每个用户安装注册表值写在HKEY_CURRENT_USER下,对于每台机器安装,注册表值写在HKEY_LOCAL_MACHINE下。只有管​​理员用户可以读/写HKLM。