任务单 #26822

自動アップデート機能

开放日期: 2011-11-26 16:01 最后更新: 2016-04-02 12:06

报告人:
属主:
(无)
状态:
关闭
组件:
(无)
里程碑:
优先:
5 - Medium
严重性:
7
处理结果:
文件:

Details

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

任务单历史 (3/5 Histories)

2011-11-26 16:01 Updated by: s_kawamoto
  • New Ticket "自動アップデート機能" created
2011-11-29 18:13 Updated by: hiromichi-m
评论

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

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

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

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

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

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

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

2011-11-29 20:03 Updated by: 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 Updated by: s_kawamoto
  • 里程碑 Update from (无) to 1.99リリース
  • 严重性 Update from 5 - Medium to 7
评论

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

開発側

  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 Updated by: s_kawamoto
  • Ticket Close date is changed to 2016-04-02 12:06
  • 状态 Update from 开启 to 关闭
评论

1.99にて実装しました。

Attachment File List

No attachments

编辑

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » 登录名