チケット #26822

自動アップデート機能

登録: 2011-11-26 16:01 最終更新: 2016-04-02 12:06

報告者:
担当者:
(未割り当て)
チケットの種類:
状況:
完了
コンポーネント:
(未割り当て)
マイルストーン:
優先度:
5 - 中
重要度:
7
解決法:
なし
ファイル:
なし

詳細

自動アップデート機能を実装するにあたって、何らかの固定のアドレス(例えばsourceforge.jp/projects/ffftp/update.txtのようなもの)が必要ですが、SourceForge.JPにはそのような広告などの意図しないデータが入らないパスが固定のファイルを作成する機能はあるのでしょうか。 あるとすればそのように利用することは可能でしょうか。

チケットの履歴 (5 件中 3 件表示)

2011-11-26 16:01 更新者: s_kawamoto
  • 新しいチケット "自動アップデート機能" が作成されました
2011-11-29 18:13 更新者: hiromichi-m
コメント

不可能ではないのですが、現状はやや面倒くさいです。選択肢としては

  1. プロジェクトWeb(ホスティング機能)を使う
  2. 文書マネージャ機能を使う
  3. ダウンロードページの直リンクURLを使う

などがあります。1.は一番簡単ですが、急に多数のアクセスがあった場合に捌けない可能性があります。また、ファイルのアップロードはSFTP経由なので、やや更新が面倒くさいかもしれません。

2.はWebからファイルを更新できて楽ですが、文書マネージャ機能自体利用を推奨していないため、今後機能が無くなる可能性があります。

3.は裏技的な使い方ですが、プロジェクトのダウンロードページでファイルを登録すると、そのファイルが自動的にSF.JPのFTPサーバーやミラーサイトにコピーされます。このURLを直で叩くというもので、ネットワーク容量が大きいミラーサーバーを配布に使えるのはメリットですが、仕様変更などで動かなくなる可能性があります。

SF.JP側でもこのような要望は認識していて、何らかの手段を提供することを検討しています。もし近々で実装されるなら、プロジェクトWeb(ホスティング機能)を使うのが無難でしょう。

自動アップデートはいくつかライブラリがあり、どれを使うかによっても対応が変わるので、もし使いたいライブラリがあるようでしたらそれをお知らせいただければ対応を考えたいと思います。

2011-11-29 20:03 更新者: s_kawamoto
コメント

現状だと1.が一番現実的ですね。既に3.はftp.jaist.ac.jp/pub/sourceforge.jp/ffftp/で確認しましたが、ファイル名を固定出来ないようで、他のサーバーの仕様は分かりませんが諦めました。

ZIP版なら本体の書き換え、インストーラ版なら加えてレジストリを一部書き換えるだけなので、まだライブラリの使用は考えていません。ちなみに元のFFFTPは「更新風鐸」を使用しているようですが、今は機能しませんし、通知のみでアップデート機能がありません。 現在想定しているルーチンは以下の通りです。

  1. 特定のURLからファイルを取得
  2. ファイルの情報をもとにFTP経由でZIPをダウンロード
  3. 以下適宜ファイルのハッシュ値を検証
  4. ZIPを特定のフォルダ("インストール先\update"以下など)に解凍
  5. "FFFTP.exe"を終了して"update\FFFTP.exe"をコマンドラインオプションなどで更新モードで起動
  6. 元のファイルを"update"内のファイルで上書き
  7. インストーラ版ならレジストリ内のアンインストーラ用の情報を上書き
  8. "update\FFFTP.exe"を終了して"FFFTP.exe"を起動
  9. "update"を削除

急を要する機能ではありませんので、もう少し様子を見ることにします。 ありがとうございました。

2014-04-19 18:32 更新者: s_kawamoto
  • 重要度5 - 中 から 7 に更新されました
  • マイルストーン(未割り当て) から 1.99リリース に更新されました
コメント

近々自動更新機能を実装したいと考えています。 仕様は次の通りです。

開発側

  1. 更新するファイルを作成
  2. 更新するファイルのファイル名とSHA-512ハッシュのリストファイル"http://ffftp.sourceforge.jp/update/list"を作成
  3. 512ビットの署名と"/update/list"のSHA-512ハッシュを結合したファイルを作成
  4. そのファイルをRSA-4096の秘密鍵で暗号化したファイル"/update/hash"を作成

FFFTP側

  1. "/update/hash"をダウンロード
  2. "/update/hash"をRSA-4096の公開鍵で復号化
  3. 署名が一致するか確認
  4. "/update/list"をダウンロード
  5. "/update/list"のハッシュが一致するか確認
  6. リストに従って更新するファイルをダウンロード
  7. 更新するファイルのハッシュが一致するか確認
  8. 更新するファイルを一時フォルダ(FFFTPで設定したフォルダ、既定で"%TEMP%")に退避
  9. 一時フォルダ内の更新用実行ファイルを管理者権限で起動(恐らくFFFTP.exeにコマンドラインを追加して更新用とする予定)
  10. 更新するファイルを元のフォルダに上書き
  11. 元のフォルダ内の更新用実行ファイルを起動(同様)
  12. 一時フォルダを削除

FFFTP側で設定可能な項目

  • 更新を確認するかどうか
  • 更新を確認する間隔
  • ファイルの更新を行わずに通知のみ受け取る
  • SSL/TLSのルート証明書のみ更新する

未定

  • RSA-4096の秘密鍵を誰が保管するか
  • 複数人の開発者が作業しないと"/update/hash"を作成できないように秘密鍵を多重にするかどうか

セキュリティ上の懸念などのご意見があればお願いいたします。

2016-04-02 12:06 更新者: s_kawamoto
  • 状況オープン から 完了 に更新されました
  • チケット完了時刻2016-04-02 12:06 に更新されました
コメント

1.99にて実装しました。

添付ファイルリスト

添付ファイルはありません

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする