ユーザーからの努力なしに自分自身を更新できるアプリケーションが大好きです(Mac用の Sparkle フレームワークを考えてください)。 OSの詳細を気にすることなく、Qtアプリケーションでこれを行うために利用できるコード/ライブラリはありますか?
少なくともWindows、Mac、およびユーザー所有のLinuxバイナリの場合。
Mac版にSparkleを統合し、Linuxの場合に何かをコーディングすることができます(スタンドアロンのユーザー所有のバイナリのみ。プログラムがパッケージ化されている場合は、 distribution パッケージングを台無しにしません)。 Windows側で助けてくれる人を探しますが、それはひどく苦痛です。
OK、それで私はそれを「(プラットフォームに依存しない)方法」と見なしていると思います。ひどすぎる!
これは完全なソリューションではありませんが、自動更新用のパッケージを作成してインストールするためのクロスプラットフォーム(Windows、Mac、Linux)ツールは https://github.com/mendeley/Update-Installerで入手できます。 。このツールは、アップデートの公開やダウンロードを扱いません。
これはQtベースのアプリケーションで使用するために作成されましたが、更新インストーラーを小さくスタンドアロンで構築しやすくするために、インストーラーは標準システムライブラリ(C++ランタイム、Linux/Macではpthreads/libz/libbz2、WindowsではWin32 API)のみを使用します、MacではCocoa、Linuxではフォールバック付きのGTK)。これにより、アプリケーションが依存する可能性のあるQtの新しいバージョンやその他の非システムライブラリを含む更新プログラムの配布が簡単になります。
これを検討する前に、私はお勧めします:
Sparkle
Macの場合、 Google's Omaha
Windowsまたは一般的なインストールフレームワーク(InstallShieldなど)に組み込まれた自動更新システム。 BitRockを試したことはありません。アップデーターの作成に関するその他の注意事項:
恥知らずなプラグイン: Fervor 、Sparkleに触発されたシンプルなマルチプラットフォーム(Qtベース)アプリケーション自動更新プログラム。
恥知らずなプラグイン:これは比較的古い質問ですが、最近作成した「QSimpleUpdater」という名前のライブラリについて言及すると役立つと思いました。新しいバージョンがあるかどうかを通知するだけでなく、変更ログを任意の形式(HTMLやRTFなど)でダウンロードし、ダイアログを使用してアプリケーションから直接更新をダウンロードできます。
Qtプロジェクトに期待できるように、Qtがサポートするすべてのプラットフォームで動作します(Windows、Mac、Linuxでテスト済み)。
リンク:
スクリーンショット:
Sparkleとは少し動作が異なりますが、 BitRock InstallBuilde rには、Qtで記述されたオートアップデートが含まれており、独立して使用できます(免責事項、私は元のBitRock開発者です)。これは商用アプリですが、オープンソースプロジェクトの無料ライセンスがあります。
pdateNode を使用すると、ソフトウェアを更新するすべての可能性が得られます。クロスプラットフォームのQtクライアントを使用しており、オープンソースは無料です!
[〜#〜] update [〜#〜]これについてさらに分析を行ったところ、このソリューションが本当に気に入りました。
長所:
短所:
結論として、このソリューションは非常に新しいため、ここには多くの可能性があると思います。私は間違いなく自分のプロジェクトでそれを使用し、それらからのさらなる楽しみにしています!いいぞ!
ブログの投稿CocoaとQtの混合は、Macプラットフォームの問題を解決する場合があります。
WebUpdateはwxWidgetsで記述されていますが、非常に便利です。しかし、心配しないでください。これは、更新を処理する別のアプリです。統合する手順は非常に簡単です。2つのXMLファイルを記述して、アップデーターを実行するだけです。そして、はい、それはクロスプラットフォームです。
それの利点は、新しいバージョンについての通知とそれをダウンロードするためのリンクをポップアップに提供するだけでなく、必要なすべてを自動的にダウンロードして解凍/インストールすることです。もう1つのことは、カスタマイズ可能なアクションです。
私は、Mac OS X、Linux、およびほとんどすべてのUnixで美しく機能する自動更新ライブラリを開発しました。これにより、ファイルを開いたままファイルのリンクを解除できます。その理由は、ダウンロードしたパッケージを既存のアプリケーションの上に単純に抽出したためです。残念ながら、私はこの機能に依存していたため、Windowsでは開いているファイルのリンクを解除できないため、Windowsで問題が発生しました。
私が見つけることができる唯一の選択肢は、MoveFileExを再起動時の置換フラグと共に使用することですが、それはひどいです。
ただし、アプリケーションの作業ディレクトリの名前を変更しても、Windows 7およびWindows XPでは機能します。まだWindows Vistaを試していません。
プラグインとその作成方法と使用方法を読むことをお勧めします。アプリケーションアーキテクチャがモジュール式で、異なるプラグインに分割されている場合。 Google Auto Updateユーティリティ http://code.google.com/p/omaha/ をご覧ください。これを使います。
Thibault Cuvelierは、更新プログラムを開発するためのチュートリアル(フランス語)を書いています。私は説明がフランス語であることを知っています(そして誰もがフランス語を理解していません)が、これは Google Translate のようなWebトランスレータで読むことができると思います。これにより、クロスプラットフォームのアップデーターが作成されますが、自分で作成する必要があります。
私の知る限り、チュートリアルで説明されているアップデータの唯一の部分は、ファイルのダウンロード部分です。これが役立つ場合は、チュートリアルn updater avec Qtを参照してください。
お役に立てば幸いです。
これは古い質問ですが、回答にSquirrelがありませんBEST SOLUTION、これは私がqt 5.12.4でqtクイックで実行している「my qml app」です。これは他の言語でも実行できます
私はwindowsでこれをやっています、リスのmacバージョンもあります、私はLinuxについて知りません
squirrel --releasify file_name.nupkg
->リリースフォルダーが新しくなりました。アプリやその他のファイルをインストールするsetup.exeファイルがあるはずです。appdir/../update.exe --update http://yourserver.com/upates/
アプリケーションの再起動後、アプリは新しいバージョンで開始する必要があります簡単です。これで、サーバーと自動更新アプリから更新をダウンロードする自動更新アプリができました。詳細については、ドキュメントをご覧ください。
note:iisの場合 https://github.com/Squirrel/OldSquirrelForWindows/issues/205