================================================================
  mz_zipper for Windows  version 1.0
  Mac版ゲームフォルダを配布用zipにまとめるツール
================================================================

■ これは何をするものか

  Windows版のRPGツクールMZでmacOS向けにデプロイメントしたフォルダを、
  Macで正常に起動する配布用zipにまとめます。

  Windowsの標準機能や一般的な圧縮ソフトで固めたzipは、Macで
  「アプリケーション"Game.app"を開けません。」と表示されて起動しません。
  このツールで作ったzipは、そのまま配布できます。


■ 使い方

  配布したいフォルダを mz_zipper_win.exe にドラッグ＆ドロップするだけです。

  フォルダと同じ場所に「フォルダ名.zip」ができます。
  複数のフォルダをまとめてドロップすることもできます。

  ※ 元のフォルダは変更しません。

  ドロップするのは「zipを展開したときに出てきてほしいフォルダ」です。
  Game.app と、一緒に配りたいファイルをまとめておいてください。

    配布したいフォルダ/
      ├── Game.app
      └── 起動できない場合.html      ← 同梱を強くおすすめします（後述）


■ 配布前にやっておくとよいこと

  ● 説明用のHTMLを同梱する（強く推奨）

    後述のとおり、このツールを使っても、ダウンロードした方の環境で
    ひと手間が必要になります。Game.app と同じ階層に説明用のHTMLを
    置いてから圧縮してください。

  ● package.json の名前を変える（任意）

    Game.app/Contents/Resources/app.nw/package.json を開くと、
    名前が rmmz-game になっています。

        {
            "name": "rmmz-game",      ← 全作品共通の初期値
            "main": "index.html",

    この名前は、プレイヤーのMac上でキャッシュの保存先を決めるのに
    使われます。初期値のままだと、すべてのツクールMZ製ゲームが
    ひとつのフォルダを共有してしまい、プレイヤーが別のゲームを
    遊んだ影響で、あなたのゲームが
    「nwjsが予期しない理由で終了しました。」と出て起動しなく
    なることがあります。

    ゲーム固有の名前（半角英数字とハイフン）に変えておくと防げます。
    Windowsのテキストエディタで書き換えられます。


■ このツールで解決できないこと（配布時にご注意ください）

  macOSは、インターネットからダウンロードしたファイルに「隔離属性」を
  自動的に付けます。これは Mac 側でダウンロードするたびに付き直すため、
  配布する側で事前に取り除いておくことはできません。

  また、ツクールMZが書き出すアプリには、Appleの署名がありません。

  この2つの事情から、ダウンロードした方の環境では次の操作が必要です。

    ・Game.app を右クリックして「開く」を選ぶ（初回のみ）
    ・「"Game.app"は壊れているため開けません。」と表示される場合は、
      ターミナルで xattr -cr コマンドを実行する

  これはツール側では解決できません。そのため、Game.app と同じ階層に
  説明用のHTMLを置いて一緒に圧縮しておくことを強くおすすめします。
  問い合わせを減らせます。


■ 動作環境

  Windows（.exe版はPythonのインストール不要）
  ソース版を使う場合は Python 3.8 以降


■ なぜ普通の圧縮ではだめなのか

  macOSのアプリを動かすには、次の2つの情報が必要です。

    ・実行権限（このファイルは実行してよい、という印）
    ・シンボリックリンク（別の場所を指し示すファイル）

  Windowsのファイルシステムは、このどちらも保存できません。
  そのためツクールMZがMac用のファイルを書き出した時点で、
  情報はすでに失われています。圧縮ソフトを変えても直りません。

  ただしzipファイル自体は、この2つを記録できる仕様になっています。
  このツールはファイルの中身から必要な情報を判断し、zipに直接
  書き込むことで、Windows上でも正しいzipを作ります。

    ・実行ファイルかどうか … ファイル先頭の4バイトで判定
    ・シンボリックリンクか … 中身がパス文字列で、指す先が実在するか

  実行結果に表示される「シンボリックリンク : N 個」「実行ファイル : N 個」
  が 0 個だった場合は、Mac用に書き出されたフォルダか確認してください。


■ ウイルス対策ソフトの警告について

  同梱の .exe は、PyInstaller というツールでPythonのプログラムを
  実行ファイルに変換したものです。この形式の実行ファイルは、
  ウイルス対策ソフトやWindowsのSmartScreenに誤検知されることがあります。
  ウイルスではありません。

  ・「WindowsによってPCが保護されました」と表示された場合
      「詳細情報」→「実行」で起動できます。

  ・ウイルス対策ソフトがブロックする場合
      誤検知です。除外設定を行うか、下記のソース版をお使いください。

  ソースコード（mz_zipper_win.py）を同梱しています。テキストファイルなので
  中身をそのまま確認できます。Python 3 をインストールすれば、
  .exe を使わずに次のように実行できます。

      py mz_zipper_win.py

  外部ライブラリは一切使っていません。


■ .exe の作り方（ソースから自分でビルドする場合）

  ※ Windows上でのみビルドできます。
     Mac上でWindows用の.exeを作ることはできません。

  1. Python 3 をインストールする

       https://www.python.org/downloads/

     インストーラの「Add python.exe to PATH」に必ずチェックを入れてください。
     （デフォルトはオフです。忘れるとコマンドが認識されません）

     ※ Microsoft Store版のPythonは避け、python.org版を使ってください。

  2. インストール後、PowerShellを開き直す

     PATHは起動時に読み込まれるため、開いたままでは反映されません。

  3. Cドライブに作業フォルダを作ってコピーする

       mkdir C:\build
       copy mz_zipper_win.py C:\build\
       cd C:\build

     共有フォルダやネットワークドライブ（\\Mac\Home\... など）の上では
     ビルドが失敗することがあります。必ずローカルドライブで行ってください。

  4. PyInstaller を入れる

       py -m pip install pyinstaller

  5. ビルドする

       py -m PyInstaller --onefile --noupx --name mz_zipper_win mz_zipper_win.py

     C:\build\dist\mz_zipper_win.exe ができます。

  ● 「pip は認識されません」「pyinstaller は認識されません」と出る場合

     PATHが通っていないだけです。上記のように py -m を付けて
     実行してください。py はPythonに付属するランチャーで、
     PATHの設定に関係なく動きます。

     PyInstaller は大文字・小文字もこのとおりに入力してください
     （大文字のPとI）。モジュール名なので、小文字だと見つかりません。

  ● --noupx を付けている理由

     UPXという圧縮機能がウイルス誤検知の原因になりやすいため、
     無効にしています。


■ ライセンス

  自由に使用・改変・再配布して構いません。
