我正在努力使用wix 3.6.3303.1/4.0.12.0将基于com的isapi dll全局安装到iis 7.5中。
我有以下wix配置(完整配置在此处):
<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>
在 Windows 7 32 位操作系统上运行 IIS7.5 时,我的 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本身的一个bug。 在CreateGlobalFilter()将pwzFilterName传递给DeleteCollectionElement()之前,它没有被赋值。这后来导致调用带有空值wzAttributeValue的Iis7FindAppHostElementString(),这似乎是错误的原因。
当然,我可能会追着一个错误的方向跑,如果能指点一下正确的方向就太好了...
更新: 我已经尝试了网站级别的安装,增加了WebSite属性和element,现在可以正常工作了,Config here。
编辑:更改路径属性为正确格式。