Googleは、Googleで使用されている自動更新メカニズムをオープンソース化していますChrome as Omaha 。
Google以外のユーザーにとっては、設定が非常に複雑で難しいようです。プロジェクトでオマハを使用した経験は何ですか?おすすめできますか?
製品にはオマハを使用しています。最初は、ハードコードされたURLと文字列を変更するかなりの作業がありました。また、サーバーはオープンソースではありませんが、プロトコルは十分に文書化されているため、Google App Engineを使用して互換性のあるサーバーを作成することは難しくありませんでした。
以前のクライアントアップデートソリューションを廃止し、オマハに移行したことについて後悔はありません。
おそらく、 Google Chrome で使用される更新メカニズムである courgette algorithm を活用できます。それは本当に使いやすく、インフラストラクチャに適用できます。現在、Windowsオペレーティングシステムでのみ機能します。 ChromeのWindowsユーザーは、チャンクを合計サイズで受信しているMacおよびLinuxユーザーとは異なり、小さなチャンクで更新を受信します。
ソースコードは hereChromium SVNリポジトリにあります。これは、ディストリビューション全体を常に送信する代わりに、Googleに小さな更新を適用するための圧縮アルゴリズムですChrome。10 MB全体をユーザーにプッシュするのではなく、変更。
ズッキーニの仕組みの詳細については、 ここ とそれに関する公式ブログの投稿 ここ を参照してください。
それはこのように動作します:
server: hint = make_hint(original, update) guess = make_guess(original, hint) diff = bsdiff(concat(original, guess), update) transmit hint, diff client receive hint, diff guess = make_guess(original, hint) update = bspatch(concat(original, guess), diff)
ソースをチェックアウトすると、それを実行可能ファイルとしてコンパイルでき(Visual Studioで右クリックしてコンパイル)、アプリケーションをその形式でテストに使用できます。
用途:
courgette -dis <executable_file> <binary_Assembly_file>
courgette -asm <binary_Assembly_file> <executable_file>
courgette -disadj <executable_file> <reference> <binary_Assembly_file>
courgette -gen <v1> <v2> <patch>
courgette -apply <v1> <patch> <v2>
または、それをアプリケーションに組み込んで、そこから更新を行うこともできます。定期的にチェックし、Courgetteを実行する独自のサービスを作成することで、オマハの自動更新環境を模倣できます。
[〜#〜]更新[〜#〜]
再開
個人的には、独自のソリューションを実装するのではなく、グーグルオマハに行きます。ただし、この内部について説明します。
.NETの世界では、 ClickOnce の展開を確認することをお勧めします。
オマハの設定に数日を費やしたところです。退屈ですが、不可能ではありません。必要な手順を詳細な チュートリアル にまとめました。私は omaha-server をバックエンドに使用しています。本番環境での使用についてはまだコメントできませんが、詳細がわかり次第、この回答を更新します。
自動更新メカニズムは私自身が自分でコーディングするものであり、常に過去のものです。マルチギガバイトのアプリケーションがあり、ビットとピースのみをアップロードしたい場合を除き、独自のコード/インストーラーに依存してください。とは言っても、Googleのオープンソースライブラリはまったく見たことがなく、存在することすら知りませんでした。自分でコーディングできるものより優れたものを提供しているとは想像できません。自分のコードでは、ライセンスの制限に縛られることはありません。