我正在努力使用 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()使用 null wzAttributeValue 值调用,这似乎是错误的原因。

我当然可以在白费力气,并且很高兴被指出正确的方向......

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

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

请您参考如下方法:

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


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!