web-dev-qa-db-ja.com

.NET / C#アプリを使用した自動更新の無料ソリューション?

検索から、これは何度も何度も尋ねられていることがわかりますが、十分ではないので、ここに行きます。私は予算のない趣味の開発者です。私が開発しているプログラムには、定期的なバグ修正が必要で、私とユーザーは手動で更新する必要があることにうんざりしています。

私は、FTPを介してテキストファイルを更新する現在のソリューションとWebサイトのダウンロードリンク、そしてユーザーに「更新メッセージがあります」というメッセージが表示され、手動で更新を手動でダウンロードする手間がかかることを期待しています。率直に言って、ひどいです。

「自動更新を実装する予定はありますか?」 「自動更新機能はありますか?」そして、私がたまたま更新プロセスを台無しにすると、熊手が到着し始めます。

過去に私は調べました:

  • WinSparkle -アプリ内アップデートはありません。DLLは500 KBです。現在の解決策は実行可能ファイルに数KBあり、アプリ内アップデートはありません。
  • 。NETアプリケーションアップデートコンポーネント -残念ながら、ドキュメントを理解できません。
  • Eduardo OliveraのAutoUpdate -これは、使用されていないファイルの操作以外はサポートしていないようです。
  • wyUpdate --wyBuildは無料ではありません。また、wyUpdate仕様は利用できますが、複雑すぎて時間がかかりすぎて処理できません。
  • AppLife Update -最後の文をご覧ください。
  • ClickOnce -起動時に起動を実装するための回避策は、大規模で恐ろしいものであり、このような単純な機能には価値がありません。出版は苦痛です。 FrontPage Extensionsのないサーバーでは、手動FTPおよびすべてのファイルの置換が必要です。

Sparkle のようなMac OS Xの本当に素晴らしくシンプルな実装を持っている場合、Windowsの状況がこのようになるのは非常に残念です。

41
unrelativity

これは何年も前に更新されているはずです。

しかしとにかく、私はしばらくの間 SparkleDotNET を使用していて、それは絶対に素晴らしく働いています。あちこちにいくつかの小さなバグがありますが、私はそれらのいくつかをつぶすのを手伝っています。うまくいけば、他のバグも取り除くことができるでしょう:)

Visual Studioの発行機能を実行する時間があり、アプリが比較的自己完結型であり、起動時に起動するなどの必要がない場合は、ClickOnceをお勧めします。 MetroTwit はそれを使用しており、Niceアプリ内アップデーターインターフェイスを備えているため、柔軟性があります(少なくともある程度)。起動時に起動する場合、それを行うのは可能ですが、そのためのメソッドはかなりハックであり、うまく機能しません。

7
unrelativity

自分で実装してください!楽しいですよ。更新ロジックのみを含む別のアプリケーションを作成します。つまり、ファイルをオンラインでフェッチしてダウンロードし、ローカルファイルを置き換えて、ユーザーに視覚的に表示します。

したがって、メインアプリケーションは更新をチェックでき、更新が存在する場合は、更新の可能性をユーザーに促します。ユーザーが必要に応じて、更新プログラムを実行し、それ自体を閉じて(更新が発生するように)、prestoします。

必要なものは、C#、FTPアクセス、およびIOですぐに利用できるものだけです。

編集:それほど簡単なことではないことはわかっていますが、学ぶ絶好のチャンスです。

  • Ftp、httpなどに拡張できる抽象化された方法でファイルを(適切に)ダウンロードする方法.
  • 多くのファイルに対して(適切に)単純なタスクを実行する方法-ファイルのコピーまたは上書き(これはエラー処理を意味します)。
  • ソフトウェアの一部を階層化してカプセル化する練習をします(「適切な」方法がないため)。
  • 連携していないOS /その他のソフトウェア(アンチウイルス/ファイアウォールなど)の扱い方。

これらはすべて私たち全員がよく知る必要があることです-アップデーターのコーディングに数週間かかる場合は、数週間の学習が必要だったことを意味します。学ぶ必要がない場合は、スキルを磨く時間です!必要かどうかわからない場合は、時間をかけて調べてください。 :)

注:私は知っています私は知っていますより良いファイルとネットワークI/Oを学ぶ必要があります

19
Camilo Martin

Autoupdater.NETは codeplex から試すことができます。私はそれを自分で開発し、アプリケーションで非常にうまく機能します。コードに1行追加するだけで完了です。また、オープンソースであるため、必要に応じて変更して使用できます。

3
Ravi Patel

外部アプリケーションを開発することはできませんが、アプリケーションのモジュールとして実装することもできます。 namespace Updateに移動し、動的アセンブリビルダーを使用してexeを生成し、起動してアプリmainを終了し、更新が終了したら再度起動します。

もう少し 情報

1
abatishchev

DDay update もあります。これはオープンソースであり、私の顧客の1人が使用しています。私たち/彼らは主にWindowsサービスのコンテキストでそれに興味を持っています。それはそのためにかなりうまく機能します。

1
Yaur