4

更新:可能是 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按照要求的方式安装它,并希望找到答案。提前致谢。

4

0 回答 0