TR

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.

Kurulum sihirbazının karşılama sayfası
Karşılama
Kabul edilecek lisans
Lisans
Kurulum klasörünün seçimi
Klasör
Seçenekler: kısayollar
Seçenekler
Kurulumun sonu
Bitti

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: --silent pencere 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\…).