0

現在、クラス ライブラリ、インストーラー、およびセットアップ プロジェクトを含む C# ソリューションがあります。セットアップ プロジェクトは、私のクラス ライブラリ (dll) をインストールするための MSI を生成し、vsdrfCOM を登録します。これは、インストール後にエンド ユーザー クライアント上のサード パーティ アプリケーションによって参照されます。サードパーティのアプリを制御することはできません。これはすべて期待どおりに機能し、クラス ライブラリは問題なく参照され、展開された MSI を介してインストール/再インストールできます。

残念ながら、私が取り組もうとしている問題は、エンド ユーザーが MSI 経由でアンインストールし、新しい MSI をダウンロードして実行することを期待せずに、クラス ライブラリ (dll) に更新を適用する方法です。また、私が維持したい生成されたユーザー状態フォルダー/ファイルがあります。基本的にはクラスライブラリ(dll)を上書きするだけです。私が最初に撮影していたのは、ライブラリの初期化、リモートの場所へのヒット、バージョンのチェック、および必要に応じて新しい dll のダウンロードでした。次に、サードパーティ アプリケーションを再起動する必要があることをユーザーに通知します。

  1. 新しい dll をダウンロードして古い dll を上書きするだけでは、CLSID が維持されていても、レジストリが何かを気に入っていないように見えるため、機能しないようです。http://www.codeproject.com/KB/vb/Auto_Update_Revisited.aspxにある自動更新プロジェクトに触発されました。

  2. フォーム/コンソール アプリケーションが関連付けられていない限り、ClickOnce はクラス ライブラリで動作しないようです。

  3. 上記のユーザー状態ファイルを上書きせずに、新しい MSI をダウンロードして古い MSI を受動的に上書きできるかどうかは不明です。

では、上記の条件下で MSI と共にインストールされた dll を更新する方法はありますか?

ありがとう。

4

1 に答える 1

0

クラス ライブラリが 2 つの .dll で構成されている場合、たとえばライブラリ A とライブラリ B とします。

ライブラリ A はインターフェイスをサードパーティ アプリに公開しますが、実際のロジックはライブラリ B に任せます。ライブラリ A が読み込まれるたびに、まず新しいバージョンをオンラインでチェックし、利用可能な場合はダウンロードすることで、ライブラリ B を読み込みます。MSI は、理論的にはライブラリ A のみをインストールし、実行時にライブラリ B がダウンロードされることを期待できます。(ただし、インターネット接続がダウンした場合に備えて、両方を含めることをお勧めします)

于 2011-04-21T20:27:24.560 に答える