2013-10-11 36 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

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