gpt4 book ai didi

asp.net-mvc - 如何使用 Wix 在 IIS 7 上安装 ASP.Net MVC 应用程序?

转载 作者:行者123 更新时间:2023-12-03 17:49:51 25 4
gpt4 key购买 nike

对于 IIS6,我可以使用 Wix 中的 IIS 助手来安装这样的 Web 应用程序:

<iis:WebAppPool 
Id="AP_MyApp"
Name="My Application Pool"
Identity="networkService" />
<iis:WebApplication
Id="WA_MyApp"
Name="MyApp"
WebAppPool="AP_MyApp">
<iis:WebApplicationExtension
CheckPath="no"
Executable="[NETFRAMEWORK20INSTALLROOTDIR]aspnet_isapi.dll"
Verbs="GET,HEAD,POST"/>
</iis:WebApplication>

不幸的是,这不适用于 IIS7。我们不想使用aspnet_isapi.dll 机制,而是希望集成管道来处理请求路由。此脚本创建的应用程序池处于经典模式而非集成模式,因此所有处理程序都无法正确运行。

如何在 IIS 7 上正确安装 MVC 应用程序?

最佳答案

我个人建议使用 AppCmd.exe(matthewthurlow 的第一个项目符号),因为您不必依赖正在安装的旧管理组件,也不必冒险手动修改配置 XML。

如果您对 AppCmd 不满意,Mike Volodarsky 在 Getting Started with AppCmd.exe 上有一篇很棒的文章。和 Microsoft IIS Configuration Reference非常好,提供了 UI、Code 和 AppCmd 示例来修改每个配置项(例如 Application Pools)。 IIS7 Administration Pack还包括一个配置编辑器,允许您 generate AppCmd scripts从任何现有配置。

要将 AppCmd 集成到 WiX,您需要为每个命令创建和安排两个自定义操作。 WiX v3 手册中有一般信息documenting this procedure ,我在下面包含了一个具体的例子。

首先,您需要设置立即操作以将命令行存储在属性中:

<CustomAction 
Id="CreateAppPool_Cmd"
Property="CreateAppPool"
Execute="immediate"
Value="&quot;[WindowsFolder]system32\inetsrv\APPCMD.EXE&quot; add apppool /name:&quot;[APP_POOL_NAME]&quot;" />

接下来,您设置一个引用此属性的延迟操作:
<CustomAction 
Id="CreateAppPool"
BinaryKey="WixCA"
DllEntry="CAQuietExec"
Execute="deferred"
Return="ignore"
Impersonate="no"/>

最后,您需要安排这些。设置属性的立即操作在 InstallFinalize 之后似乎运行良好,而延迟操作在 InstallFiles 之后运行。我还没有弄清楚回滚操作。

MapGuide Open Source 广泛采用了这种方法;您可以在我们的 MapGuide.wxs 中看到 CA 调度文件,以及我们 IIS7.wxs 中的 CA 定义文件。

关于asp.net-mvc - 如何使用 Wix 在 IIS 7 上安装 ASP.Net MVC 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/686190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com