WIX- 在 IIS 上支持多个 Web 应用程序实例

WIX- support multiple Instance of Web App on IIS

我正在使用 wix 创建我的 msi 安装程序。安装程序将在 IIS 中为 运行 我的网络应用程序创建一个新的应用程序池和虚拟目录。

现在,我正在尝试在同一台机器上同时拥有多个 Web 应用程序实例(相同版本或更高版本)。

-Wix 支持这样的东西吗?

-我可以在每次安装时动态创建多个应用程序池和虚拟目录吗?因为目前 appPool 的名称、虚拟目录和目标文件夹都硬编码在 Product.WXS 文件中。

我认为您甚至无法多次执行安装程序,它只会尝试卸载、修改或修复您以前的安装或执行升级。 但是关于应用程序池或网站名称,您可以在安装过程中的功能选择对话框中指定它,以便在文本框中写下网站或应用程序池的名称

<Control Id="WebsiteName" Type="Text" X="..." Y="..." Width="..." Height="..."  Text="Website name :" Indirect="no" >
      <Condition Action="hide">Installed</Condition>
    </Control>
    <Control Id="WebsiteName" Type="Edit" X="..." Y="..." Width="..." Height="..." Property="WEBSITENAME" Text="{50}" Indirect="no" >
      <Condition Action="hide">Installed</Condition>
</Control> 

你需要在 Product.wxs

指定你的 属性
<Property Id="WEBSITENAME" Value="YourDefaultWebSiteName" Secure="yes">
  <RegistrySearch Id="FindWebSiteName" Root="HKCU"
                  Key="SOFTWARE\YourCompany\YourProduct"
                  Name="WebsiteName" Type="raw"/>
</Property>
<Property Id="APPPOOL" Value="0" Secure="yes">
  <RegistrySearch Id="FindWixSetupInstallation" Root="HKCU"
                  Key="SOFTWARE\YourCompany\YourProduct"
                  Name="webAppPool" Type="raw"/>
</Property>

您需要在创建应用程序池和网站名称的设置中指定它

<iis:WebSite Id="DefaultWebSite" Description="Default Web Site">
  <iis:WebAddress Id="AllUnassigned" Port="80" />
</iis:WebSite>
<DirectoryRef Id="YourDirectory" >
  <Component Id="CMP_CONFIG" Guid="{YOURGUID}" KeyPath="yes">
    <iis:WebVirtualDir Id="WebsiteName" Alias="[WEBSITENAME]" Directory="YourDirectory" WebSite="DefaultWebSite">
      <iis:WebApplication Id="YourApplicationApp" Name="[WEBSITENAME]" WebAppPool="[WEBSITENAME]" />
      <iis:WebDirProperties Id="YourApplicationDirProp" Script="yes" Execute="yes" Read ="yes" DefaultDocuments="Default.aspx"/>
    </iis:WebVirtualDir>
  </Component>
</DirectoryRef>

如果您想创建桌面快捷方式

 <DirectoryRef Id="DesktopFolder">
      <Component Id="YourWebsiteAppDesktopShortcut" Guid="{YOURGUID}">       
        <RegistryValue Root="HKCU"
                      Key="SOFTWARE\YourCompany\YourProduct"
                      Name="YourWebsiteApp"
                      Type="integer"
                      Value="1"
                      KeyPath="yes"/>

        <util:InternetShortcut Id="WebSiteDesktopShortcut"
                               Directory="DesktopFolder"  
                               Name="YourWebsiteAppName" 
                               Target="http://localhost/[WEBSITENAME]/" 
                               Type="url" />
        </Component>
    </DirectoryRef>

您只需在 Product.wxs

中注册所有这些组件参考 ID