(WiX) 将产品信息写入注册表以用于双重用途安装程序
Posted
技术标签:
【中文标题】(WiX) 将产品信息写入注册表以用于双重用途安装程序【英文标题】:(WiX) Write product info to registry for dual purpose installer 【发布时间】:2015-03-11 15:13:10 【问题描述】:我正在根据this article 在 WiX 中制作一个两用包。
所以我按照文章初始化了ALLUSERS和MSIINSTALLPERUSER:
<Property Id='ALLUSERS' Value='2' />
<Property Id='MSIINSTALLPERUSER' Value='1' />
如果用户选择了 per-user 选项,我会在我的对话框中设置 MSIINSTALLPERUSER="1"。对于每台机器,我设置了 MSIINSTALLPERUSER=""。
到目前为止一切顺利。问题是我的产品信息一直被写入 HKEY_CURRENT_USER。除非我用空字符串初始化 MSIINSTALLPERUSER。但即使是按用户安装,我也需要管理员权限
如果用户选择了单机安装,如何将产品信息写入 HKEY_LOCAL_MACHINE?
编辑:清理问题。
【问题讨论】:
ALLUSER 是否设置为 2? @PeterRitchie 是的。我使用 ALLUSERS="2" 和 MSIINSTALLPERUSER="1" 初始化安装程序(如 Microsoft 文章中所述) 假设“产品信息”是指程序/功能的东西,那么看起来您仍处于按用户模式,我建议您获取完整的详细日志以查看发生了什么. 【参考方案1】:当我从命令行设置 MSIINSTALLPERUSER="" 时,我发现安装程序使用 HKLM。因此,我比较了使用 MSIINSTALLPERUSER="" 和 MSIINSTALLPERUSER="1" 初始化的安装程序的详细日志,发现如果 MSIINSTALLPERUSER 为空,它会设置 ALLUSERS="1"。
所以我只是在对话框中为 per-machine 选项添加了以下行:
<Publish Property="ALLUSERS" Value="1">1</Publish>
我预计如果 ALLUSERS 为 2,它将检查 MSIINSTALLPERUSER 属性以确定注册表位置,但这显然是错误的。不幸的是,文章中没有提到您必须将 ALLUSERS 也设置为 1,并且仅 MSIINSTALLPERUSER 是不够的。
【讨论】:
以上是关于(WiX) 将产品信息写入注册表以用于双重用途安装程序的主要内容,如果未能解决你的问题,请参考以下文章