Windows XP上msi安装程序的问题

时间:2011-11-23 02:25:09

标签: installer windows-xp registry conditional-statements launch

我对最近在为Windows XP 64位平台制作MSI安装程序时遇到的问题一无所知。

在我尝试从注册表中读取的安装程序的启动条件中,但安装程序未获取正确的值。我尝试检查不同的Value名称,以确认它不仅仅是一个特定的Value名称,并且发现它的行为方式相同。

我尝试在错误消息中打印获取的注册表值数据,并意识到在某些情况下它根本没有任何值,而在其他情况下,它无法获得任何数字作为完整值数据的一部分。< / p>

例如,如果尝试读取数据:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework
  • 值名称:InstallRoot
  • 价值数据:C:\Windows\Microsoft.NET\Framework64\

安装程序提取的数据为:C:\Windows\Microsoft.NET\Framework\。在其他一些实例中,它会得到一个空字符串。

1 个答案:

答案 0 :(得分:2)

注册表搜索默认使用32位注册表配置单元,仅在设置msidbLocatorType64bit flag时才使用64位配置单元。

因此解决方案是使用具有相同属性的2次搜索:

  • 一个用于32位配置单元
  • 一个用于64位配置单元(带有msidbLocatorType64bit标志)

请注意,Visual Studio安装项目不支持此功能。其他设置创作工具可以。