这是我的剧本:
<DirectoryRef Id="TARGETDIR">
<!--for 64 bit platform-->
<?if $(sys.BUILDARCH)="x64"?>
<Component Id="RegistryEntries64" Guid="EFC1C5ED-0BC8-4B52-943A-BFF5F3136B4F" Win64="yes">
<RegistryKey Root="HKLM" Key="SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers">
<RegistryValue Type="string" Name="$(var.ProductNameForRegistyEntry)" Value="Installed" KeyPath="yes"/>
</RegistryKey>
<RegistryKey Root="HKLM" Key="SOFTWARE\ODBC\ODBCINST.INI\$(var.ProductNameForRegistyEntry)">
<-------/>
</RegistryKey>
<RemoveFolder Id="RegistryEntries64" On="uninstall"/>
</Component>
<?else?>
<!--for 32 bit platform-->
<Component Id="RegistryEntries86" Guid="E37BE3EF-1979-4C56-A768-2D6B6AB99870" Win64="no">
<RegistryKey Root="HKLM" Key="SOFTWARE\WOW6432Node\ODBC\ODBCINST.INI\ODBC Drivers">
<RegistryValue Type="string" Name="$(var.ProductNameForRegistyEntry)" Value="Installed"/>
</RegistryKey>
<RegistryKey Root="HKLM" Key="SOFTWARE\WOW6432Node\ODBC\ODBCINST.INI\$(var.ProductNameForRegistyEntry)">
<----->
</RegistryKey>
<RemoveFolder Id="RegistryEntries86" On="uninstall"/>
</Component>
<?endif?>
</DirectoryRef>
使用此脚本创建的32位安装程序(在Visual Studio 2015中为x86平台选择)可以在64位操作系统的计算机上正常工作,在WOW6432Node内部创建了注册表项,基本上这是要在64位计算机上安装的32位安装程序,因此用户可以在64位计算机上安装64位和32位安装程序,但在32位操作系统上,注册表项应位于SOFTWARE \ ODBC \ ODBCINST.INI \ ODBC Drivers中。在32位计算机上,Get-OdbcDriver命令不会返回列表中的驱动程序。Wix本身不建议平台变量sys.BUILDARCH获取目标平台类型。我是否需要为32位操作系统的计算机编写单独的脚本,并在其中给注册表项SOFTWARE \ ODBC \ ODBCINST.INI \ ODBC Drivers?还是有其他解决方案?我在互联网上看了太多stackoverflow帖子和其他帖子,但找不到与此相关的内容。在此先感谢
<?if $(var.Installer_x86_x86)="no"?>
<RegistryKey Root="HKLM" Key="SOFTWARE\WOW6432Node\ODBC\ODBCINST.INI\ODBC Drivers">
<RegistryValue Type="string" Name="$(var.ProductNameForRegistyEntry)" Value="Installed"/>
</RegistryKey>
<RegistryKey Root="HKLM" Key="SOFTWARE\WOW6432Node\ODBC\ODBCINST.INI\$(var.ProductNameForRegistyEntry)">
<RegistryValue Type="string" Name="Description" Value="TIBCO ComputeDB ODBC Driver" />
</RegistryKey>
<?else?>
<RegistryKey Root="HKLM" Key="SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers">
<RegistryValue Type="string" Name="$(var.ProductNameForRegistyEntry)" Value="Installed"/>
</RegistryKey>
<RegistryKey Root="HKLM" Key="SOFTWARE\ODBC\ODBCINST.INI\$(var.ProductNameForRegistyEntry)">
<RegistryValue Type="string" Name="Description" Value="TIBCO ComputeDB ODBC Driver" />
</RegistryKey>
<?endif?>