0

Accessアプリケーションに.NETCOMコンポーネントを使用するインストーラーを作成しています。COM dllをINSTALLDIRにインストールすると、正常に機能しています。dllとtlbの両方を収集するためにヒートを実行してCOM登録を行うのはWIXに任せています。しかし、ここでdllをGACにインストールしたいので、tlbファイルのみがINSTALLDIRにインストールされます。私たちの目標は、異なるバージョンのSW(同じマシンにインストールしても問題ありません)が同じCOMバージョンを使用でき、1つのバージョンのSWをアンインストールした後でも、他のバージョンは機能することです(これは、 dllをINSTALLDIRにインストールします、私は正しいですか?私の方法が間違っている場合は、私を修正してください)。

ここに問題があります。GACにインストールするために、dllファイル宣言にAssembly="。net"を追加することになっていると思います。ただし、インストール中に次のエラーが発生します:「エラーハンドラで問題が発生しました:自動化エラーシステムは指定されたファイルを見つけることができません。」コミットフェーズで、つまりCOMが登録された後、1つのCOMメソッド(作成したアクセス参照)を呼び出しているとき。どうやら私のCOMは正常に登録されませんでした。しかし、なぜこれが起こるのか私にはよくわかりません。前述したように、私が行った唯一の変更は、このAssembly="。net"を追加することでした。その前は、COM登録はOKで、正常に呼び出していました。

どんな助けでもいただければ幸いです。ありがとう!

4

1 に答える 1

1

GACは.netベースのdll用であり、COM dllを受け入れないため、これは機能しません。自分で確認するには、dllをC:\ Windows \ assemblyフォルダーにドロップしてみてください。アセンブリマニフェストがないというエラーが表示されますが、

あなたがすべきことは、その特定のCOMdllのインストーラーのすべてのバージョンでコンポーネントGUIDを同じに保つことです。このようにして、Windowsインストーラーは、どのアプリケーションがそれを使用しているかを記録し、最後のアプリケーションが削除された後にのみアンインストールします。また、それを独自のインストールフォルダーに入れます。そうしないと、最初にインストールされたバージョンがアンインストールされたときに、アプリケーションのインストールフォルダーが残ります。

もう1つのオプションは、それを独自のインストーラーに分離し、ブートストラップを使用してそれらを一緒にインストールすることです。

于 2012-07-24T10:44:09.183 に答える