2009-05-12 17 views
5

Crystal Visual Studio 2008 benim kendi kurulum paketi için şart yüklenir için Basic Reports olmadığını kontrol etmek istiyorum. (: \ Program Files \ Microsoft SDK'leri \ Windows \ v6.0A \ Bootstrapper \ Paketler \ CrystalReports10_5 \ product.xml C):WiX 3.0'da yüklü paket nasıl kontrol edilir?

<InstallChecks> 
    <MsiProductCheck Property="CRVSInstalled" Product="{AA467959-A1D6-4F45-90CD-11DC57733F32}"/> 
    <MsiProductCheck Property="CRVSRunTimex86Installed" Product="{CE26F10F-C80F-4377-908B-1B7882AE2CE3}"/> 
    <MsiProductCheck Property="CRVSRunTimex64Installed" Product="{2BFA9B05-7418-4EDE-A6FC-620427BAAAA3}. "/> 
</InstallChecks> 

çalışılıyor

ben bu ürün için bootstrapper açıklamasında buldum

<Property Id="CRVSINSTALLED"> 
    <ComponentSearch Id="CRVSInstalledSearch" Guid="{AA467959-A1D6-4F45-90CD-11DC57733F32}" /> 
</Property> 
<Property Id="CRVSRUNTIMEX86INSTALLED"> 
    <ComponentSearch Id="CRVSRunTimex86InstalledSearch" Guid="{CE26F10F-C80F-4377-908B-1B7882AE2CE3}" /> 
</Property> 
<Property Id="CRVSRUNTIMEX64INSTALLED"> 
    <ComponentSearch Id="CRVSRunTimex64InstalledSearch" Guid="{2BFA9B05-7418-4EDE-A6FC-620427BAAAA3}" /> 
</Property> 
<Condition Message="!(loc.CrystalReportsRequired)">Installed OR CRVSINSTALLED OR CRVSRUNTIMEX86INSTALLED OR CRVSRUNTIMEX64INSTALLED</Condition> 

Ama ComponentSearch ziyade paketin kendisi aramak yerine, kendi kimlikleri paket bileşenlerinin (dosyalar, dizinler) aradığı görünüyor: WiX bu davranışı taklit, aşağıdaki yaptım.

Yani bu nasıl yapabilirim?

cevap

1

windows yükleyici API bunu msi.dll yılında MsiQueryProductState işlevine sahiptir. Maalesef bunu yükleyicinizde kullanmak için özel bir eylem yazmanız gerekecek. C:\Program Files\Windows Installer XML v3\SDK'daki montajlar bunu daha kolay hale getirebilir.

+0

İlginç, ama ben özel eylemler dalmak için zaman gerekir sanmıyorum. Şimdilik. Özel eylemler kaçınarak ama dikkat için – Mac

3

olarak here önerdi:

HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\{productcode} altında bir kayıt defteri arama deneyin. Hem ürününüz hem de bağımlılığınız kullanıcı başına ürünlerse, HKCU'un altındaki bir aramayı da düşünün.

Bu böyle gider:

<Property Id="CRVSINSTALLED"> 
    <RegistrySearch Id="CRVSInstalledSearch" Root="HKLM" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\{AA467959-A1D6-4F45-90CD-11DC57733F32}" Name="InstallDate" Type="raw" /> 
</Property> 
<Property Id="CRVSRUNTIMEINSTALLED"> 
    <RegistrySearch Id="CRVSRunTimeInstalledSearch" Root="HKLM" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\{CE26F10F-C80F-4377-908B-1B7882AE2CE3}" Name="InstallDate" Type="raw" /> 
</Property> 
<Property Id="CRVSRUNTIMEINSTALLED"> 
    <RegistrySearch Id="CRVSRunTimeInstalledSearch" Root="HKLM" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\{2BFA9B05-7418-4EDE-A6FC-620427BAAAA3}" Name="InstallDate" Type="raw" /> 
</Property> 
+1

1: AFAIK bu belgesiz ve bu nedenle prensip desteklenmeyen içindedir. Raymond Chen'in şu mesajı akla geliyor: http://blogs.msdn.com/oldnewthing/archive/2003/11/03/55532.aspx –

+0

Bunu işaretlediğiniz için teşekkürler. – Mac

+0

Özel eylemler yapılmadan% 100 destekli bir çözüm önerilmiştir: http://article.gmane.org/gmane.comp.windows.devel.wix.user/38263 Ancak şu anda test etmek için zamanım yok. ve nasıl yükseltileceğini henüz bilmediğim CR için yükseltme GUID'sine ihtiyacım vardı. – Mac

2

Sen (yukarıda özniteliği Id belirtilen) Kodu Yükseltme bulmak için Upgrade table

<Upgrade Id="36E76465-5548-390F-955A-2776582C6A6C"> 
    <UpgradeVersion OnlyDetect="yes" Property="TFSCLIENT" Minimum="11.0.50727" /> 
</Upgrade> 
<Condition Message="ERROR: Team Explorer for Microsoft Visual Studio 2012 is not installed"> 
    Installed OR TFSCLIENT 
</Condition> 

Şimdi zor biraz kullanabilirsiniz. Bir MSI paketiniz varsa, sadece Orca'ya bakın. Bunu yapmazsanız - this solution deneyin.

İlgili konular