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\…)は使えません。