2009-11-06 11 views
13

Bu ,'u kolaylaştırmalı, ancak birkaç saat sonra boş görünüyorum. ; Ben önce bulunmuştur yükleme konumuna benim yeni dosyalar yüklemek sonra önceki iki yüklemelerin ya denetlemek ve gerektiğinden (Bir koşula bağlı olarak WiX'te bir özellik ayarlama

Ben, bir kayıt defteri arama (aslında iki) yapmak

    . bu önceki yüklemelerin
  • Sadece bir aslında var olacaktır.

sonra bulunmuştur ki 'PROD #' arasında 'installLocation' benim yeni dosyalar yüklemeniz gerekir.

<!— Look for the UnInstall key of the 1st possible product --> 
<!— GUID = {E928E024-DEFE-41A7-8469-D338212C4943}   --> 
<Property Id='PROD1'> 
    <RegistrySearch Id='PROD_REG1' 
        Type='raw' 
        Root='HKLM' 
        Key='$(var.REGKEY_PROD1)' 
        Name='InstallLocation' /> 
</Property> 

<!— Look for the UnInstall key of the 2nd possible product --> 
<!— GUID = {A40A9018-DB9D-4588-A591-F012600C6300}   --> 
<Property Id='PROD2'> 
    <RegistrySearch Id='PROD_REG2' 
        Type='raw' 
        Root='HKLM' 
        Key='$(var.REGKEY_PROD2)' 
        Name='InstallLocation' /> 
    </Property> 

<!-- How do I set INSTALL_HERE Property to whichever ‘InstallLocation’ was found? --> 

<!-- Define the directory structure --> 
<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="INSTALL_HERE"> 
     <Directory Id="MAIN_DIRECTORY" Name="MyProduct"/> 
     <Directory Id="HELP_DIRECTORY" Name="Help"/> 
    </Directory> 
</Directory> 
+0

Eğer bulunursa hangisi birinin üstüne kuracak 2 farklı ürünler için 1 yükleyici oluşturmaya çalışıyorsanız Ayrıca bkz? –

cevap

22

Aşağıdakiler A ve B özelliklerini iki farklı kayıt defteri aramasının sonucuna göre ayarlar. bir zamanlar Value="[B]" olarak A'nın değeri geçersiz kılmak için, ve: B için arama başarılı olsaydı, SetProperty eleman B'nin değerini nasıl kullandığı

<Property Id="A"> 
    <!-- registry search 1 here --> 
    </Property> 

    <Property Id="B"> 
    <!-- registry search 2 here --> 
    </Property> 

    <SetProperty Id="A" After="AppSearch" Value="[B]"> 
    B 
    </SetProperty> 

Not iki kez B. değeriyle A'nın değeri geçersiz kılar Özel eylemin koşul metni olarak. After="AppSearch", özel eylemin kayıt defteri aramalarından hemen sonra yürütülmesini sağlar.

Yani this answer of Rob Mensching

+0

Çok teşekkürler! 1> Agent_9191: Evet, temelde yapmam gereken şey bu. Uygulamam, bir ürüne eklenti yapmakta ve 'ana' ürünün kurulu olduğu (ve eğer yüklü ise) bildiğim tek yolu, 'ana' ürüne bakarak, Kayıt defterindeki Bilgiyi kaldır. Sorunum, 'ana' ürün her güncellendiğinde, önceki Kaldırma bilgilerinin kaybolduğu ve en son güncellemeyle ilgili bilgilerin yer aldığı gerçeğinden kaynaklanmaktadır. Ve eğer tekrar güncellerlerse, 3. Kayıt Arama'ya ihtiyacım var! 2> wcoenen: Dediğim gibi: Bu kolay olmalı ", ama ben bunu anlamıyordum. *** Yardımlarınız için teşekkürler! *** – Zerren

İlgili konular