如何使用wix安装全局isapi过滤器? (IIS 7.5)

时间:2012-12-17 17:02:00

标签: wix iis-7.5 isapi

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

我有以下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()在为pCzFilterName分配值之前将其传递给DeleteCollectionElement()。稍后会导致使用null wzAttributeValue值调用Iis7FindAppHostElementString(),该值似乎是错误的原因。

我当然可以进行疯狂的追逐,并乐意指向正确的方向......

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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

您忘记添加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>

给出了同样的错误。

当然,您必须将<iis:WebSite>元素添加到您的wxs文件中。