追加案: スキンのインストール機能

Issue #660 resolved
k4nagatsuki repo owner created an issue

シナリオのように、スキンをドラッグ&ドロップしてインストールできれば便利そうです。

圧縮ファイルからもインストールできた方がいいでしょう。

Comments (5)

  1. k4nagatsuki reporter

    いくつか課題があります。

    • スキンの上書き判定をどうするか。シナリオと同様、名前と作者名で判定してよさそうに思えます。
    • 配布されているスキンを見ると、差分だけ配布し、他のスキンに上書きしてください、というものが結構な割合であるようです。この需要をカバーするために<Base><Name>Classic</Name><Author></Author></Base>のようなパラメータを設け、Baseで指定されたスキンをコピーしてから上書きするような動作を用意した方がよさそうにも思えます。
    • どちらかといえば複数のスキンを同時にインストールできた方がいいでしょう。シナリオインストールに似たインタフェースを作る必要があります。
  2. k4nagatsuki reporter

    pull request #2279

    追加しました。スキンに以下の情報を追加する事で既存スキンとの差分配布に対応します。ベースとなるスキンはNameAuthorに基づいて探索しますが、Typeが指定された場合はそれも一致するか調べます(指定しなかった場合はタイプ検査は無し)。

    <Property>
        ...
        <BaseSkin>
          <Name>Classic</Name>
          <Author></Author>
          <Type>MedievalFantasy</Type>
        </BaseSkin>
    </Property>
    

    いくつか問題が残っています。

    • インストール済みのスキンを置換する時、正しいパスを指定しているにもかかわらずSHFileOperation0x7Cを返して失敗し、既存のスキンが削除できない事があります。困った事に確実に再現するわけではありません。ファイルIOの問題か、どこかでメモリアクセス違反を起こしていて不定値を参照しているのか不明です。さしあたりSkin.xmlSkin.xml_removedに改名してスキンリストから消し、後から削除する事で対処しています。
    • 思ったより処理に時間がかかります。処理中の表示はもう少しよくしたいのですが、最終的な処理量を測るのが難しいので今のような表示にしています。
    • 他の起動で参照されているスキンが削除される事がありますが、これはシナリオの移動など共々プロセス間でなんらかのやり取りをしないと対処できません。今は難しいです。この問題はエクスプローラなどでスキンを移動/削除した時にも発生するので、スキンが削除された時にうまくエラーを起こして落ちるといった方針(現状)の方がよいかと思います。
  3. k4nagatsuki reporter

    pull request #2282

    CWの歴史的な仕様上、Faceのみはユーザ固有のデータフォルダのように振る舞うので、置換時にその内容を取っておくようにしました。

  4. k4nagatsuki reporter

    pull request #2284

    常にプログレスダイアログを出すように進捗表示を変更しました。

  5. Log in to comment