2012-07-27 5 views
7

Der WiX-Installer installiert die Silverlight-Webanwendung. Es kann unter 32 oder 64 Bit App Pool arbeiten. Aber wenn die Installation abgeschlossen ist, sehe ich, dass der ausgewählte App-Pool immer auf 32-Bit-Anwendungen aktivieren eingestellt ist. Dies gilt sogar für 64-Bit-Pools. Dies ist nicht möglich, da der vorhandene Pool für zuvor installierte 64 Anwendungen geändert werden kann. Ich ändere diesen Parameter nicht explizit. Was kann der Grund für ein Problem sein?WiX: Der Installer ändert AppPool immer, um die 32bit-App zu aktivieren

Das Codebeispiel hinzugefügt:

<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> 

Antwort

15

Das war in einem sehr eleganten Weg, meiner Meinung nach entwickelt.

Wenn Sie legen Sie die <iis:WebAppPool> Elementdeklaration an die <Component> als Win64="yes" markiert, wird der Anwendungspool mit Enable32bit Flag auf false gesetzt erstellt werden. Andernfalls (dh standardmäßig) wird es mit Enable32bit erstellt auf true erstellt.

Ich bin mir nicht sicher, wie es sich verhalten wird, wenn Sie den Anwendungspool nicht mit Ihrer Installation erstellen, sondern stattdessen auf den vorhandenen verweisen. Ich würde erwarten, dass es diese Flagge überhaupt nicht ändert. Sie können damit experimentieren, um herauszufinden, wie es genau funktioniert.

Und eine Randnotiz: Ich würde vermeiden, in den bestehenden Anwendungspool oder Website zu installieren. Dies ist weitaus schwieriger zu warten - denken Sie daran, dass Sie die Maschine nach der Deinstallation in ihrem "Vorinstallations" -Zustand belassen müssen. Das bedeutet, dass Sie den Backup-Zustand wiederherstellen/wiederherstellen müssen, indem Sie alle benutzerdefinierten Aktionen ändern ... Brrr ...

+0

Vielen Dank, Yan. Hmm .... ja, es ist interessant ... Ich habe den Code hinzugefügt, den ich benutze. – Oleg

+0

Der von Ihnen hinzugefügte Code erstellt also einen App-Pool, in dem Enable32bit auf 'true' gesetzt ist. Möglicherweise möchten Sie eine andere Komponente mit umgekehrter Bedingung hinzufügen, das heißt, das VersionNT64- und das Win64-Attribut auf yes setzen und das gleiche Material hinzufügen. –

+0

Ja, wenn ich einen neuen Pool erstellen kein Problem. Das Problem liegt jedoch darin, dass der Benutzer den vorhandenen (64-Bit) auswählt und dieser Pool dann in 32-Bit geändert wird. Ich benutze benutzerdefinierte .NET-Funktionen, um Pool auszuwählen. – Oleg