JA

jumphp2installer:あなたのソフトウェアのインストーラー

jumphp2installer は、ゲームや JumPHP アプリ、どんなソフトウェアにも使える、Windows・macOS・Linux 向けの本物の ネイティブインストーラーを作ります。短く読みやすい YAML スクリプトを書くだけで、ユーザーはファイルを 1 つ ダウンロードするだけです。ウィザード(ようこそ、ライセンス、フォルダー、オプション)を表示し、常に最新バージョンを インストールし、アンインストーラーも追加します。自由なオープンソースです: github.com/davidnurdin/jumphp2installer。

インストールウィザードのようこそページ
ようこそ
同意するライセンス
ライセンス
インストール先フォルダーの選択
フォルダー
オプション:ショートカット
オプション
インストールの完了
完了

できること

  • システムごとに 1 ファイル:My-App-setup.exe(Windows 10・11)、My-App-setup-macos.zip(Apple シリコンと Intel の Mac)、My-App-setup-linux-x86_64。事前のインストールは不要です。
  • 常に最新バージョン:インストーラーは起動時にスクリプトを読みます。1 年前にダウンロードしたインストーラーでも、 今日のバージョンをインストールします。
  • あなたの色のウィザード:名前、アイコン、横の画像、色、ライセンス、文章。コンピューターの言語に合わせて英語か フランス語で表示されます。
  • よく使う手順:ダウンロード(SHA-256 チェック付き)、展開(.zip、.tar.gz)、コピー、ファイルの書き込み、 実行権限の付与、コマンドの実行、ショートカットの作成(デスクトップ、メニュー)。
  • 本物のアンインストーラー:Windows の「アプリ」一覧と Linux のメニューに表示されます。インストールで作られた ものだけを正確に削除し、それ以外には触れません。
  • 管理者権限は不要:すべてユーザー自身のプログラムフォルダーにインストールされます。
  • コマンドラインからも:--silent でウィンドウなしにインストールできます(配布、スクリプト、CI)。

インストールスクリプト

install.yaml ファイルには、インストーラーが表示するもの(pages)と行うこと(steps)を書きます。同じ スクリプトが 3 つのシステムで動きます。違いは変数({folder}、{platform}、{exe}…)と os: キーが吸収します。

app:
  name: My App
  publisher: Me
  website: https://example.jp
  icon: icon.png
  banner: banner.png          # ウィザード左側の画像(172 x 420)
  accent: "#2f6fed"

version:
  github: me/my-app           # GitHub の最新リリースが {version} になる

pages:
  - welcome
  - license: LICENSE.txt
  - folder: "{programs}/{app}"
  - options:
      desktop: デスクトップにショートカット
  - install
  - finish: {run: "{folder}/my-app{exe}"}

steps:
  - download: https://github.com/me/my-app/releases/download/v{version}/my-app-{platform}.zip
  - extract: {strip: 1}
  - executable: "{folder}/my-app"
    os: [linux, macos]
  - shortcut: {target: "{folder}/my-app{exe}", where: desktop}
    if: desktop
  - uninstaller

ページ

ページ 表示する内容
welcome ようこそ文(既定:「{app} {version} のインストールへようこそ」)
license パッケージのファイル。同意しないと先に進めません
folder フォルダー、「参照…」、必要な容量と空き容量。フォルダーが使用中なら警告します
options チェックボックス。手順から再利用されます(if: desktop)
install 進行状況バーと詳細
finish 完了画面。「{app} を起動」チェックボックス付き(run、システムごとに変えられます)

手順

手順
download アドレスまたはパッケージのファイル。ファイルが正しくなければ sha256 がすべてを止めます
extract {folder} に展開。strip: 1 でアーカイブの最上位フォルダーを外します
copy、mkdir、write、delete ファイルとフォルダー(delete はインストール先、ユーザーフォルダー、一時フォルダーの中だけ)
executable ファイルに実行権限を付けます(Linux、macOS)
shortcut desktop、menu、both:Windows は .lnk、Linux は .desktop、macOS はリンク
run フォルダー内でコマンドを実行します
uninstaller アンインストーラーを置き、システムに登録します

どの手順も if:(チェックされたオプション、または "!option")、os:(windows、macos、linux)、label: を 受け付けます。

バージョン

