Crystal reports 如何在WiX中检查.NET Framework 4.0安装的Crystal Reports

Crystal reports 如何在WiX中检查.NET Framework 4.0安装的Crystal Reports,crystal-reports,wix,installation,report,Crystal Reports,Wix,Installation,Report,我正在创建一个WiX安装程序,需要检查是否安装了针对.NET Framework 4.0(13.0.3版)的Crystal Reports的特定版本 我发现了两种似乎都能工作的方法(在我的W7机器上),但不确定其中一种是否有任何缺点,比如在XP上工作等 选项1(我对该选项的担忧是,如果安装了具有不同产品代码的更高版本,则该条件将不会通过): 备选案文2: <Property Id="CRVSINSTALLED2"> <RegistrySearch Id="CRVSIns

我正在创建一个WiX安装程序,需要检查是否安装了针对.NET Framework 4.0(13.0.3版)的Crystal Reports的特定版本

我发现了两种似乎都能工作的方法(在我的W7机器上),但不确定其中一种是否有任何缺点,比如在XP上工作等

选项1(我对该选项的担忧是,如果安装了具有不同产品代码的更高版本,则该条件将不会通过):


备选案文2:

<Property Id="CRVSINSTALLED2">
  <RegistrySearch Id="CRVSInstalledSearch2" Root="HKLM" Key="Software\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Crystal Reports" Name="CRRuntime32Version" Type="raw" />
</Property>
<Condition Message="You don't have Crystal Reports for Visual Studio 2010 (v. 13.0.3)  installed 2.">
  <![CDATA[CRVSINSTALLED2 >= "13.0.3"]]>
</Condition>

= "13.0.3"]]>

我喜欢选项2,因为我个人不喜欢依赖HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall中的注册表项。第三个选项是。

谢谢Bryan,你对2和3之间的优缺点有什么见解吗?我更喜欢选项2,因为用户更有可能影响文件的安装位置,这可能会在确定哪个文件需要检查版本时引入一些复杂性。注册表项的位置更容易确定。如果您确实决定使用上面的注册表检查,请务必考虑水晶报表的64位版本可能正在播放。在同一个键下,您将找到
CRRuntime64Version
的字符串值。甚至本机VS2010引导程序也会检查注册表项。请参阅.NET Framework 4.0的
C:\Program Files(x86)\Microsoft SDK\Windows\v7.0A\Bootstrapper\Packages\Crystal Reports下
Product.xml
文件的内容
<Property Id="CRVSINSTALLED2">
  <RegistrySearch Id="CRVSInstalledSearch2" Root="HKLM" Key="Software\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Crystal Reports" Name="CRRuntime32Version" Type="raw" />
</Property>
<Condition Message="You don't have Crystal Reports for Visual Studio 2010 (v. 13.0.3)  installed 2.">
  <![CDATA[CRVSINSTALLED2 >= "13.0.3"]]>
</Condition>