Windows アプリケーションの「自動更新」システムを実装したいと考えています。現在、プログラムがチェックし、新しいバージョンが利用可能であることをユーザーに通知する「appcast」を半手動で作成しています。(私は インストーラーにNSISを使用しています)。
おそらくMac のSparkleに似た、更新の「自動」部分を処理するために使用できるソフトウェアはあります か? 知っておくべき問題/落とし穴はありますか?
現在、Sparkle の Windows ポートがあります。 http://winsparkle.orgを参照してください。
Sparkle ほどスムーズな解決策はありません (私が知っていることです)。
アプリケーションの展開と更新を簡単に行う手段が必要な場合は、ClickOnceを使用できます。残念ながら、それは柔軟性がなく (たとえば、ユーザーごとではなくマシンごとのインストールではない)、不透明 (展開が実際にどのように機能するかについて影響力と明確性と制御がほとんどない) であり、非標準 (インストールされたアプリを保存するパス) です。は、Windows の他のものとは異なります)。
あなたが求めているものにはるかに近いのは、 WiXのサイド プロジェクトであるClickThroughですが、まだ開発中かどうかはわかりません (開発中の場合は、それについてもっと明確にする必要があります...) — いずれにしても MSI を使用します。 、NSISではありません。
自分で何かを転がすのが一番良いでしょう。Windows 用の Sparkle に似たプロジェクトが見たいと思っていますが、これまでのところ誰も挑戦していないようです。
Google Chrome の自動更新はオマハに基づいています。
http://code.google.com/p/omaha/
彼らの概要には、なぜそれが必要なのかについての素晴らしいセクションがあります:
ブラウザは通常、ユーザーにインストールしないように説得しようとする、技術的で紛らわしく恐ろしい一連のダイアログをユーザーに表示します。次に、ユーザーは、選択する必要のない、または決定する方法を知らない選択肢で満たされたウィザードが表示されました。これらの要因が組み合わさって、ユーザー エクスペリエンスが低下し、アプリのインストール プロセス中に大幅なドロップオフが発生します。
特に Windows Vista/7 (UAC) では、自動更新が面倒な場合があるため、サードパーティのソリューションを使用することをお勧めします。ちなみに、私の会社が使用している製品はAutoUpdate+で、かなりうまく機能しているようです。
.NET については、しばらく前に Microsoft Patterns + Practices がApplication Updater Blockを公開しました。これは (私の考えでは) やや誇張され、過度に設計されていましたが、非常にうまく機能しました。
本質的には、「スタブ ローダー」を使用してマニフェストと Web サービスをチェックし、インストールされているプログラムよりも新しいバージョンのプログラムが利用可能かどうかを確認し、BITS バックグラウンド ダウンローダー テクノロジを使用して、新しいバージョンが利用可能であれば新しいバージョンをダウンロードしました。サーバー。
新しいバージョンがダウンロードされてインストールされると (.NET では、これは関連するフォルダーへの xcopy と同じくらい簡単です)、アプリケーションはマニフェストを更新します。次にプログラムがロードされたときに、新しいバージョンが起動されます。
Patterns + Practices のコードは .NET 固有のものですが、インストール プロセスをバックグラウンドでサイレント モードで実行できる場合は特に、.NET 以外のアプリケーションにコピーできないものはありません。
アプリケーションが .Net で作成されている場合は、 ClickOnceを試すことができます。ただし、この方法を使用してインストール中に管理またはカスタム アクションを実行することは困難です。
wyUpdate は本当にいいですね。ビデオはこちら: http://wyday.com/wybuild/help/automatic-updates/
.NET アプリケーションについては、.NET プログラム用の Sparkle バリアントであるNetSparkleを確認することをお勧めします。これはかなり新しく (2011 年から)、活発に開発されています。