2

.msiファイルを作成するセットアッププログラムに取り組んでいます。C#で記述されたCustomActionプログラムが関連付けられています。このCustomActionプログラムで作成された3つのCOMオブジェクト参照があり、それらが機能するために必要です。以下のとおりです。

  1. アクティブなDSIIS名前空間の提供(C:\ Windows \ System32 \ inetsrv \ adsiis.dll)
  2. Windowsスクリプトホストオブジェクトモデル(C:\ Windows \ System32 \ wshom.ocx)
  3. NetFwTypeLib(C:\ Windows \ System32 \ FirewallAPI.dll)

追加情報として、プログラムでこれらのDLLを使用するタスクは次のとおりです。

  1. 特定のファイルタイプのMIME設定を設定します。
  2. フォルダへのデスクトップショートカットを作成します。
  3. プログラムをファイアウォール例外として登録するには

さて、これが私の問題です。C#プログラムを再構築し、Visual Studio内からCustomActionプログラムを実行すると、正常に動作し、上記の3つのタスクを魅力のように実行できます。ただし、実際に.msiをビルドして実行し、システムにプログラムをインストールしようとすると、エラーが発生します。私は日本語のOSを使用しているので、日本語でエラーが発生するので、エラーメッセージをできるだけ英語に翻訳しようと思います。エラーは次のようなものです。

*

ファイルまたはアセンブリ'Interop.IISOle、バージョン= 1.0.0.0、カルチャ=ニュートラル、PublicKeyToken = null'、またはその依存関係の1つをロードできませんでした。指定されたファイルが見つかりません。

*

この特定のエラーメッセージは、最初のdll(adsiis.dll)に関連しているために表示されます。これは、IISOle名前空間が含まれているためです。同様に、プログラムから参照した3つのCOMオブジェクトすべてに関連するエラーメッセージが表示されます。これから理解できるのは、どういうわけか、このコードが.msiファイル内にあると、適切なCOMオブジェクトが見つからないということです。CustomActionのコーディングに使用したのと同じマシンにプログラムをインストールしようとすると、セットアップで同じエラーが発生するため、これが発生する理由は本当に混乱しています。おかしなことに、VisualStudioInterfaceを使用しても問題なく実行されます。これで私を助けてください。前もって感謝します!

私はWindowsVistaBusinessに取り組んでいますが、WindowsServer2003からWindows7までのさまざまなWindowsOSにインストールできるようにセットアップが必要です。

4

2 に答える 2

4

ちょうど今日これに遭遇しました。「Windows の機能の有効化または無効化」に移動し、IIS 6 のものを含む IIS の下のすべてを調べます。

[インターネット インフォメーション サービス] > [Web 管理ツール] > [IIS 6 管理の互換性] の下にある [IIS メタベースと IIS 6 構成の互換性] 機能がオンになっていることを確認します。

于 2012-06-21T22:00:27.433 に答える
1

アントン、ついに私は何が悪いのかを知りました。

たとえば、dsiis.dllを参照すると、Visual StudioはInteropモジュール、つまりInterop.IISOle.dllをCustomActionプログラムのbinディレクトリ内に配置します。CustomAction.exeもここにあります。他の2つのCOMオブジェクトを参照する場合も同じプロセスを実行します。wshom.ocxおよびFirewallAPI.dll。しかし、Wixを使用して作成された実際のセットアッププログラムは、このCustomAction.exeを他のディレクトリにコピーし、.msiはその特定のCustomAction.exeファイルを使用します。Interop.IISOle.dll(およびその他も)がそこに見つからないため、問題が発生します。(エラーメッセージには、最初から探す必要があると書かれていました。探しないのは愚かでしたが、もっと大きな問題があるかもしれないと思っていました)

これが私がしたことです。Wixプロジェクトに、これらのInteropDLLファイルをインストーラーが使用するCustomAction.exeと同じ場所にコピーするように指示しました。それはとても簡単に問題を解決しました。

Wixに関しては、私はまったくの初心者です。さらに、いくつかの理由から、2と3にはCustomActionを使用する必要があります。

于 2010-05-13T07:16:53.420 に答える