2012-07-11 94 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