wix installer /创建网站并分配新的或现有的Web应用程序池

use*_*388 4 wix application-pool web

我尝试使用wix安装创建一个新的网站.没关系,但我无法将新的或现有的网络应用程序池分配给新的网站.iis:网站标记不包含WebAppPool属性.如何将Web应用程序池分配给Web站点.你可以看到我的代码.

谢谢你的帮助.

        <Component Id="WEB_SITE_CONFIGURE_COMPONENT" Guid="{35087032-D049-48C8-BCAD-1FEFD0C06A25}" NeverOverwrite="yes" Shared="yes" Permanent="yes" Transitive="yes">
          <Condition><![CDATA[WEBSITE_INSTALLTYPE<>2]]></Condition>
          <CreateFolder Directory="WEBSITE_FOLDER"/>
          <iis:WebSite Id="WEB_SITE" Description="[WEBSITE_NAME]" SiteId="*" Directory="WEBSITE_FOLDER" ConfigureIfExists="yes" AutoStart="yes" StartOnInstall="yes">
            <iis:WebAddress Id="AllUnassigned" Port="[WEBSITE_PORT]" />            
          </iis:WebSite>
          <RegistryValue Root="HKLM" Key="$(var.DefaultRegistryKey)" Name="ConfigSite" Value="1" Type="string"></RegistryValue>
        </Component>        

        <Component Id="WEBAPP_POOL_CONFIGURE_COMPONENT" Guid="{316738A6-26A2-4C14-9AB9-B2066E3FA288}" KeyPath="yes" Permanent="yes" Transitive="yes">
          <Condition><![CDATA[(WEBSITE_INSTALLTYPE=0) OR (USE_CUSTOM_WEBSITE_FOLDER=1)]]></Condition>          
          <iis:WebAppPool Id="APP_POOL" Name="[WEBAPP_POOL_NAME]" ManagedPipelineMode="Classic" ManagedRuntimeVersion="v4.0"/>
          <RegistryValue Root="HKLM" Key="$(var.DefaultRegistryKey)" Name="ConfigPool" Value="1" Type="string"></RegistryValue>
        </Component>

        <Component Id="WEPAPP_CONFIGURE_COMPONENT" Guid="{F95B024E-B6B6-4E6C-AC35-9B1086FC3521}" Transitive="yes">
          <Condition><![CDATA[(WEBSITE_INSTALLTYPE<>2) AND ((WEBSITE_INSTALLTYPE=0) OR (USE_CUSTOM_WEBSITE_FOLDER=1))]]></Condition>
          <iis:WebVirtualDir Id="VIRTUAL_DIR" Alias="[WEB_APP_NAME]" Directory="WWW_FOLDER" WebSite="WEB_SITE">
            <iis:WebApplication Id="WEB_APP" Name="[WEB_APP_NAME]" WebAppPool="APP_POOL"/>            
          </iis:WebVirtualDir>
          <RegistryValue Root="HKLM" Key="$(var.DefaultRegistryKey)" Name="ConfigVirtualDir" Value="1" Type="string"></RegistryValue>
        </Component>
Run Code Online (Sandbox Code Playgroud)

BdN*_*504 5

在以下文章的帮助下,我提出了一个工作安装程序,可以在其中创建新的AppPool或者可以选择现有的AppPool.

  1. 使用WIX 3.5和Visual Studio 2010创建Web应用程序安装程序 - 第1部分
  2. WiX中的Web应用程序安装程序
  3. WiX和DTF:使用自定义操作列出IIS上的可用网站
  4. 使用Wix3将Web应用程序安装到现有IIS网站

简而言之:在Product元素中创建一个Website元素:

<Product>
    <iis:WebSite Id="SelectedWebSite" Description="[WEBSITE_DESCRIPTION]" Directory="INSTALLFOLDER" SiteId="[WEBSITE_ID]">
      <iis:WebAddress Id="AllUnassigned" Port="80" />
    </iis:WebSite>
</Product>
Run Code Online (Sandbox Code Playgroud)

使用以下内容创建Include WebSites.wxi:

<?xml version="1.0" encoding="utf-8"?>
<Include>
  <Property Id="WEBSITE_DESCRIPTION">
    <RegistrySearch Id="WebSiteDescription" Name="WebSiteDescription" Root="HKLM" Key="SOFTWARE\!(loc.CompanyName)\[ProductName]\Install" Type="raw" />
  </Property>
  <Property Id="WEBSITE_ID">
    <RegistrySearch Id="WebSiteID" Name="WebSiteID" Root="HKLM" Key="SOFTWARE\!(loc.CompanyName)\[ProductName]\Install" Type="raw" />
  </Property>
  <Property Id="WEBSITE_PATH">
    <RegistrySearch Id="WebSitePath" Name="WebSitePath" Root="HKLM" Key="SOFTWARE\!(loc.CompanyName)\[ProductName]\Install" Type="raw" />
  </Property>
  <Property Id="WEBSITE_VD">
    <RegistrySearch Id="WebSiteVD" Name="WebSiteVD" Root="HKLM" Key="SOFTWARE\!(loc.CompanyName)\[ProductName]\Install" Type="raw" />
  </Property>
  <CustomTable Id="AvailableWebSites">
    <Column Id="WebSiteID" Category="Identifier" PrimaryKey="yes" Type="int" Width="4"/>
    <Column Id="WebSiteDescription" Category="Text" Type="string" PrimaryKey="no"/>
    <Column Id="WebSitePath" Category="Text" Type="string" PrimaryKey="no" Nullable="yes"/>
    <Row>
      <Data Column="WebSiteID">0</Data>
      <Data Column="WebSiteDescription">Dummy</Data>
      <Data Column="WebSitePath"></Data>
    </Row>
  </CustomTable>
</Include>
Run Code Online (Sandbox Code Playgroud)

创建此处描述的CustomAction .

使用AppPool创建一个wxs文件:

<?xml version="1.0" encoding="UTF-8"?>
<Wix 
  xmlns="http://schemas.microsoft.com/wix/2006/wi" 
  xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" 
  xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension">
    <Fragment>
    <Component Id="WebVirtualDirComponent" Guid="PUT-GUID-HERE" Directory="INSTALLFOLDER" KeyPath="yes">
      <iis:WebAppPool 
        Id="YourAppPoolName" 
        Name="[VD][WEBSITE_ID]" 
        ManagedRuntimeVersion="v4.0" 
        IdleTimeout="0" 
        RecycleMinutes="0" 
        ManagedPipelineMode="integrated"/>
      <iis:WebVirtualDir Id="VDir" Alias="[VD]" Directory="INSTALLFOLDER" WebSite="SelectedWebSite">
        <iis:WebApplication Id="NotizBrowserWebApp" WebAppPool="YourAppPoolName" Name="[VD][WEBSITE_ID]" />
        <iis:WebDirProperties Id="NotizBrowserProps" AnonymousAccess="no" WindowsAuthentication="yes" DefaultDocuments="-" Execute="yes" Script="yes" Read="yes"/>
      </iis:WebVirtualDir>
    </Component>
    </Fragment>
</Wix>
Run Code Online (Sandbox Code Playgroud)