2012-07-11 57 views
2

我创建一个WiX的安装程序检查水晶报表的.NET Framework 4.0的安装,需要检查是否安装了Crystal Reports for .NET的框架4.0(第13.0.3)的特定版本。如何在维克斯

我发现两种方法都似乎工作(我的W7的机器上),但我不知道,如果一个或其他有什么挫折,如在XP等

选项1(我关切地工作这个选项是,如果一个更新的版本中安装了不同的产品代码,这种情况将不会通过):

<Property Id="CRVSINSTALLED"> 
    <RegistrySearch Id="CRVSInstalledSearch" Root="HKLM" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\{AAD476D7-FC64-40BC-85EA-0C1FD98D8375}" Name="InstallDate" Type="raw" /> 
</Property> 
<Condition Message="You don't have Crystal Reports for Visual Studio 2010 (v. 13.0.3) installed."> 
    <![CDATA[CRVSINSTALLED]]> 
</Condition> 

选项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> 
+1

如果你决定使用上述注册表检查时,一定要考虑到的Crystal Reports 64位版本可能会在发挥作用。在相同的密钥下,您将找到'CRRuntime64Version'的字符串值。 这样看来,即使是本土VS2010引导程序检查注册表键。请参阅'Product.xml'文件的内容在'C:\ Program Files文件(x86)的\微软的SDK \的Windows \ v7.0A \引导程序\软件包\水晶报表的.net框架4.0' – Jaans 2012-10-24 10:19:41

回答

3

我喜欢选项2,因为我个人不立ke取决于注册表项HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Uninstall。第三个选项是check the version number of a file during installation

+0

感谢布莱恩,你对2和3之间的利弊有什么看法? – patrickbadley 2012-07-13 19:13:18

+0

我赞成选项2,因为用户更可能能够影响其中的文件被安装,并且可以在确定哪些文件需要它的版本检查引入一些复杂性。注册表项的位置更容易确定。 – BryanJ 2012-07-13 19:20:16