根据How To: Create a Shortcut on the Start Menu向使用Wix创建的安装程序添加快捷方式时,需要添加如下注册表值:
<RegistryValue Root="HKCU" Key="Software\Microsoft\MyApplicationName" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
这个值真的应该在Software\Microsoft
里面吗?在微软世界的许多情况下,我看到供应商用作范围,所以我想知道它是不是真的应该Software\MyVendorName\MyApplicationName
。
答案 0 :(得分:1)
我肯定会按照别人的指示写到我自己的位置:
HKCU\Software\MyVendorName\MyApplicationName
HKLM\Software\MyVendorName\MyApplicationName
理想情况下,您的应用程序不应在注册表中的任何其他位置写入 - 除了这两个父位置之外。您“拥有”这两个注册表位置 - 而不是其他地方。你不应该在其他任何地方写 - 当然也不应该在Microsoft密钥下。我相信这是一个“通用样本”。
例外情况是您需要注册某些文件(或组件) - 例如 COM文件,其注册进入HKLM\SOFTWARE\Classes
和{{1} }。这些机器和每个用户的位置合并为HKCU\SOFTWARE\Classes
(HKCR
)。 COM注册也可以被隔离,在这种情况下,您使用清单文件 - 然后根本不涉及注册表。 WiX具有特殊的COM相关元素,它们将通过标准MSI机制为您填充注册表 - 用于收集COM注册的HKEY_CLASSES_ROOT
工具(以及其他内容)将为您自动生成这些元素,并且您编译的MSI将具有{ {3}}保留COM注册信息(heat.exe
,ProgId
,Class
等...)。
更新:不要过多地补充内容,但可以根据several MSI tables和ALLUSERS属性的值为每个用户或每台计算机安装MSI。如果已在MSI中填充了正确的COM表,则COM服务器将相应地按机器或每个用户进行注册。
如果您安装软件包,还有其他情况下安装过程会在注册表的其他位置进行更改。例如,当您安装驱动程序,插件,字体, COM + , COM Interop ,文件扩展名等等......在这些情况下,您的注册通常应该通过API来处理注册您的组件,在大多数情况下,您不应该自己在注册表中查找。很多此类注册由MSI处理,如果您正确执行 - 或者用于制作MSI文件的第三方工具中的内置构造。