WiX - 将 InstallScope 从 perUser 切换到 perMachine

Posted

技术标签:

【中文标题】WiX - 将 InstallScope 从 perUser 切换到 perMachine【英文标题】:WiX - Switch InstallScope from perUser to perMachine 【发布时间】:2015-02-11 10:25:38 【问题描述】:

我正在尝试创建一个安装程序,该安装程序支持 perUser 和 perMachine 安装,具体取决于 UI 上的安装类型选择。

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

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

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

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

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

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

没有 UAC 对话框出现或不打算出现是否是一个错误?我错过了什么吗?

【问题讨论】:

【参考方案1】:

WiX Mailing list 的某个人将我指向 msdn 上的 Single Package Authoring article。

我必须初始化以下属性:

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

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

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

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

【讨论】:

以上是关于WiX - 将 InstallScope 从 perUser 切换到 perMachine的主要内容,如果未能解决你的问题,请参考以下文章

Wix 安装程序中的文件夹(在安装期间创建)对所有用户不可见

WiX - 将参数从 MSI 传递到 Xeam 引导程序应用程序

Wix:我无法将参数从CAQuietExec传递到cmd.exe批处理

如何使用 WiX 从源代码重建完全相同的 msi 文件?

将前端库导入 wix 网站

WIX 安装程序,在卸载时,从临时目录中删除文件