我正在努力使用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
编辑:将路径属性更改为正确的格式。
答案 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文件中。