私はカスタム自動アップデーターを作成しましたが、基本的には次のように機能します。
アプリケーション全体は、基本的に3つの部分で構成されています。
- 本質的にブートストラッパーのようなランチャー.exe
- ランチャー.exeには、ランチャー.exe自体を更新する必要がある場合に使用される.exeリソースが埋め込まれています。
- アプリケーションdllの
アプリケーションを起動すると、ランチャーアプリが起動し、Webサービスを介してdllが最新であるかどうかを確認します。そうでない場合は、一時ディレクトリにダウンロードしてから、チェックサムがすべて正しいことを確認し、既存のアプリライブラリを新しいもので上書きします。次に、アプリケーションのコアアセンブリをロードし、リフレクションを介して「Run」メソッドを呼び出します。
現在、このアプリでは、ランチャー自体を更新する必要がある場合があります。これを実現する方法は、ランチャーの.exeリソースに.exeを埋め込むことです。ランチャーは、使用可能な新しいランチャー.exeがあることを検出すると、それを一時ディレクトリにダウンロードし、.exeを抽出して起動します。この抽出された.exeは、ランチャープロセスをシャットダウンし、新しいランチャー.exeを古いものにコピーしてから、ランチャープロセスを再開します。