WiX - 将 InstallScope 从 perUser 切换到 perMachine

标签 wix windows-installer

我正在尝试创建一个安装程序,它支持依赖于 UI 上的安装类型选择的 perUser 和 perMachine 安装。

  • perUser 安装类型将应用程序安装到“WIX_DIR_COMMON_DOCUMENTS”并且不需要管理员权限。
  • perMachine 安装类型将应用程序安装到“ProgramFilesFolder”中并应请求 UAC 对话。

我的尝试是最初将 Package/@InstallScope 设置为 perUser,然后稍后修改 ALLUSERS 属性。

如果用户选择 perMachine 安装类型,我将尝试将 ALLUSERS 属性设置为 1,执行以下操作:

<Publish Property="ALLUSERS" Value="1">1</Publish>

“安装”按钮有一个 UAC 图标,但我按下它后没有出现 UAC 对话框!

enter image description here

相反,我收到一条错误消息,表明我显然没有为机器的所有用户安装该应用程序的权限。

没有 UAC 对话框出现或预期是错误吗?我错过了什么吗?

最佳答案

来自 WiX Mailing list 的人向我指出 Single Package Authoring article在 msdn 上。

我必须初始化以下属性:

<Property Id='ALLUSERS' Value='2' />
<Property Id='MSIINSTALLPERUSER' Value='1' />

并将“MSIINSTALLPERUSER”属性设置为空字符串以进行每台机器安装。

<Publish Property="MSIINSTALLPERUSER" Value="{}">1</Publish>

请注意,这仅适用于 Windows Installer 5 及更高版本!

关于WiX - 将 InstallScope 从 perUser 切换到 perMachine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28451919/

相关文章:

wix - 使用 Wix MSI 检测启动条件下的卸载

wix - 如何在Wix自定义对话框的文本框中要求一个值?

visual-studio-2010 - Visual Studio C++ Express 版的可再发行合并模块在哪里?

installation - 将外部文件复制到安装目录 WiX

wix - 使用 MSM 代替 MSI 有哪些限制/好处?

WIX 安装程序无法从以前安装的 Windows 安装程序 SW 升级

wix - 用wix更新

wix - 类型 34 和类型 50 自定义操作之间的区别?

windows-installer - 卸载的自定义操作类型 18 的序列位置应该是什么?

.net - 在 docker 容器上安装 msi