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
- Zip dosyasını ExeTup'a yükleyin. Ana program olarak
MyApp.exedosyasını seçer. - Adı,
--app-versionile verdiğiniz sürümün aynısını ve yayıncı adınızı girin. - 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.
- 64 bit seçeneğini koruyun; jpackage JDK'nın mimarisi için derler ve bu neredeyse her makinede x64'tür.
app.icodosyası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.
jlinktarzı modül kırpma otomatik olarak yapılır;--jlink-options --strip-debugve--jlink-options --no-man-pagesbiraz 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/veruntime/klasörlerini yerinde değiştirir. - Launch4j ve benzerleri bir JAR'ı
.exeiç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.exedosyasını zip'lemeden önce, indirilenSetup.exedosyası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
- Windows uygulamanız için Setup.exe nasıl yapılır (kodsuz)Setup.exe aslında ne yapar, nasıl hazırlanır ve kurulum betiği yazmadan uygulama klasörünüzü dakikalar içinde profesyonel bir kurulum programına nasıl dönüştürürsünüz.
- Bir .exe dosyasını Windows yükleyicisine dönüştürme (exe'den Setup.exe'ye)Tek bir .exe dosyasını ya da içinde .exe bulunan bir klasörü, yükleyici betiği yazmadan, kısayolları ve kaldırıcısı olan gerçek bir Windows yükleyicisine nasıl dönüştürürsünüz.
- .NET uygulaması için Windows yükleyici oluşturma (WPF, WinForms, konsol)Bir .NET masaüstü uygulamasını dotnet publish ile yayımlayın, framework'e bağımlı ile kendi içinde yeterli arasında seçim yapın ve publish klasörünü kısayollar ve kaldırıcı içeren bir Setup.exe'ye dönüştürün.