更新:可能是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应用程序注册了不正确的物理路径凭证属性值(通过关注Web应用程序节点然后打开其高级设置对话框,可以通过IIS7访问此属性)。安装我的应用程序后,该值将设置为具有用户名“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以所要求的方式安装它,并希望找到答案。提前谢谢。