タスク: アップデート後のシステムファイルの自動整理機能

Issue #443 resolved
k4nagatsuki repo owner created an issue

これまでのCWPyのアップデートでは、存在していたファイルが無くなるという事はありませんでした。そのため、アーカイブを展開して上書きするだけで完全なアップデートができていたのですが、2α2以降はそうもいかなくなります。

  • すでにWSN標準素材のフォルダ移動が起きています。
  • スキンのアップデートであったファイルが消える事があるかもしれません。

ユーザに対して「新しくアーカイブを展開した先にScenarioYadoSettings.xmlを移して……などしてください」というのはいかにも筋が悪いので、不要になったファイルを自動的に整理する機能が必要になります。

今のところ、Data/UpdateInfo.xml<Skin>/UpdateInfo.xmlのような情報ファイルを作って、その中に削除するべきファイルの情報を書いておき、起動時に削除を実行するという方法を考えています。

削除するファイルは1つのフォルダにまとめてゴミ箱に放り込むようにすれば、より安全でしょう。

Comments (7)

  1. ハルキゲニア

    自分のようにスキンの効果音を本体に移動してる場合はどうなんでしょう?

  2. k4nagatsuki reporter

    基本的に移動・削除するファイルを書く事になるので、元々アーカイブに含まれないファイルが消える事はあまり無いはずです。過去に存在したファイルと同名だと消えるかもしれません。それを防ぐために、ファイルのハッシュ値のチェックもするべきですね。ハッシュチェックはファイル差し替えへの対応にも使えます。

    自分で付属ファイルを管理したいという事もあるでしょうから、この機能が動かないようにするオプションもつけた方がよさそうです。

  3. k4nagatsuki reporter

    pull request #1733でData/UpdateInfo.xmlを実装しました。

    スキンでも、Skin.xmlと同じフォルダに同書式のUpdateInfo.xmlを置く事で同様に自動整理が行われます。movetoなどのファイルパスの指定はスキン内の相対パスで行ってください。

  4. k4nagatsuki reporter

    この機能が動かないようにする設定は、普通は触れる事はないはずなので、隠し設定として持つようにしています。

    Settings.xml<AutoUpdateFiles>False</AutoUpdateFiles>という行を追加すると、この機能は動かなくなります。

  5. 暗黒 騎士

    updateinfoがあってBgmAndSoundディレクトリが無い場合に起動できずにエラーが出るようなのですが、 これ構造的にヤバくないです?

      File "cw\update.pyo", line 61, in update_files
      File "shutil.pyo", line 302, in move
      File "shutil.pyo", line 130, in copy2
      File "shutil.pyo", line 83, in copyfile
    IOError: [Errno 2] No such file or directory: u'Data/Materials/Wsn.2/BgmAndSound/l_rain.ogg'
    Traceback (most recent call last):
      File "cw\frame.pyo", line 488, in OnDestroy
    AttributeError: 'NoneType' object has no attribute '_running'
    
  6. k4nagatsuki reporter

    pull request #1743

    構造はやばくないです。単なるバグです。直しました。ご報告ありがとうございます。

  7. Log in to comment