jumphp2installer: yazılımınız için bir kurulum programı
jumphp2installer, oyununuz, JumPHP uygulamanız ya da herhangi bir yazılım için Windows, macOS ve Linux'a gerçek yerel kurulum programları üretir. Kısa ve okunaklı bir YAML betiği yazarsınız; kullanıcılarınız tek bir dosya indirir. Bu dosya bir sihirbaz gösterir (karşılama, lisans, klasör, seçenekler), her zaman en yeni sürümü kurar ve bir kaldırma programı ekler. Özgür ve açık kaynaklıdır: github.com/davidnurdin/jumphp2installer.





Ne yapar
- Her sistem için bir dosya:
Uygulamam-setup.exe(Windows 10 ve 11),Uygulamam-setup-macos.zip(Apple silicon ve Intel Mac'ler),Uygulamam-setup-linux-x86_64. Önceden hiçbir şey kurmak gerekmez. - Her zaman en yeni sürüm: kurulum programı betiğinizi açılışta okur. Yani bir yıl önce indirilmiş bir kurulum programı bugünkü sürümü kurar.
- Sizin renklerinizde bir sihirbaz: adınız, simgeniz, yandaki resminiz, renginiz, lisansınız ve metinleriniz. Bilgisayarın diline göre İngilizce ya da Fransızca.
- Alışılmış adımlar: indirme (SHA-256 denetimiyle), açma (
.zip,.tar.gz), kopyalama, dosya yazma, çalıştırılabilir yapma, komut çalıştırma, kısayol oluşturma (masaüstü, menü). - Gerçek bir kaldırma programı: Windows'un "Uygulamalar" listesinde ve Linux menüsünde görünür. Kurulumun oluşturduğunu tam olarak kaldırır, başka hiçbir şeyi değil.
- Yönetici hakkı olmadan: her şey kullanıcı için, kendi program klasörüne kurulur.
- Komut satırından da:
--silentpencere açmadan kurar (dağıtımlar, betikler, CI).
Kurulum betiği
Bir install.yaml dosyası, kurulum programının neyi gösterdiğini (pages) ve ne yaptığını (steps) söyler.
Aynı betik üç sistemde de çalışır: değişkenler ({folder}, {platform}, {exe}…) ve os: anahtarı farkları
halleder.
app:
name: Uygulamam
publisher: Ben
website: https://ornek.com.tr
icon: icon.png
banner: banner.png # sihirbazın solundaki resim (172 x 420)
accent: "#2f6fed"
version:
github: ben/uygulamam # en yeni GitHub sürümü {version} değerini verir
pages:
- welcome
- license: LICENSE.txt
- folder: "{programs}/{app}"
- options:
desktop: Masaüstünde bir kısayol
- install
- finish: {run: "{folder}/uygulamam{exe}"}
steps:
- download: https://github.com/ben/uygulamam/releases/download/v{version}/uygulamam-{platform}.zip
- extract: {strip: 1}
- executable: "{folder}/uygulamam"
os: [linux, macos]
- shortcut: {target: "{folder}/uygulamam{exe}", where: desktop}
if: desktop
- uninstaller
Sayfalar
| Sayfa | Ne gösterir |
|---|---|
welcome |
bir karşılama metni (varsayılan: "{app} {version} kurulumuna hoş geldiniz") |
license |
devam etmek için kabul edilmesi gereken bir paket dosyası |
folder |
klasör, "Gözat…" düğmesi, gereken ve boş alan; klasör zaten kullanılıyorsa uyarır |
options |
adımların yeniden kullandığı onay kutuları (if: desktop) |
install |
ilerleme çubuğu ve ayrıntılar |
finish |
son, "{app} uygulamasını başlat" kutusuyla (run, sisteme göre değişebilir) |
Adımlar
| Adım | |
|---|---|
download |
bir adres ya da bir paket dosyası; dosya doğru değilse sha256 her şeyi durdurur |
extract |
{folder} içine açar; strip: 1 arşivin en üst klasörünü atlar |
copy, mkdir, write, delete |
dosyalar ve klasörler (delete yalnızca kurulum klasörüne, kullanıcı klasörüne ve geçici klasöre dokunur) |
executable |
bir dosyayı çalıştırılabilir yapar (Linux, macOS) |
shortcut |
desktop, menu ya da both: Windows'ta .lnk, Linux'ta .desktop, macOS'ta bir bağlantı |
run |
klasörde bir komut çalıştırır |
uninstaller |
kaldırma programını kurar ve sisteme kaydeder |
Her adım if: (işaretli bir seçenek ya da "!seçenek"), os: (windows, macos, linux) ve label: kabul eder.
Sürüm
| Yazım | {version} |
|---|---|
version: 1.4.0 |
sabit |
version: {github: ben/uygulamam} |
deponun en yeni sürümü (etiketi, v olmadan) |
version: {latest: https://…/latest.json} |
adresin yanıtı: {"version": "1.4.0"} ya da düz metin |
Değişkenler
| Değişken | Windows | Linux | macOS |
|---|---|---|---|
{programs} |
%LOCALAPPDATA%\Programs |
~/.local/opt |
~/Applications |
{desktop}, {menu} |
masaüstü, Başlat menüsü | masaüstü, ~/.local/share/applications |
~/Desktop |
{platform} |
windows-x86_64 |
linux-x86_64 |
macos-arm64 / macos-x86_64 |
{exe} |
.exe |
(boş) | (boş) |
{folder}, {app}, {version}, {home}, {temp}, {os}, {arch}, {download} |
Tam başvuru belgesi: docs/installer/script.md.
Yayımlamanın üç yolu
1. jumphp.net'te, hiçbir şey kurmadan
Stüdyoda "Yeni kurulum programı" bir düzenleyici açar:
- YAML betiği siz yazarken denetlenir (her hata satırıyla birlikte);
- sihirbazın önizlemesi yanda güncellenir;
- resimleri, lisansı ve paketin küçük dosyalarını bırakırsınız.
Yayımladığınızda kurulum programı kendi indirme sayfasını ve her sistem için bir tane olmak üzere üç bağlantısını alır. Yayımlanana kadar onu yalnızca siz deneyebilirsiniz.
2. GitHub sürümlerinde, sunucu olmadan
Paket (install.yaml ve dosyaları) ile kurulum programları deponuzun her sürümüne eklenir. Kurulum programları
en yeni sürümü okur; bu yüzden sürümden sürüme hiçbir şey değiştirmek gerekmez. Bir workflow bunu her sürümde
yapar:
# .github/workflows/installer.yml
on:
release:
types: [published]
jobs:
installer:
uses: davidnurdin/jumphp2installer/.github/workflows/package.yml@main
with:
folder: installer # install.yaml ve dosyaları
permissions:
contents: write
Elle de yapabilirsiniz, jumphp2installer'ın bir klonundan:
tools/github-release.sh ben/uygulamam installer. Bağlantılarınız:
https://github.com/ben/uygulamam/releases/latest/download/Uygulamam-setup.exe.
Deponuz birkaç ürün yayımlıyorsa (biri için v*, diğeri için ide-v* etiketleri), "en yeni sürüm" diğer ürüne
ait olabilir. Bu durumda paketi deponun dosyalarından sunun (https://raw.githubusercontent.com/…/installer/),
yanında bir version.json ile. JumPHP IDE böyle yapıyor.
3. Kendi sunucunuzda
jumphp2installer'ın sunucusu Docker içinde bir Symfony + MariaDB uygulamasıdır (depodaki server/): hesaplar,
düzenleyici, önizleme, indirme sayfaları ve istatistikler. Tek bir docker compose up -d onu başlatır. Basit bir
statik web sayfası da sunucu olabilir (install.yaml ve dosyalarını içeren bir klasör):
php tools/package-release.php paketim/ https://sitem.com.tr/kurulum/ bases/ out/
Bir JumPHP oyunu ya da uygulaması için
bin/jumphp app:export uygulamam --windows --macos (oyun için export:standalone) her sistem için bir çalıştırılabilir
dosya üretir. Bunları bir sürüme ekleyin, ardından
jumphp-app.yaml örneğini
kullanın. Claude'unuz bunu bilir: ondan "oyunum için bir kurulum programı yap" diye isteyin (depoda bir
jumphp2installer skill'i var).
Komut satırından
Uygulamam-setup-linux-x86_64 --silent --folder=/opt/uygulamam --no-option=desktop
Uygulamam-setup.exe --silent
"C:\…\Uygulamam\uninstall.exe" --uninstall --silent
jumphp2installer-linux-x86_64 --check --script=install.yaml # bir betiği denetle
jumphp2installer-linux-x86_64 --script=install.yaml # sihirbazı yerel bir betikle dene
jumphp2installer-linux-x86_64 --make=Uygulamam-setup.exe --server=github:ben/uygulamam --from=jumphp2installer-windows-x86_64.exe
Nasıl çalışır
Kurulum programının kendisi de bir JumPHP uygulamasıdır: sihirbaz için bir HTML sayfası, iş için PHP ve StaticPHP'nin bağımsız PHP'si. Paketin adresi, çalıştırılabilir dosyanın gömülü php.ini dosyasına, boyutu değişmeden yazılır. Böylece bir sunucu, hiçbir şey derlemeden, her paket için saniyenin çok küçük bir kesrinde bir kurulum programı üretir. İndirme ve açma her karede biraz ilerler: pencere asla donmaz. Her sürümden önce GitHub Actions kurulum programını Linux, Windows ve iki Mac'te (Apple silicon ve Intel) gerçekten dener: kurulum, kısayollar, kaldırma kaydı, ardından kaldırma.
Sınırlar
- Kurulum programları imzalı değildir: Windows SmartScreen ve macOS Gatekeeper ilk seferde uyarır (Mac'te: sağ tık › Aç).
- Yalnızca kullanıcı için kurulum (Program Files, hizmet ya da dosya ilişkilendirmesi yok).
- Linux ARM ve telefon desteği yok.
- Windows'ta onu uzun yolundan başlatın, asla 8.3 kısa adıyla değil (
C:\Users\RUNNER~1\…).