書き方 {version}
version: 1.4.0 固定
version: {github: me/my-app} リポジトリの最新リリース(そのタグから v を除いたもの)
version: {latest: https://…/latest.json} アドレスの応答:{"version": "1.4.0"} またはテキスト

変数

変数 Windows Linux macOS
{programs} %LOCALAPPDATA%\Programs ~/.local/opt ~/Applications
{desktop}、{menu} デスクトップ、スタートメニュー デスクトップ、~/.local/share/applications ~/Desktop
{platform} windows-x86_64 linux-x86_64 macos-arm64 / macos-x86_64
{exe} .exe (空) (空)
{folder}、{app}、{version}、{home}、{temp}、{os}、{arch}、{download}

完全なリファレンスは docs/installer/script.md にあります。

公開する 3 つの方法

1. jumphp.net で、何もインストールせずに

スタジオで「新しいインストーラー」を押すとエディターが開きます:

  • YAML スクリプトは入力中にチェックされます(エラーごとに行番号付き);
  • 横でウィザードのプレビューが更新されます;
  • 画像、ライセンス、パッケージの小さなファイルをドロップします。

公開すると、インストーラーにダウンロードページと、システムごとの 3 つのリンクができます。公開するまでは、あなただけが 試せます。

2. GitHub のリリースで、サーバーなしで

パッケージ(install.yaml とそのファイル)とインストーラーを、リポジトリの各リリースに添付します。インストーラーは 最新のリリースを読むので、バージョンごとに変更する必要はありません。リリースのたびにワークフローが行います:

# .github/workflows/installer.yml
on:
  release:
    types: [published]
jobs:
  installer:
    uses: davidnurdin/jumphp2installer/.github/workflows/package.yml@main
    with:
      folder: installer        # install.yaml とそのファイル
    permissions:
      contents: write

jumphp2installer のクローンから手動でも行えます: tools/github-release.sh me/my-app installer。リンクは https://github.com/me/my-app/releases/latest/download/My-App-setup.exe です。

リポジトリが複数の製品をリリースしている場合(ある製品は v*、別の製品は ide-v* のタグ)、「最新リリース」が別の 製品のものになることがあります。その場合はリポジトリのファイルからパッケージを配信してください (https://raw.githubusercontent.com/…/installer/、横に version.json)。JumPHP IDE はこの方法です。

3. 自分のサーバーで

jumphp2installer のサーバーは Docker 上の Symfony + MariaDB アプリです(リポジトリの server/):アカウント、 エディター、プレビュー、ダウンロードページ、統計。docker compose up -d 1 回で起動します。単純な静的 Web ページも サーバーになれます(install.yaml とそのファイルを置いたフォルダー):

php tools/package-release.php my-package/ https://my-site.jp/installer/ bases/ out/

JumPHP のゲームやアプリの場合

bin/jumphp app:export my-app --windows --macos(ゲームなら export:standalone)でシステムごとに実行ファイルが できます。それをリリースに添付し、 jumphp-app.yaml の例 を使ってください。Claude もできます:「ゲームのインストーラーを作って」と頼んでください(リポジトリに jumphp2installer skill があります)。

コマンドライン

My-App-setup-linux-x86_64 --silent --folder=/opt/my-app --no-option=desktop
My-App-setup.exe --silent
"C:\…\My App\uninstall.exe" --uninstall --silent
jumphp2installer-linux-x86_64 --check --script=install.yaml      # スクリプトをチェック
jumphp2installer-linux-x86_64 --script=install.yaml              # ローカルのスクリプトでウィザードを試す
jumphp2installer-linux-x86_64 --make=My-App-setup.exe --server=github:me/my-app --from=jumphp2installer-windows-x86_64.exe

仕組み

インストーラー自体が JumPHP アプリです:ウィザードは HTML ページ、処理は PHP、そして StaticPHP の単体 PHP。 パッケージのアドレスは実行ファイルの埋め込み php.ini に、サイズを変えずに書き込まれます。そのためサーバーは何も コンパイルせずに、パッケージごとのインストーラーを一瞬で作れます。ダウンロードと展開はフレームごとに少しずつ進むので、 ウィンドウが固まることはありません。各バージョンの前に、GitHub Actions が Linux、Windows、2 台の Mac(Apple シリコンと Intel)で実際に試します:インストール、ショートカット、アンインストール項目、そしてアンインストール。

制限

  • インストーラーは署名されていません:Windows SmartScreen と macOS Gatekeeper が初回に警告します(Mac では 右クリック › 開く)。
  • ユーザー単位のインストールのみ(Program Files、サービス、ファイルの関連付けはなし)。
  • Linux ARM と携帯電話には未対応。
  • Windows では長いパスで起動してください。8.3 形式の短い名前(C:\Users\RUNNER~1\…)は使えません。