私はしばらくこれにこだわっています。最も簡単な言葉で、私の知る限りで説明しようと思います。私はどんな助けも尊重します。
常に更新している VB6 でコンパイルされた ActiveX DLL を使用する C# プロジェクトがあります。セットアップ プロジェクトをコンパイルしてクライアントに送信すると、セットアップが実行されます。更新されたセットアップ プロジェクトをビルドするときに、セットアップ プロジェクトの「バージョン」を増やして、「別のバージョンが既にインストールされている」という問題が発生しないようにします。
いくつかの更新の後、インストーラーで DLL が新しいバージョンに更新されないことに気付き始めました。クライアント コンピュータには、元の DLL がインストールおよび登録されていました。最初の症状: メソッドがクライアント C# コードからの例外を検出しませんでした。
これは共有 DLL ではなく、このアプリケーションだけが必要とします。
アプリケーションを (通常の手順で) アンインストールすると、DLL もアプリケーション フォルダから削除されないことに気付きましたが、このファイルのプロパティ 'Permanent' を false に設定します。レジストリの登録エントリも維持されます。
ビルドする前に、VS6.0 で DLL のバージョンを更新します (通常はビルド番号を増やします)。次に、VS2008 で参照から削除し、開発マシンに再登録して COM タブから追加せずに、[参照] タブから再度追加します。
これらの選択肢を考えました。
- アンインストール時の regsvr32.exe /u 'ハードコードされた dll のパス' へのセットアップ プロジェクトのカスタム ステップ (醜い)
- どういうわけか、登録せずに「Isolate」プロパティがどのように機能するかを見つけてください
- 実際にライブラリのバージョンをチェックし、インストールごとにそれに応じてファイルを更新するセットアップ プロジェクト 'Conditions' を実行する方法を確認してください)。
どんな助けでも大歓迎です。