3

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>

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 値で呼び出され、エラーの原因と思われます。

もちろん、私は野生のガチョウの追跡をしている可能性があり、正しい方向に向けられて幸せです...

更新: Web サイト レベルのインストールで遊んで、WebSite 属性と要素を追加して動作するようにしました。ここで設定

編集:パス属性を正しい形式に変更しました。

4

2 に答える 2

2

0x8007000eはメモリ不足を意味し(null)、メッセージ内のメッセージは、これがカスタム アクションのバグであることを確信させます。デバッグできれば理想的です。いずれにせよ、http: //wixtoolset.org/bugs でバグを入力することはおそらく良い考えです。

于 2013-01-07T17:43:41.033 に答える
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 ファイルに追加する必要があります。

于 2013-02-15T08:41:19.253 に答える