مثبّت Windows لتطبيق Java، من jpackage إلى Setup.exe
استخدم jpackage لتجميع ملف JAR مع بيئة تشغيل Java في مجلد يحتوي على ملف .exe أصلي، ثم حوّل هذا المجلد إلى مثبّت Windows دون الحاجة إلى حزمة أدوات WiX.
آخر تحديث 31 أكتوبر 2026 · 3 دقائق قراءة
«ثبّت Java أولًا» ليست عبارة تودّ قولها لعملائك. منذ JDK 14، يحلّ jpackage نصف المشكلة: فهو يجمّع تطبيقك مع بيئة تشغيل Java مقلّصة ويمنحه ملف MyApp.exe أصليًا. أما النصف الآخر، أي مثبّت Windows، فهو حيث يطلب منك jpackage تثبيت حزمة أدوات WiX وتعلّم خصوصياتها. يأخذ هذا الدليل المجلد الذي ينتجه jpackage ويحوّله إلى Setup.exe دون أي شيء من ذلك.
الخطوة 1: بناء صورة التطبيق
ضع ملف JAR القابل للتشغيل وملفات JAR التابعة له في مجلد واحد (lib/ في المثال أدناه)، ثم شغّل jpackage على Windows:
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
ينشئ هذا الأمر المجلد MyApp/ الذي يحتوي على:
MyApp.exe، مشغّل أصلي يحمل أيقونتك؛app/، ملفات JAR الخاصة بك وملف إعدادات؛runtime/، بيئة تشغيل Java لا تضم سوى الوحدات التي يحتاجها التطبيق.
لتطبيق JavaFX، أضف --module-path مشيرًا إلى مجلد lib في JavaFX SDK، مع --add-modules javafx.controls,javafx.fxml (عدّلها بحسب الوحدات التي تستخدمها). ولتطبيق معياري، استخدم --module بدلًا من --main-jar.
افتح MyApp\MyApp.exe للتأكد من أن التطبيق يعمل دون وجود Java مثبّتة على النظام. المجلد runtime/ هو ما يجعل ذلك ممكنًا.
يجب تشغيل jpackage على Windows لإنتاج صورة Windows. يصلح لذلك جهاز Windows أو جهاز افتراضي أو مشغّل Windows في نظام التكامل المستمر (CI)؛ راجع البناء على جهاز Mac للاطلاع على الخيارات.
الخطوة 2: ضغط الصورة
اضغط محتويات MyApp/ في ملف zip: MyApp.exe وapp/ وruntime/. حافظ على البنية؛ فالمشغّل يتوقع وجود app/ وruntime/ بجانبه.
الخطوة 3: بناء المثبّت
- ارفع ملف zip إلى ExeTup. سيختار
MyApp.exeبرنامجًا رئيسيًا. - أدخل الاسم، والإصدار نفسه الذي مرّرته إلى
--app-version، واسم الناشر. - اختر جميع المستخدمين (Program Files، مع مطالبة بصلاحيات المسؤول) أو المستخدم الحالي (دون مطالبة). تطبيقات Java المؤسسية الموزّعة على الموظفين تُثبَّت غالبًا لكل مستخدم؛ أما تطبيقات المستهلكين فعادةً لكل جهاز.
- أبقِ على 64 بت؛ فـ jpackage يبني وفق معمارية JDK، وهي x64 على كل الأجهزة تقريبًا.
- ارفع
app.ico، وفعّل الاختصارات، ثم ابدأ البناء.
النتيجة مثبّت Windows يضع صورة التطبيق في مكانها مع إدخال في قائمة ابدأ وبرنامج إلغاء تثبيت. لن يرى العملاء Java أبدًا.
لماذا لا ندع jpackage ينشئ المثبّت؟
ينتج jpackage --type exe أو --type msi مثبّتًا فعلًا، وهو كافٍ لبعض الفرق. لكنه يتطلب تثبيت WiX Toolset 3 وإضافته إلى PATH، ويقدّم معالجًا ثابتًا بخيارات محدودة، كما أن سلوك برنامج إلغاء التثبيت والاختصارات فيه يشوبه بعض الخشونة التي يصعب تغييرها دون التعمّق في WiX. استخدام app-image مع مثبّت منفصل يفصل بين المهمتين: يتولى jpackage تجميع بيئة التشغيل وهو ما يجيده، ويتولى المثبّت التكامل مع Windows.
ملاحظات خاصة بـ Java
- حجم بيئة التشغيل. تتراوح بيئة التشغيل المقلّصة بين 40 و80 ميغابايت. يجري تقليص الوحدات على طريقة
jlinkتلقائيًا؛ ويقلّص الخياران--jlink-options --strip-debugو--jlink-options --no-man-pagesقليلًا أكثر. - خيارات Java. مرّر رايات JVM باستخدام
--java-options "-Xmx1g"عند بناء الصورة؛ فهي تُدمج في إعدادات المشغّل. - التحديثات. وزّع مثبّتًا جديدًا بإصدار أعلى. التثبيت فوق الإصدار السابق يستبدل
app/وruntime/في مكانهما. - Launch4j وما شابهه يغلّف ملف JAR داخل
.exeلكنه لا يضمّن بيئة تشغيل افتراضيًا، ولذلك لا يلغي خطوة «تثبيت Java». أما jpackage فيلغيها. - التوقيع. وقّع
MyApp.exeقبل الضغط، ووقّعSetup.exeالذي نزّلته بعد ذلك؛ راجع دليل SmartScreen.
الأسئلة الشائعة
هل يحتاج العملاء إلى تثبيت Java؟
لا. المجلد runtime/ الذي ينشئه jpackage يحتوي على كل ما يحتاجه التطبيق، والمثبّت يوزّعه مع التطبيق.
هل يمكنني تثبيت التطبيق دون حزمة أدوات WiX؟
نعم. لا يلزم WiX إلا لنوعي exe وmsi الخاصين بـ jpackage. ابنِ app-image بدلًا من ذلك واستخدم ExeTup لإنشاء المثبّت.
هل يعمل هذا مع JavaFX؟
نعم. أدرج وحدات JavaFX عند بناء الصورة، واختبر MyApp.exe، ثم حزّم المجلد كما هو موضح أعلاه.
هل يمكنني تضمين JDK مختلف مثل Temurin؟
يستخدم jpackage لبيئة التشغيل الـ JDK الذي يعمل منه. شغّله من الـ JDK الذي تريد توزيعه، أو مرّر --runtime-image مع بيئة تشغيل بنيتها باستخدام jlink.
أدلة ذات صلة
- كيف تصنع ملف Setup.exe لتطبيق Windows (بدون برمجة)ما الذي يفعله ملف Setup.exe فعلاً، والطرق الثلاث لصنعه، وكيف تحوّل مجلد تطبيقك إلى مثبّت احترافي خلال دقائق دون كتابة أي سكربت تثبيت.
- تحويل ملف .exe إلى مثبّت Windows (من exe إلى Setup.exe)كيف تحوّل ملف .exe عاديًا، أو مجلدًا يحتوي على ملف .exe، إلى مثبّت Windows حقيقي مع اختصارات وبرنامج إلغاء تثبيت، دون كتابة أي سكربت تثبيت.
- إنشاء مثبّت Windows لتطبيق .NET (WPF وWinForms وسطر الأوامر)انشر تطبيق .NET المكتبي باستخدام dotnet publish، واختر بين الاعتماد على إطار العمل والنشر المستقل، ثم حوّل مجلد النشر إلى Setup.exe مع اختصارات وأداة إلغاء تثبيت.