2012-07-27 11 views
7

Instalator WiX instaluje aplikację internetową silverlight. Może pracować pod 32 lub 64-bitową pulą aplikacji. Ale po zakończeniu instalacji widzę, że wybrana pula aplikacji zawsze jest ustawiona na Włącz aplikacje 32-bitowe. Dotyczy to nawet pule 64-bitowych. Nie można go zmienić, ponieważ może zmienić istniejącą pulę dla wcześniej zainstalowanych 64 aplikacji. Nie zmieniam wyraźnie tego parametru. Jaki jest powód problemu?WiX: Instalator zawsze zmienia AppPool, aby włączyć 32-bitową aplikację

Próbka Kod dodania:

<Component Id="WebAppVDirComponent" 
    Guid="C7A4B0E8-2389-4A2A-B285-96960BEE1C52" KeyPath="yes"> 
    <Condition><![CDATA[RBGROUP_HOSTING = "iis"]]></Condition> 
     <iis:WebVirtualDir Id="VDir" 
       Alias="[WEB_APP_NAME]" 
       Directory="INSTALLDIR" 
       WebSite="TheWebSite" > 
     <iis:MimeMap Id="SilverlightMimeType" Extension=".xap" Type="application/x-silverlight-app" /> 
     <iis:WebApplication Id="WorkWebApplication" 
       Name="[WEB_APP_NAME]" WebAppPool="TheAppPool"/> 
     </iis:WebVirtualDir> 
     <iis:WebAppPool Id="TheAppPool" Name="[APP_POOL_NAME]" ></iis:WebAppPool>   
     <CreateFolder/> 
</Component> 

Odpowiedz

15

ten został zaprojektowany w bardzo elegancki sposób, moim zdaniem.

Jeśli umieścić deklarację <iis:WebAppPool> element do <Component> oznaczonego jako Win64="yes", pula aplikacji zostanie utworzony z Enable32bit flaga ustawiona na false. W przeciwnym razie (czyli domyślnie) zostanie utworzony z Enable32bit ustawionym na true.

Nie jestem pewien, jak będzie się zachowywać, gdy nie utworzysz puli aplikacji z instalacją, ale odwołaj się do istniejącej. Spodziewałbym się, że w ogóle nie zmieni tej flagi. Możesz eksperymentować z tym, aby dowiedzieć się, jak to działa.

Uwaga: Unikałbym instalacji do istniejącej puli aplikacji lub witryny. Jest to o wiele trudniejsze w utrzymaniu - pamiętaj, że po odinstalowaniu musisz pozostawić urządzenie w stanie "preinstalacji". Oznacza to, że będziesz musiał zachować kopię zapasową/przywrócić stan wszystkich zmian za pomocą działań niestandardowych ... Brrr ...

+0

Dziękuję, Yan. Hmm .... tak, to interesujące ... Dodałem kod, którego używam. – Oleg

+0

Zatem dodany kod utworzy pulę aplikacji z ustawieniem Enable32bit na "true". Można dodać kolejny składnik o przeciwnym warunku, tj. Przy użyciu atrybutów VersionNT64 i Win64 ustawionych na yes i dodać do niego wszystkie te same elementy. –

+0

Tak, po utworzeniu nowej puli nie ma problemu. Ale problem występuje, gdy użytkownik wybierze istniejący (64-bitowy) i ta pula zostanie zmieniona na 32-bitową. Używam niestandardowych funkcji .NET do wyboru puli. – Oleg