2012-07-27 82 views
7

WiX安裝程序將安裝Silverlight Web應用程序。它可以在32或64位應用程序池下工作。但是,當安裝完成後,我發現所選的應用程序池始終設置爲啓用32位應用程序。甚至對於64位池。它不是完美的,因爲它可以改變以前安裝的64個應用程序的現有池。 我沒有明確改變這個參數。問題的原因可能是什麼?WiX:安裝程序始終更改AppPool以啓用32位應用程序

的代碼示例說:

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

回答

15

這已經設計了非常優雅的方式,在我看來。

如果將<iis:WebAppPool>元素聲明標記爲Win64="yes"<Component>,應用程序池將與Enable32bit標誌設置爲false創建。否則(即默認情況下),它將被創建爲Enable32bit,設置爲true

我不確定當你不用你的安裝創建應用程序池時它將如何工作,而是參考現有的應用程序池。我希望它根本不會改變這個標誌。你可以試驗一下,看看它是如何工作的。

並提醒:我會避免安裝到現有的應用程序池或網站。這更難以維護 - 請記住,您必須在卸載後讓機器處於「預安裝」狀態。這意味着你將不得不保持備份/恢復狀態的一切你改變與自定義操作... Brrr ...

+0

謝謝,嚴。嗯....是的,它很有趣......我添加了我使用的代碼。 – Oleg 2012-07-27 14:50:08

+0

因此,您添加的代碼將創建具有Enable32bit設置爲'true'的應用程序池。您可能想要添加具有相反條件的另一個組件,即將VersionNT64和Win64屬性設置爲yes,並將所有相同的東西添加到它。 – 2012-07-27 20:00:39

+0

是的,當我創建一個新的池沒有問題。但問題是,當用戶選擇現有的(64位),然後這個池改爲32位。我使用自定義.NET函數來選擇池。 – Oleg 2012-07-29 17:09:41