Wix v3.7 - 写入注册表值时出错
Posted
技术标签:
【中文标题】Wix v3.7 - 写入注册表值时出错【英文标题】:Wix v3.7 - Error Writing Registry Values 【发布时间】:2013-08-26 06:07:40 【问题描述】:我正在使用 wix 创建安装程序,但在写入注册表时遇到问题。这是我的 RegistryValue 元素:
<Component Id="CMP_odbcreg" Guid="115B002E-F4C9-48CD-8E1C-E8803B16AE69">
<RegistryValue Id="rg_psql"
Root="HKLM"
Key="SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers"
Name="PostgreSQL"
Value="Installed"
Type="string"
KeyPath="yes"
Action="write"/>
</Component>
没有任何东西被写入注册表。该组件在我的主要安装功能中,因此它应该始终写入注册表。我查看了我的日志文件,发现:
MSI (s) (60:1C) [00:00:07:080]: Doing action: WriteRegistryValues
MSI (s) (60:1C) [00:00:07:080]: Note: 1: 2205 2: 3: ActionText
Action 0:00:07: WriteRegistryValues. Writing system registry values
Action start 0:00:07: WriteRegistryValues.
WriteRegistryValues: Key: Writing system registry values, Name: , Value:
Action ended 0:00:07: WriteRegistryValues. Return value 1.
我不知道我的解释是否正确,但似乎根本没有将任何内容写入注册表。除了 CMP_odbcreg 之外,我还有几个使用 heat 生成的其他组件,这些组件包含应该执行的 RegistryValue 元素。我检查了我的 Windows 注册表并确认没有写入任何值。
我有一个 wix 手册,其中包含写入注册表的示例。我尝试将其复制并粘贴到我的安装程序中,并将其添加到主要安装功能中。那也没用
请帮忙!
【问题讨论】:
【参考方案1】:原来我查看的是错误的注册表。 Windows 7 机器有一个 32 位和一个 64 位的注册表,所以我应该查看 Windows\SysWOW64 中的 regedit.exe。
【讨论】:
【参考方案2】:由于现在 64 位系统被广泛传播,我推荐在Registry Redirection 上的一个小讲座,我相信你会发现这些信息对未来很有用。这适用于任何访问注册表的应用程序,而不仅仅是安装程序。
在您的情况下,如果您需要禁用安装程序的重定向,您可以查看this SO thread。
【讨论】:
以上是关于Wix v3.7 - 写入注册表值时出错的主要内容,如果未能解决你的问题,请参考以下文章