2011-01-18 10 views
8

Tło: Mam instalator Wix, w którym katalog wirtualny zostanie utworzony w istniejącej witrynie IIS. Katalog wirtualny jest tworzony (nie istnieje przed instalacją), ale witryna IIS powinna już zostać utworzona (użytkownik wybiera właśnie stronę internetową do zainstalowania w ListBoxie).Fizyczna ścieżka witryny IIS staje się pusta na deinstalacji wix

Problem: Po odinstalowaniu fizyczna ścieżka zainstalowanej witryny IIS staje się pusta, brak wartości dla tego atrybutu. Poniżej znajduje się obniżona wersja mojego głównego pliku wix. Nie jestem pewien, dlaczego odinstalowanie wpływa na stronę IIS, ale wszelkie myśli są doceniane.

Uwagi: Jestem na Wix 3.5 i Windows Server 2008 R2, IIS 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

używałem WIX (3,0 w moim przypadku) dla instalacji związanych z IIS-też i znalazłem kilka niespodzianek i trzasków. W niektórych przypadkach musiałem uciekać się do niestandardowych działań, aby uruchomić go zgodnie z oczekiwaniami. – Cheeso

Odpowiedz

5

WiX IIsExtension uznaje WebSite przez atrybut Opis i atrybutu Port dziecięcej WebAddress elementu. Tak więc po zainstalowaniu aplikacji ustawiasz WEBSITE_DESCRIPTION i WEBSITE_PORT w jakiś sposób. Jednak po uruchomieniu dezinstalacji wspomniane właściwości nie są ustawione i pojawia się opisane zachowanie.

Rozwiązaniem tego problemu jest zapisanie wymaganych wartości właściwości w rejestrze systemowym i użycie elementu RegistrySearch do odczytania wartości i ustawienia odpowiednich właściwości. Jest to nazywane wzorcem "Remember Property" i jest doskonale wyjaśnione przez Rob Mensching here.

+0

Cześć Yan. Tak naprawdę to robię, zmodyfikowałem powyższy przykład kodu, aby pokazać, co robię. "Naprawa" działa zgodnie z oczekiwaniami, czy jest coś, co muszę zrobić "po odinstalowaniu"? –

+1

Według twojego przykładu przypuszczam, że spodziewałbyś się usunąć katalog wirtualny podczas deinstalacji. Jeśli jest to prawdą, powinieneś również "zapamiętać" właściwość WEBSITE_VIRTUALDIR. Poza tym nie wygląda podejrzanie i powinno działać. Czy napotykasz jakiś konkretny błąd podczas deinstalacji? Czy po prostu zostawia tam wirtualny reżim? –

+0

Cześć Yan, tak, to był problem. Zapisanie katalogu wirtualnego prawidłowo uczyniło wszystko we wszechświecie. –

0

trzeba rejestrować w rejestrze także [VIRTUALDIR] i [STSWEBALIAS] właściwości
jak [WEBSITE_DESCRIPTION] i [WEBSITE_PORT].
Oto kompletne rozwiązanie, że pracował dla mnie i mojego zespołu:

<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> 
Powiązane problemy