WIX刻录引导程序没有要求管理权限为我的MSI



我使用WIX创建了一个MSI,该MSI需要提升权限才能正常工作。在MSI项目中,我通过指定了这一点

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

现在,我将这个MSI包含在一个基于WixWPF引导程序的自定义引导程序项目中。据我所知,引导程序本身不应该改变机器状态,因此不应该要求提升权限。

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

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

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

现在,在您的情况下,您是MSI的作者,将InstallScope添加到包元素中非常容易。

InstallScope="perMachine" 

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

  1. MSIPackage-ForcePerMachine
  2. EXEPackage-PerMachine

那么,为什么引导程序认为每台机器的安装需要提升权限,而每用户不需要?很简单,每个用户安装的注册表值都写在HKEY_CURRENT_user下,对于每台机器安装,注册表值写在HKEY_LOCAL_machine下。只有管理员用户可以读取/写入HKLM。

最新更新