更新:可能是 IIS 或 MSI 版本依赖项
问题出现在此配置上:
Windows Server 2008 R2 标准版 6.1(内部版本 7600)、IIS 7.5.7600.16385、MSI v5.0.7600.16385
在第二个配置中,相同的 MSI 工作得很好:
Vista Enterprise SP2、IIS 7.0.6000.16386、MSI v4.5.6002.18005
原始问题:
我已经为我正在处理的新项目创建了 WiX 安装程序包,并且在将 Web 应用程序正确注册到 IIS7 中存在一些未解决的问题。
问题是我的 Web 应用程序注册了不正确的物理路径凭据属性值(可以通过 IIS7 通过聚焦 Web 应用程序节点然后打开其高级设置对话框来访问此属性)。安装我的应用程序后,该值设置为用户名为“name”的“特定用户”。这样的用户在我的环境中当然不存在,这导致 Web 应用程序在尝试在浏览器中打开它时在 500.19 上失败。
因此,在安装应用程序后,我必须打开 IIS 并将物理路径凭据属性重置为“应用程序用户(传递身份验证)”,以强制 Web 应用程序使用应用程序池的身份访问其虚拟目录。该属性的此手动更改解决了问题..
有谁知道如何更改 WiX 行为,以便直接将物理路径凭据设置为“应用程序用户”,而无需手动修复该值?
这是我用于配置解决方案的 IIS 部分的片段:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Fragment>
<!-- Install to default web site -->
<iis:WebSite Id="DefaultWebSite" Description='Default Web Site'>
<iis:WebAddress Id="AllUnassigned" Port="80" />
</iis:WebSite>
<DirectoryRef Id="WebSiteContentDir">
<!-- Configuring app pool -->
<Component Id="ApplicationPoolComponent" Guid="{MY-GUID}" KeyPath="yes">
<util:User Id="ApplicationPoolUser" CreateUser="no"
Domain="MYDOMAIN" Name="MYUSER"
Password="MYPWD" />
<iis:WebAppPool Id="ApplicationPool" Name="MyApp" Identity="other" User="ApplicationPoolUser"
ManagedPipelineMode="classic" ManagedRuntimeVersion="v4.0" />
</Component>
<!-- Configuring virtual dir -->
<Component Id="VirtualDirComponent" Guid="{MY-GUID}" KeyPath="yes" >
<iis:WebVirtualDir Id="VirtualDir" Alias="MyApp" Directory="WebSiteContentDir" WebSite="DefaultWebSite">
<iis:WebDirProperties Id="VirtualDirProperties" WindowsAuthentication="yes" />
<iis:WebApplication Id="WebApplication" Name="MyApp" WebAppPool="ApplicationPool" />
</iis:WebVirtualDir>
</Component>
</DirectoryRef>
</Fragment>
</Wix>
Ww 已经在其他项目上遇到过这个问题,并且总是使用一个 powershell 脚本来解决,该脚本修复了在安装过程中自动执行的属性值。我相信一定有办法让WiX按照要求的方式安装它,并希望找到答案。提前致谢。