İçeriğe atla

Java uygulaması için Windows yükleyici, jpackage'dan Setup.exe'ye

JAR dosyanızı jpackage ile bir Java çalışma zamanı ve yerel bir .exe içeren klasöre paketleyin, ardından bu klasörü WiX araç seti gerekmeden bir Windows yükleyiciye dönüştürün.

31 Ekim 2026 tarihinde güncellendi · 3 dk okuma

"Önce Java'yı yükleyin" müşterilerinize söylemek isteyeceğiniz bir şey değil. JDK 14'ten beri jpackage sorunun yarısını çözüyor: uygulamanızı küçültülmüş bir Java çalışma zamanıyla birlikte paketliyor ve ona yerel bir MyApp.exe veriyor. Diğer yarısı olan Windows yükleyicide ise jpackage sizden WiX araç setini kurmanızı ve inceliklerini öğrenmenizi istiyor. Bu rehber, jpackage'ın ürettiği klasörü alıp bunların hiçbirine gerek kalmadan bir Setup.exe haline getiriyor.

Adım 1: uygulama imajını oluşturun

Çalıştırılabilir JAR'ı ve bağımlılık JAR'larını tek bir klasöre koyun (aşağıda lib/), ardından Windows'ta jpackage'ı çalıştırın:

jpackage --type app-image --name MyApp --input lib --main-jar myapp.jar --main-class com.example.Main --icon app.ico --app-version 2.4.0

Bu komut şunları içeren MyApp/ klasörünü oluşturur:

  • MyApp.exe, simgenizi taşıyan yerel bir başlatıcı;
  • app/, JAR dosyalarınız ve bir yapılandırma dosyası;
  • runtime/, yalnızca uygulamanın ihtiyaç duyduğu modülleri içeren bir Java çalışma zamanı.

JavaFX uygulaması için JavaFX SDK'nın lib klasörünü gösteren --module-path ile --add-modules javafx.controls,javafx.fxml ekleyin (kullandığınız modüllere göre uyarlayın). Modüler bir uygulama için --main-jar yerine --module kullanın.

Uygulamanın sistemde Java yüklü olmadan başladığını doğrulamak için MyApp\MyApp.exe dosyasını açın. Bunu sağlayan runtime/ klasörüdür.

Windows imajı üretmek için jpackage'ın Windows'ta çalışması gerekir. Bir Windows makinesi, bir sanal makine ya da CI'daki bir Windows runner'ı işinizi görür; seçenekler için Mac'te oluşturma rehberine bakın.

Adım 2: imajı zip'leyin

MyApp/ klasörünün içeriğini zip'leyin: MyApp.exe, app/ ve runtime/. Yapıyı koruyun; başlatıcı app/ ve runtime/ klasörlerini yanında bekler.

Adım 3: yükleyiciyi oluşturun

  1. Zip dosyasını ExeTup'a yükleyin. Ana program olarak MyApp.exe dosyasını seçer.
  2. Adı, --app-version ile verdiğiniz sürümün aynısını ve yayıncı adınızı girin.
  3. Tüm kullanıcılar (Program Files, yönetici istemi) veya geçerli kullanıcı (istem yok) seçeneğini belirleyin. Çalışanlara dağıtılan kurumsal Java uygulamaları genellikle kullanıcı başına, tüketici uygulamaları ise çoğunlukla makine başına kurulur.
  4. 64 bit seçeneğini koruyun; jpackage JDK'nın mimarisi için derler ve bu neredeyse her makinede x64'tür.
  5. app.ico dosyasını yükleyin, kısayolları etkinleştirin ve oluşturun.

Sonuç, uygulama imajını Başlat menüsü girdisi ve kaldırıcıyla birlikte yerine koyan bir Windows yükleyicidir. Müşteriler Java'yı hiç görmez.

Neden yükleyiciyi jpackage'a yaptırmıyoruz?

jpackage --type exe veya --type msi gerçekten bir yükleyici üretir ve bazı ekipler için bu yeterlidir. Ancak WiX Toolset 3'ün kurulu ve PATH içinde olmasını gerektirir, sınırlı seçeneklere sahip sabit bir sihirbaz sunar ve kaldırıcı ile kısayol davranışında WiX'in derinliklerine inmeden değiştirmesi zor pürüzler vardır. app-image ile ayrı bir yükleyici kullanmak iki işi birbirinden ayırır: jpackage iyi olduğu çalışma zamanı paketlemesini yapar, yükleyici de Windows entegrasyonunu üstlenir.

Java'ya özgü notlar

  • Çalışma zamanı boyutu. Küçültülmüş bir çalışma zamanı 40 ila 80 MB'dir. jlink tarzı modül kırpma otomatik olarak yapılır; --jlink-options --strip-debug ve --jlink-options --no-man-pages biraz daha küçültür.
  • Java seçenekleri. JVM bayraklarını imaj oluşturma sırasında --java-options "-Xmx1g" ile verin; başlatıcının yapılandırmasına gömülürler.
  • Güncellemeler. Daha yüksek sürümlü yeni bir yükleyici dağıtın. Önceki sürümün üzerine kurulum app/ ve runtime/ klasörlerini yerinde değiştirir.
  • Launch4j ve benzerleri bir JAR'ı .exe içine sarar ama varsayılan olarak çalışma zamanı eklemez, bu yüzden "Java'yı yükleyin" adımını ortadan kaldırmaz. jpackage kaldırır.
  • İmzalama. MyApp.exe dosyasını zip'lemeden önce, indirilen Setup.exe dosyasını ise sonrasında imzalayın; bkz. SmartScreen rehberi.

Sık sorulan sorular

Müşterilerin Java yüklemesi gerekiyor mu?

Hayır. jpackage'ın oluşturduğu runtime/ klasörü uygulamanın ihtiyaç duyduğu her şeyi içerir ve yükleyici onu uygulamayla birlikte dağıtır.

Uygulamayı WiX araç seti olmadan kurabilir miyim?

Evet. WiX yalnızca jpackage'ın kendi exe ve msi türleri için gereklidir. Bunun yerine bir app-image oluşturun ve yükleyici için ExeTup'ı kullanın.

JavaFX ile çalışır mı?

Evet. İmajı oluştururken JavaFX modüllerini ekleyin, MyApp.exe dosyasını test edin, ardından klasörü yukarıdaki gibi paketleyin.

Temurin gibi farklı bir JDK paketleyebilir miyim?

jpackage, çalışma zamanı için üzerinde çalıştığı JDK'yı kullanır. Dağıtmak istediğiniz JDK'dan çalıştırın ya da jlink ile oluşturduğunuz bir çalışma zamanını --runtime-image ile verin.

İlgili rehberler