【问题标题】:How to install global isapi filters with wix? (IIS 7.5)如何使用 wix 安装全局 isapi 过滤器? (IIS 7.5)
【发布时间】:2012-12-04 19:24:29
【问题描述】:

我正在努力使用 wix 3.6.3303.1/4.0.12.0 将基于 com 的 isapi dll 全局安装到 iis 7.5 中。

我有以下 wix 配置 (full config here):

<Fragment>
  <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
    <Component Id="IsapiDll" Guid="ADD-GUID-HERE">
      <File Id="isapidll" Name="isapi.dll" Source="isapi.dll" />
    </Component>
    <Component Id="IisFilter" Guid="ADD-GUID-HERE">
      <CreateFolder />
      <iis:WebFilter Id="IisFilter" Name="MyIsapi" Path="[INSTALLFOLDER]isapi.dll" LoadOrder="last" Description="MyIsapi" />
    </Component>
  </ComponentGroup>
</Fragment>

当我在带有 IIS7.5 的 Windows 7 32 位上运行时,我的 msi 日志中收到以下错误:

WriteIIS7ConfigChanges:  Error 0x8007000e: Failed while finding IAppHostElement filter/@name=(null)
WriteIIS7ConfigChanges:  Error 0x8007000e: Failed to delete filter
WriteIIS7ConfigChanges:  Error 0x8000ffff: Unexpected IIS Config action specified for global filter
WriteIIS7ConfigChanges:  Error 0x8000ffff: Failed to configure IIS filter global.
WriteIIS7ConfigChanges:  Error 0x8000ffff: WriteIIS7ConfigChanges Failed.

我担心这个问题是 wix 本身的错误。 CreateGlobalFilter() 在赋值之前将 pwzFilterName 传递给 DeleteCollectionElement()。这会导致 Iis7FindAppHostElementString() 被调用时使用一个空 wzAttributeValue 值,这似乎是错误的原因。

我当然可以如痴如醉,并且很高兴被指向正确的方向......

更新: 我现在玩过网站级别的安装,并通过添加 WebSite 属性和元素来实现。 Config here

编辑:将路径属性更改为正确的格式。

【问题讨论】:

    标签: wix iis-7.5 isapi


    【解决方案1】:

    您忘记添加 WebSite 属性,此代码在 WIX3.7 中很适合我:

    <Component Id="IsapiFilterComponent" Guid="AE102719-D7DE-450A-A44C-29E7D9A36C0D" KeyPath="yes">
      <iis:WebFilter Id="MyWebDavFilter" Name="MyWebDavFilter" Path="[INSTALLFOLDER]MyWebDavFilter.dll" LoadOrder="last" Description="My Web Dav Filter" WebSite="DefaultWebSite" />
    </Component>
    

    但是这个

    <Component Id="IsapiFilterComponent" Guid="AE102719-D7DE-450A-A44C-29E7D9A36C0D" KeyPath="yes">
      <iis:WebFilter Id="MyWebDavFilter" Name="MyWebDavFilter" Path="INSTALLFOLDER]MyWebDavFilter.dll" LoadOrder="last" Description="My Web Dav Filter"/>
    </Component>
    

    给出与您相同的错误。

    当然,您必须将&lt;iis:WebSite&gt; 元素添加到您的 wxs 文件中。

    【讨论】:

    • 嗨,这安装了一个特定于站点的 isapi 过滤器,它也适用于我。不幸的是,我需要一个全局过滤器。
    【解决方案2】:

    0x8007000e 表示内存不足,消息中的(null) 让我敢打赌这是自定义操作中的错误。如果您可以调试它,那是理想的。无论如何,在http://wixtoolset.org/bugs 输入错误可能是个好主意。

    【讨论】:

    • 谢谢 Rob,如果/当我有机会时,我会提交一个错误并查看调试。
    猜你喜欢
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多