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

Den*_*nis 13 windows-installer uac wix bootstrapper burn

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

<Package [...] InstallPrivileges="elevated" />
Run Code Online (Sandbox Code Playgroud)

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

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

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

Isa*_*110 19

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

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

InstallScope="perMachine" 
Run Code Online (Sandbox Code Playgroud)

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

  1. MSIPackage - ForcePerMachine
  2. EXEPackage - PerMachine

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