wix - Wix 工具集 HKMU 与 HKCR,HKMU 写入 HKCR,HKCR 不可见但有效
问题描述
我在 Wix 工具集中进行文件关联,非常简单,例如:
<RegistryValue Root="HKMU"
Key="SOFTWARE\Classes\.myfile" Value="myfile" Type="string"/>
<RegistryValue Root="HKMU"
Key="SOFTWARE\Classes\myfile" Value="MyFileTypeInWindowsExplorer" Type="string"/>
我很困惑 - 使用 HKMU 和 HKCR 它可以工作,但阅读有限的文档,例如http://akashche.github.io/wixgen/wixgen-jaxb/apidocs/com/redhat/akashche/wixgen/jaxb/RegistryRootType。 html我的逻辑告诉我使用 HKCR 而不是 HKMU 但是我看到其他人使用 HKMU,是的,它写入 CLASSES_ROOT 我找到我的关联。我只是不明白为什么 HKMU 在应该写入 CURRENT_USER 时写入 CLASSES_ROOT - 除非我的安装仅适用于当前用户。因此,使用 HKCR - 用于 CLASSES_ROOT - 它应该写入,但我看不到它,但是它有效,这意味着它在那里,但对我不可见?
所以,我以某种方式得到了这个,但我还在摸不着头脑。文档是有限的。
谁能解释一下 Wix 工具集中 RegistryRootType 的选项?
谢谢桑尼奇
解决方案
读取注册表时,HKCR 是正在查看注册表的进程所有者配置文件的 HKLM\SOFTWARE\Classes 和 HKCU\SOFTWARE\Classes 的合并视图。在 Windows Installer 中,如果您使用 COM 表(ClassId、ProgId、AppId、TypeLib)或注册表 HCKR,它将考虑安装范围(每台机器与每用户)并写入适当的位置。
对于 HKCU\SOFTWARE 与 HKLM\SOFTWARE 没有合并,HKMU 用于指定您要写入的内容。
注意:大多数 MSI 是为 Per-Machine 编写的。每用户和单包每用户/每机器安装是一个非常高级的主题,用例有限,所以你可能想多了。您也可能需要此功能。
推荐阅读
- sql - 有没有办法通过 WHERE 子句中的 DECLARE 指向表中的特定列?
- jquery-select2 - 如何在select2中设置键盘悬停
- mongodb - MongoDB加法和减法在聚合上不能同时工作
- javascript - 在 javascript 中添加日期和时间以获取 ISOFormat
- angular - 基于 HTTP 调用的 Angular 动态组件
- excel - VBA项目需要帮助调试一行
- ios - 在静态上下文中引用“自我”
- c - 在 Centos7 上安装 HAWQ 时编译错误:
- html - Flexbox children not having same height
- css - 如何使用 scss 为元素声明两个类