2013-10-11 38 views
2

時由於我使用,我創建一個MSI使用WiX的被稱爲以下方式引導程序系統的一部分傳遞給MSI命令行參數:如何使用引用IIS網站

msiexec /i product.msi WEBSITENAME="Default Web Site" PORT="80" 

WEBSITENAME和PORT參數表示作爲我正在使用的引導程序系統的早期部分創建的網站和端口的名稱。在我的* .wxs文件中,我希望能夠使用這些傳入的參數來獲取對該網站的「引用」,以便我可以在同一網站下創建其他Web應用程序,虛擬目錄等。

我已經能夠通過「硬編碼」現有的Web站點名稱和端口要做到這一點,即

<!-- Reference existing Default Web Site at port 80 --> 
<iis:WebSite Id="DefaultWebSite" Description="Default Web Site"> 
    <iis:WebAddress Id="MySiteWebAddress" Port="80"/> 
</iis:WebSite> 

<!-- Reference existng Default Application Pool --> 
<iis:WebAppPool Id="DefaultApplicationPool" Name="DefaultAppPool"> 
</iis:WebAppPool> 

,然後使用這些硬編碼值創建在下面的

虛擬目錄
<iis:WebVirtualDir Id="MyVirtualDir" Alias="Images" Directory="ImagesDirectory" WebSite="DefaultWebSite"> 
    <iis:WebApplication Id="MyWebSiteApplication" Name="ImagesWebSite" WebAppPool="DefaultApplicationPool"/> 
</iis:WebVirtualDir> 

我現在要做的是用傳入命令行的值替換硬編碼的「Default Web Site」。

這可能嗎?如果是這樣如何?我已經做了一些關於使用屬性的閱讀,但我沒有看到如何用屬性替換硬編碼的字符串。任何幫助將非常感激。

謝謝!

回答

4

您必須將方括號中的屬性名稱強制爲強制WiX將其解析爲屬性。例如:

<iis:WebAppPool Id="WebAppPool" Name="[WEB_APP_POOL_NAME]" Identity="other" User="WebAppPoolUser" ManagedRuntimeVersion="v4.0" ManagedPipelineMode="Integrated"/> 

<iis:WebSite Id="DefaultWebSite" Description="[WEBSITE_NAME]" Directory="INSTALLLOCATION" AutoStart="yes" StartOnInstall="yes"> 
    <iis:WebAddress Id="AllUnassigned" Port="[WEBSITE_PORT]" Header="[WEBSITE_HEADER]"/> 
    <iis:WebApplication Id="Application" Name="App" WebAppPool="WebAppPool" /> 
</iis:WebSite> 

的「目錄」屬性不需要括號中,因爲它已經將被自動解決,如解釋in the documentation

+0

感謝您的信息,這正是我所需要的! :) –