Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wix 注册表中已安装的条目是否应位于Microsoft文件夹中?_Wix_Windows Installer - Fatal编程技术网

Wix 注册表中已安装的条目是否应位于Microsoft文件夹中?

Wix 注册表中已安装的条目是否应位于Microsoft文件夹中?,wix,windows-installer,Wix,Windows Installer,根据,向使用Wix创建的安装程序添加快捷方式时,需要添加注册表值,如下所示: <RegistryValue Root="HKCU" Key="Software\Microsoft\MyApplicationName" Name="installed" Type="integer" Value="1" KeyPath="yes"/> 该值真的应该在软件\Microsoft中吗?在Microsoft world的许多情况下,我看到供应商被用作范围,因此我想知道它是否真的应该是Sof

根据,向使用Wix创建的安装程序添加快捷方式时,需要添加注册表值,如下所示:

<RegistryValue Root="HKCU" Key="Software\Microsoft\MyApplicationName" Name="installed" Type="integer" Value="1" KeyPath="yes"/>


该值真的应该在
软件\Microsoft
中吗?在Microsoft world的许多情况下,我看到供应商被用作范围,因此我想知道它是否真的应该是
Software\MyVendorName\MyApplicationName

我肯定会按照其他人的指示写信到我自己的位置:

  • HKCU\Software\MyVendorName\MyApplicationName
  • HKLM\Software\MyVendorName\MyApplicationName
理想情况下,您的应用程序不应该在注册表中的任何其他位置写入数据-除了这两个父位置下方。您“拥有”这两个注册表位置,而不是其他任何位置。你不应该在其他地方写东西,当然也不应该在微软的密钥下写。我认为这是一个“通用样本”

例外情况是,当您需要注册某些文件(或组件)时,例如COM文件,其注册进入
HKLM\SOFTWARE\Classes
HKCU\SOFTWARE\Classes
。这些每台机器和每用户位置被合并以生成
HKCR
HKEY\u CLASSES\u ROOT
)。COM注册也可以被隔离,在这种情况下,您可以使用清单文件,这样就根本不涉及注册表。WiX具有特殊的COM相关元素,这些元素将通过标准MSI机制为您填充注册表-用于获取COM注册的
heat.exe
工具将自动为您生成这些元素,并且您编译的MSI将保留COM注册信息(
ProgId
Class
TypeLib
等)

更新:不要太复杂,但可以根据和属性的值为每台用户或每台计算机安装MSI。如果您已在MSI中填充了正确的COM表,则会相应地为每台计算机或每台用户注册COM服务器


还有一些情况下,如果您安装软件包,安装过程会在注册表中的其他位置进行更改。例如,当您安装驱动程序插件字体COM+COM互操作文件扩展名,等等……您在ese案例通常应通过负责注册组件的API进行,在大多数情况下,您不应亲自查看注册表。如果您操作正确,许多此类注册都由MSI处理,或者是用于制作MSI文件的第三方工具中的内置结构。

这可能是WiX早期的遗留问题是一个Microsoft项目。有关WiX的另一个优秀教程,请参阅。他们正在按您的方式放置密钥(
Software\MyVendorName\MyApplicationName
)你好,pupeno。我添加了一些对你来说可能很重要的细节。MSI的细节非常复杂,但我认为这个问题不会影响你(COM注册)。对于使事情复杂化(可能是不必要的),我深表歉意,但我添加了更多细节,以使答案更普遍地适用于其他人。谢谢。我怀疑它是否会被接受,因为Wix3不再处于积极开发中,但我发送了一个请求,以修改Wix关于此问题的文档: