在WiX 3.6中设置WebSite元素的AppPool

时间:2011-05-17 09:28:24

标签: iis installer wix

我有一个WiX安装程序,它设置了几个根IIS网站,每个网站都有许多WebApplications。我们为每个根提供了一个单独的AppPool,并将每个WebApplications放入该AppPool中。

不幸的是,我找不到确保网站进入他们所需的AppPools和WiX坚持将它们放入DefaultAppPool的方法。

我在这里遗漏了什么吗?

  <Component Id="INPUT" Guid="{43302D85-55B5-4C99-8C07-8AF5ED419E0A}" Directory="dirBBD4B479DF2AD0441616B5EB11867FA6" KeyPath="yes">
    <iis:WebAppPool Id="INPUTPool" Name="RCMInput" ManagedPipelineMode="integrated" ManagedRuntimeVersion="v4.0"/>
  </Component>
  <Component Id="INPUTSITE" Directory="dirBBD4B479DF2AD0441616B5EB11867FA6" Guid="{E508497A-C485-4EB8-8A91-4299BD46291B}" KeyPath="yes">
    <iis:WebSite Id="INPUTROOT" Description="RCMInput" Directory="dirBBD4B479DF2AD0441616B5EB11867FA6" AutoStart="yes" >
      <iis:WebAddress Id="INPUTROOTADDRESS" IP="[RCMINPIP]" Port="443" Secure="yes" Header="[RCMINPHOST]" />
      <iis:WebVirtualDir Id="INPUTVD" Alias="InputApp" Directory="dir0AC030D54BBE340DFFCC71C2724F6BF1">
        <iis:WebApplication Id="INPUTWEBAPP" Name="InputApp" WebAppPool="RCMInpAppPool">
          <iis:WebApplicationExtension CheckPath="no" Extension="svc" Executable="[NETFRAMEWORKROOT]v2.0.50727\aspnet_isapi.dll" Verbs="GET,HEAD,POST,PUT,DELETE"/>
        </iis:WebApplication>
      </iis:WebVirtualDir>
      <iis:WebVirtualDir Id="INPUTVD2" Alias="Administration" Directory="dir78ADFB9F5CBB65D9A3E21EAB7F4C5911">
        <iis:WebApplication Id="INPUTWEBAPP2" Name="Administration" WebAppPool="RCMInpAppPool">
          <iis:WebApplicationExtension CheckPath="no" Extension="svc" Executable="[NETFRAMEWORKROOT]v2.0.50727\aspnet_isapi.dll" Verbs="GET,HEAD,POST,PUT,DELETE"/>
        </iis:WebApplication>
      </iis:WebVirtualDir>
    </iis:WebSite>
  </Component>

3 个答案:

答案 0 :(得分:1)

我猜想当你在WebApplication中引用AppPool名称“RCMInput”时,它无法解析它并默认默认应用程序池。您是否尝试在启用日志记录的情况下运行MSI并查看是否提供了额外的详细信息?

从命令行

msiexec /i install.msi -L*v install.log

http://ranjithk.com/2009/12/17/automating-web-deployment-using-windows-installer-xml-wix/有一篇关于在WiX中部署Web应用程序的博客文章很好,他将AppPool定义在与WebApplication相同的组件中。

答案 1 :(得分:1)

在WebApplication中引用AppPool时使用Id而不是使用RCMInpAppPool使用INPUTPool时,不确定它是否已在3.6中更改但是3.5中已更改。

这是excellent example

答案 2 :(得分:0)

我遇到了同样的问题,但我终于找到了解决方案。而不是在WebVirtualDir中嵌套WebApplication(引用您的应用程序池),而是将其直接放在您的网站中。所以,如果你有这个:

<iis:WebSite Id='WebSite' Description='My Website' Directory="WebsiteDir">
   <iis:WebAddress Id='WebAddress' Port='80' />
   <iis:WebVirtualDir Id="VirtualDir" Alias="mywebsite" Directory="WebsiteDir">
       <iis:WebApplication Id="WebApplication" Name="MyWebApplication" WebAppPool="MyWebAppPool" />
   </iis:WebVirtualDir>
</iis:WebSite>

替换为:

<iis:WebSite Id='WebSite' Description='My Website' Directory="WebsiteDir">
   <iis:WebAddress Id='WebAddress' Port='80' />
   <iis:WebVirtualDir Id="VirtualDir" Alias="mywebsite" Directory="WebsiteDir" />
   <iis:WebApplication Id="WebApplication" Name="MyWebApplication" WebAppPool="MyWebAppPool" />
</iis:WebSite>
相关问题