2011-01-18 12 views
8

Arka plan: Varolan bir IIS web sitesinde sanal dizinin oluşturulduğu bir Wix yükleyicim var. Sanal dizin oluşturuldu (yüklemeden önce mevcut değil) ancak IIS web sitesi zaten oluşturulmalıdır (kullanıcı yalnızca bir ListBox'a yüklemek için bir web sitesi seçer).IIS web sitesi fiziksel yolu wix kaldırılırken boş bırakılıyor

Sorun: Yüklemede, yüklenen IIS web sitesinin Fiziksel Yolu boş kalıyor, bu öznitelik için değer yok. Aşağıda ana wix dosyamın aşağı bir sürümü var. Yüklemenin neden IIS web sitesini etkilediğinden emin değilim, ancak herhangi bir düşünce takdir ediliyor.

Notlar: Ben Wix 3.5 çıkıyorum ve Windows Server 2008 R2, 7.

<Product> 

    <Property Id='WEBSITE_DESCRIPTION'> 
     <RegistrySearch Id='RememberPropertyWEBSITE_DESCRIPTION' Root='HKCU' 
     Key='SOFTWARE\Company\Product' Name='InstalledWebsiteDescription' 
     Type='raw' /> 
    </Property> 

    <Property Id='WEBSITE_PORT'> 
     <RegistrySearch Id='RememberPropertyWEBSITE_PORT' Root='HKCU' 
     Key='SOFTWARE\Company\Product' Name='InstalledWebsitePort' 
     Type='raw' /> 
    </Property> 


    <Component Id='PropertiesToSave' Directory='ApplicationFolder'> 
     <RegistryValue Root='HKCU' Key='SOFTWARE\Company\Product' 
     Name='InstalledWebsiteDescription' Value='[WEBSITE_DESCRIPTION]' 
     Type='string' /> 
     <RegistryValue Root='HKCU' Key='SOFTWARE\Company\Product' 
     Name='InstalledWebsitePort' Value='[WEBSITE_PORT]' 
     Type='string' /> 

     <RemoveFolder Id='CleanupApplicationFolder' On='uninstall' /> 
    </Component> 


    <Directory Id='TARGETDIR' Name='SourceDir'> 
     <Component Id='TestWebVirtualDirComponent' Guid='12345678-6304-410E-A808-E3585379EADB'> 
     <CreateFolder /> 
     <iis:WebVirtualDir Id='TestWebVirtualDir' Alias='[WEBSITE_VIRTUALDIR]' Directory='TARGETDIR' WebSite='MyWebsite'> 
      <iis:WebApplication Id='TestWebApplication' Name='Test' /> 
     </iis:WebVirtualDir> 
     </Component> 
    </Directory> 

    <iis:WebSite Id="MyWebsite" Description="[WEBSITE_DESCRIPTION]" SiteId="*"> 
     <iis:WebAddress Id="AllUnassigned" Port="[WEBSITE_PORT]" /> 
    </iis:WebSite> 

    <Feature> 
     <ComponentRef Id='TestWebVirtualDirComponent'/> 
     <ComponentRef Id='PropertiesToSave'/> 
    </Feature> 
</Product> 
+0

ben kullandım Wix (3.0 benim durumumda) ve bir kaç sürpriz ve pürüzleri bulundu. Bazı durumlarda, beklendiği gibi çalışmasını sağlamak için özel eylemlere başvurmak zorunda kaldım. – Cheeso

cevap

5

WiX IIsExtension Açıklama özniteliği ve çocuk WebAddress elemanın Liman özniteliği tarafından WebSite tanır IIS. Dolayısıyla, uygulamanızı yüklediğinizde, WEBSITE_DESCRIPTION ve WEBSITE_PORT'u bir şekilde ayarlarsınız. Ancak, kaldırma işlemini çalıştırdığınızda, belirtilen özellikler ayarlanmaz ve anlattığınız davranışı alırsınız. Bu çözüm, gerekli özellik değerlerini sistem kayıt defterine kaydetmek ve değerleri okumak ve uygun özellikleri ayarlamak için RegistrySearch öğesini kullanmaktır. Buna "Mülk Hatırlat" deseni denir ve Rob Mensching here tarafından mükemmel bir şekilde açıklanır.

+0

Merhaba Yan. Aslında bunu yapıyorum, yaptığım şeyi göstermek için yukarıdaki kod örneğini değiştirdim. Bir "Onarım" beklendiği gibi çalışıyor, bazı "kaldırımda" yapmak zorunda mıyım? –

+1

Örneğinize göre, kaldırımda sanal dizinin silinmesini beklersiniz. Doğruysa, WEBSITE_VIRTUALDIR özelliğini de "hatırlamanız" gerekir. Bunun dışında şüpheli görünmüyor ve çalışmalı. Kaldırma sırasında belirli bir hatayla karşılaşıyor musunuz? Ya da basitçe orada sanal dir bırakır? –

+0

Merhaba Yan, evet, sorun buydu. Sanal dizinin kaydedilmesi, evrendeki her şeyi doğru bir şekilde yaptı. –

0

Ayrıca kayıt defterine [VIRTUALDIR] ve [STSWEBALIAS] özelliklerini
yanı sıra [WEBSITE_DESCRIPTION] ve [WEBSITE_PORT] kaydetmek zorunda.
İşte benim ve takım için çalıştı komple bir çözümdür: çok bir IIS ile ilgili kurulum için

<Property Id='WEBSITE_DESCRIPTION' Value='Default Web Site'> 
    <RegistrySearch Id='RememberPropertyWEBSITE_DESCRIPTION' Root='HKLM' 
    Key='SOFTWARE\Company\Product' Name='InstalledWebsiteDescription' 
    Type='raw' /> 
</Property> 

<Property Id='WEBSITE_PORT' Value='90'> 
    <RegistrySearch Id='RememberPropertyWEBSITE_PORT' Root='HKLM' 
    Key='SOFTWARE\Company\Product' Name='InstalledWebsitePort' 
    Type='raw' /> 
</Property> 

<Property Id='VIRTUALDIR'> 
    <RegistrySearch Id='RememberPropertyWEBSITE_VIRT' Root='HKLM' 
    Key='SOFTWARE\Company\Product' Name='InstalledWebsiteVirtDir' 
    Type='raw' /> 
</Property> 

<Property Id='STSWEBALIAS'> 
    <RegistrySearch Id='RememberPropertyWEBSITE_STS' Root='HKLM' 
    Key='SOFTWARE\Company\Product' Name='InstalledWebsiteSts' 
    Type='raw' /> 
</Property> 


<DirectoryRef Id="TARGETDIR"> 
    <Component Id='PropertiesToSave' Guid='{384F2559-E7CF-40D2-A2D3-347DBFD15711}'> 
    <RegistryValue Root='HKLM' Key='SOFTWARE\Company\Product' 
     Name='InstalledWebsiteDescription' Value='[WEBSITE_DESCRIPTION]' 
     Type='string' /> 
    <RegistryValue Root='HKLM' Key='SOFTWARE\Company\Product' 
     Name='InstalledWebsitePort' Value='[WEBSITE_PORT]' 
     Type='string' /> 
    <RegistryValue Root='HKLM' Key='SOFTWARE\Company\Product' 
     Name='InstalledWebsiteVirtDir' Value='[VIRTUALDIR]' 
     Type='string' /> 
    <RegistryValue Root='HKLM' Key='SOFTWARE\Company\Product' 
     Name='InstalledWebsiteSts' Value='[STSWEBALIAS]' 
     Type='string' /> 
    </Component> 
</DirectoryRef> 

<Feature Id="Saves"> 
    <ComponentRef Id='PropertiesToSave'/> 
</Feature> 
İlgili konular