JPACKAGE(1) JDK Commands JPACKAGE(1)

jpackage-openjdk21 - ابزار بسته‌بندی برنامه‌های خودکفای جاوا در قالب بسته‌های نصبی سیستم در OpenJDK 21

jpackage [گزینه‌ها]

گزینه‌ها
گزینه‌های خط فرمان که با فاصله از یکدیگر جدا می‌شوند. بخش گزینه‌های jpackage (JPACKAGE OPTIONS) را ببینید.

ابزار jpackage یک برنامهٔ جاوا و یک ایمیج زمان اجرای جاوا را به عنوان ورودی دریافت کرده و یک ایمیج برنامهٔ جاوا تولید می‌کند که شامل تمام وابستگی‌های لازم است. این ابزار قادر است یک بستهٔ بومی (native) در قالب‌های ویژهٔ هر پلتفرم، مانند exe در ویندوز یا dmg در macOS تولید کند. هر قالب باید روی همان پلتفرمی ساخته شود که قرار است روی آن اجرا شود؛ هیچ پشتیبانی چندپلتفرمی (cross-platform) وجود ندارد. این ابزار دارای گزینه‌هایی است که امکان سفارشی‌سازی برنامه‌های بسته‌بندی‌شده را به روش‌های گوناگون فراهم می‌کند.

@filename
خواندن گزینه‌ها از یک فایل.

از این گزینه می‌توان چندین بار استفاده کرد.

--type یا -t type
نوع بسته‌ای که باید ایجاد شود.

مقادیر معتبر عبارتند از: {"app-image"، "exe"، "msi"، "rpm"، "deb"، "pkg"، "dmg"}

اگر این گزینه مشخص نشود، نوع پیش‌فرض وابسته به پلتفرم ایجاد خواهد شد.

--app-version version
نسخهٔ برنامه و/یا بسته.
--copyright copyright
حق نشر (کپی‌رایت) برنامه.
--description description
توضیحات برنامه.
--help یا -h
چاپ متن راهنمای استفاده همراه با فهرست و شرح هر یک از گزینه‌های معتبر برای پلتفرم جاری در جریان خروجی، و سپس خروج.
--icon path
مسیر آیکون بستهٔ برنامه.

(مسیر مطلق یا نسبی نسبت به دایرکتوری جاری)

--name یا -n name
نام برنامه و/یا بسته.
--dest یا -d destination
مسیری که فایل خروجی تولیدشده در آن قرار می‌گیرد.

(مسیر مطلق یا نسبی نسبت به دایرکتوری جاری).

به‌طور پیش‌فرض دایرکتوری کاری جاری است.

--temp directory
مسیر یک دایرکتوری جدید یا خالی که برای ایجاد فایل‌های موقت استفاده می‌شود.

(مسیر مطلق یا نسبی نسبت به دایرکتوری جاری)

در صورت مشخص شدن، دایرکتوری موقت پس از اتمام کار حذف نخواهد شد و باید به صورت دستی حذف گردد.

در صورت مشخص نشدن، یک دایرکتوری موقت ایجاد شده و پس از اتمام کار حذف می‌شود.

--vendor vendor
سازنده یا ارائه‌دهندهٔ (Vendor) برنامه.
--verbose
فعال‌سازی خروجی با جزئیات کامل (verbose).
--version
چاپ نسخهٔ محصول در جریان خروجی و سپس خروج.

--add-modules module-name [,module-name...]
فهرستی از ماژول‌ها که با کاما (",") از هم جدا شده‌اند تا اضافه شوند.

این فهرست ماژول‌ها، همراه با ماژول اصلی (در صورت تعیین)، به عنوان آرگومان --add-module به jlink ارسال خواهد شد. اگر مشخص نشود، یا فقط ماژول اصلی (در صورتی که --module مشخص شده باشد)، یا مجموعه پیش‌فرض ماژول‌ها (در صورتی که --main-jar مشخص شده باشد) استفاده می‌شود.

از این گزینه می‌توان چندین بار استفاده کرد.

--module-path یا -p module-path [,module-path...]
فهرستی از مسیرها که با File.pathSeparator از یکدیگر جدا شده‌اند.

هر مسیر یا دایرکتوری ماژول‌ها است یا مسیر یک فایل jar ماژولار، و به صورت مطلق یا نسبی نسبت به دایرکتوری جاری می‌باشد.

از این گزینه می‌توان چندین بار استفاده کرد.

--jlink-options options
فهرستی از گزینه‌ها که با فاصله از هم جدا شده‌اند تا به jlink ارسال شوند.

اگر مشخص نشود، به طور پیش‌فرض مقدار "--strip-native-commands --strip-debug --no-man-pages --no-header-files" خواهد بود.

از این گزینه می‌توان چندین بار استفاده کرد.

--runtime-image directory
مسیر ایمیج زمان اجرای از پیش تعریف‌شده که در ایمیج برنامه کپی خواهد شد.

(مسیر مطلق یا نسبی نسبت به دایرکتوری جاری)

اگر --runtime-image مشخص نشود، jpackage دستور jlink را اجرا می‌کند تا با استفاده از گزینه‌های تعیین‌شده در --jlink-options ایمیج زمان اجرا را ایجاد کند.

--input یا -i directory
مسیر دایرکتوری ورودی که حاوی فایل‌های مورد نظر برای بسته‌بندی است.

تمام فایل‌های موجود در دایرکتوری ورودی در ایمیج برنامه بسته‌بندی خواهند شد.

--app-content additional-content[,additional-content...]
فهرستی از مسیرهای فایل‌ها و/یا دایرکتوری‌ها که با کاما از هم جدا شده‌اند تا به بار دادهٔ (payload) برنامه اضافه شوند.

از این گزینه می‌توان بیش از یک بار استفاده کرد.

--add-launcher name=path
نام اجراکننده، و مسیری به یک فایل Properties که حاوی فهرستی از جفت‌های کلید، مقدار است.

(مسیر مطلق یا نسبی نسبت به دایرکتوری جاری)

کلیدهای "module"، "main-jar"، "main-class"، "description"، "arguments"، "java-options"، "app-version"، "icon"، "launcher-as-service"، "win-console"، "win-shortcut"، "win-menu"، "linux-app-category" و "linux-shortcut" قابل استفاده هستند.

این گزینه‌ها به گزینه‌های اصلی خط فرمان اضافه می‌شوند یا برای رونویسی آن‌ها استفاده می‌شوند تا یک اجراکنندهٔ جایگزین اضافی ساخته شود. اجراکنندهٔ اصلی برنامه از روی گزینه‌های خط فرمان ساخته خواهد شد. با استفاده از این گزینه می‌توان اجراکننده‌های جایگزین اضافی ساخت، و از این گزینه می‌توان چندین بار برای ساخت چندین اجراکنندهٔ اضافی استفاده کرد.

--arguments arguments
آرگومان‌های خط فرمان که در صورت عدم ارائه آرگومان به اجراکننده، به کلاس اصلی ارسال می‌شوند.

از این گزینه می‌توان چندین بار استفاده کرد.

--java-options options
گزینه‌هایی که باید به زمان اجرای جاوا ارسال شوند.

از این گزینه می‌توان چندین بار استفاده کرد.

--main-class class-name
نام کامل (Qualified name) کلاس اصلی برنامه برای اجرا.

از این گزینه فقط در صورتی می‌توان استفاده کرد که --main-jar مشخص شده باشد.

--main-jar main-jar
فایل JAR اصلی برنامه؛ حاوی کلاس اصلی (به عنوان مسیری نسبی نسبت به مسیر ورودی مشخص می‌شود).

تنها یکی از گزینه‌های --module یا --main-jar می‌تواند مشخص شود و نه هر دو.

--module یا -m module-name[/main-class]
ماژول اصلی (و به صورت اختیاری کلاس اصلی) برنامه.

این ماژول باید در مسیر ماژول‌ها (module path) قرار داشته باشد.

هنگامی که این گزینه مشخص شود، ماژول اصلی در ایمیج زمان اجرای جاوا پیوند داده خواهد شد. تنها یکی از گزینه‌های --module یا --main-jar می‌تواند مشخص شود و نه هر دو.

--win-console
ایجاد یک اجراکنندهٔ کنسولی برای برنامه؛ باید برای برنامه‌هایی که نیاز به تعاملات کنسولی دارند مشخص شود.

--mac-package-identifier identifier
شناسه‌ای که برنامه را به طور یکتا برای macOS مشخص می‌کند.

به‌طور پیش‌فرض همان نام کلاس اصلی است.

تنها می‌تواند از نویسه‌های حرفی-عددی (A-Z, a-z, 0-9)، خط پیوند (-) و نقطه (.) استفاده کند.

--mac-package-name name
نام برنامه به همان صورتی که در نوار منو (Menu Bar) ظاهر می‌شود.

این نام می‌تواند با نام برنامه متفاوت باشد.

طول این نام باید کمتر از ۱۶ نویسه باشد و برای نمایش در نوار منو و پنجرهٔ اطلاعات (Info) برنامه مناسب باشد. به‌طور پیش‌فرض همان نام برنامه است.

--mac-package-signing-prefix prefix
هنگام امضای بستهٔ برنامه، این مقدار به ابتدای نام تمام مؤلفه‌هایی که نیاز به امضا دارند و فاقد شناسهٔ بستهٔ موجود هستند اضافه می‌شود.
--mac-sign
درخواست برای امضای بسته یا ایمیج از پیش تعریف‌شدهٔ برنامه.
--mac-signing-keychain keychain-name
نام دسته‌کلید (keychain) برای جستجوی هویت امضاکننده.

اگر مشخص نشود، از دسته‌کلیدهای استاندارد استفاده می‌شود.

--mac-signing-key-user-name name
بخش نام تیم یا کاربر در هویت‌های امضای اپل (Apple).
--mac-app-store
نشان می‌دهد که خروجی jpackage برای فروشگاه اپ استور مک (Mac App Store) در نظر گرفته شده است.
--mac-entitlements path
مسیر فایل حاوی مجوزها (entitlements) برای استفاده هنگام امضای فایل‌های اجرایی و کتابخانه‌ها در بسته.
--mac-app-category category
رشته‌ای که برای ساخت LSApplicationCategoryType در plist برنامه استفاده می‌شود.

مقدار پیش‌فرض "utilities" است.

--about-url url
نشانی اینترنتی (URL) صفحهٔ اصلی برنامه.
--app-image directory
محل ایمیج از پیش تعریف‌شدهٔ برنامه که برای ساخت یک بستهٔ قابل نصب (روی همهٔ پلتفرم‌ها) یا برای امضا شدن (روی macOS) استفاده می‌شود.

(مسیر مطلق یا نسبی نسبت به دایرکتوری جاری)

--file-associations path
مسیر یک فایل Properties که حاوی فهرستی از جفت‌های کلید، مقدار است.

(مسیر مطلق یا نسبی نسبت به دایرکتوری جاری)

کلیدهای "extension"، "mime-type"، "icon" و "description" می‌توانند برای توصیف وابستگی فایل (association) استفاده شوند.

از این گزینه می‌توان چندین بار استفاده کرد.

--install-dir path
مسیر مطلق دایرکتوری نصب برنامه (روی macOS یا لینوکس)، یا زیرمسیر نسبی دایرکتوری نصب مانند "Program Files" یا "AppData" (روی ویندوز).
--license-file path
مسیر فایل پروانه (مجوز).

(مسیر مطلق یا نسبی نسبت به دایرکتوری جاری)

--resource-dir path
مسیر بازنویسی منابع jpackage.

(مسیر مطلق یا نسبی نسبت به دایرکتوری جاری)

آیکون‌ها، فایل‌های الگو و سایر منابع jpackage را می‌توان با افزودن منابع جایگزین به این دایرکتوری بازنویسی کرد.

--runtime-image path
مسیر ایمیج زمان اجرای از پیش تعریف‌شده برای نصب.

(مسیر مطلق یا نسبی نسبت به دایرکتوری جاری)

هنگام ایجاد یک نصاب زمان اجرا، این گزینه الزامی است.

--launcher-as-service
درخواست برای ایجاد نصابی که اجراکنندهٔ اصلی برنامه را به عنوان یک برنامهٔ خدمات پس‌زمینه (service-type) ثبت کند.

--win-dir-chooser
افزودن یک کادر محاوره‌ای تا به کاربر امکان دهد دایرکتوری نصب محصول را انتخاب کند.
--win-help-url url
نشانی اینترنتی (URL) که کاربر می‌تواند اطلاعات بیشتر یا پشتیبانی فنی را از آن دریافت کند.
--win-menu
درخواست برای افزودن میانبر منوی شروع (Start Menu) برای این برنامه.
--win-menu-group menu-group-name
گروه منوی شروع که این برنامه در آن قرار می‌گیرد.
--win-per-user-install
درخواست برای انجام نصب به صورت مجزا برای هر کاربر (per-user).
--win-shortcut
درخواست برای ایجاد میانبر دسکتاپ برای این برنامه.
--win-shortcut-prompt
افزودن یک کادر محاوره‌ای تا کاربر انتخاب کند که آیا میانبرها توسط نصاب ایجاد شوند یا خیر.
--win-update-url url
نشانی اینترنتی (URL) اطلاعات به‌روزرسانی‌های موجود برنامه.
--win-upgrade-uuid id
شناسهٔ یکتا (UUID) مرتبط با ارتقاهای این بسته.

--linux-package-name name
نام بستهٔ لینوکس.

به‌طور پیش‌فرض همان نام برنامه است.

--linux-deb-maintainer email-address
نگه‌دارنده (Maintainer) برای بستهٔ .deb.
--linux-menu-group menu-group-name
گروه منویی که این برنامه در آن قرار می‌گیرد.
--linux-package-deps
بسته‌ها یا قابلیت‌های مورد نیاز برای برنامه.
--linux-rpm-license-type type
نوع پروانه ("License: value" در فایل ‎.spec مربوط به RPM).
--linux-app-release release
مقدار انتشار (Release) در فایل ‎<name>.spec مربوط به RPM یا مقدار بازنگری (Debian revision) در فایل کنترل DEB.
--linux-app-category category-value
مقدار گروه (Group) در فایل ‎.spec مربوط به RPM یا مقدار بخش (Section) در فایل کنترل DEB.
--linux-shortcut
ایجاد میانبر برای برنامه.

--mac-dmg-content additional-content[,additional-content...]
گنجاندن تمام محتوای ارجاع‌شده در فایل dmg.

از این گزینه می‌توان بیش از یک بار استفاده کرد.


تولید یک بستهٔ برنامه مناسب برای سیستم میزبان:

برای یک برنامهٔ ماژولار:
    jpackage -n name -p modulePath -m moduleName/className
برای یک برنامهٔ غیرماژولار:
    jpackage -i inputDir -n name \
        --main-class className --main-jar myJar.jar
از روی یک ایمیج از پیش ساخته‌شدهٔ برنامه:
    jpackage -n name --app-image appImageDir

تولید یک ایمیج برنامه:

برای یک برنامهٔ ماژولار:
    jpackage --type app-image -n name -p modulePath \
        -m moduleName/className
برای یک برنامهٔ غیرماژولار:
    jpackage --type app-image -i inputDir -n name \
        --main-class className --main-jar myJar.jar
برای ارائه گزینه‌های سفارشی به jlink، ابتدا jlink را به صورت جداگانه اجرا کنید:
    jlink --output appRuntimeImage -p modulePath \
        --add-modules moduleName \
        --no-header-files [<additional jlink options>...]
    jpackage --type app-image -n name \
        -m moduleName/className --runtime-image appRuntimeImage

تولید یک بستهٔ زمان اجرای جاوا:

jpackage -n name --runtime-image <runtime-image>

امضای ایمیج از پیش تعریف‌شدهٔ برنامه (در macOS):

jpackage --type app-image --app-image <app-image> \
    --mac-sign [<additional signing options>...]
نکته: تنها گزینه‌های اضافی مجاز در این حالت عبارتند از:
      مجموعه گزینه‌های اضافی امضای مک و --verbose

آیکون‌ها، فایل‌های الگو و سایر منابع jpackage را می‌توان با افزودن منابع جایگزین به این دایرکتوری بازنویسی کرد. ابزار jpackage فایل‌ها را با نام‌های مشخصی در دایرکتوری منابع جستجو خواهد کرد.

<launcher-name>.png
آیکون اجراکنندهٔ برنامه

منبع پیش‌فرض JavaApp.png است.

<launcher-name>.desktop
یک فایل دسکتاپ که برای استفاده با دستور xdg-desktop-menu به کار می‌رود.

برای اجراکننده‌های برنامه‌ای که برای وابستگی‌های فایل ثبت شده‌اند و/یا دارای آیکون هستند در نظر گرفته می‌شود.

منبع پیش‌فرض template.desktop است.

<package-name>-<launcher-name>.service
فایل واحد (unit file) متعلق به systemd برای اجراکنندهٔ برنامه‌ای که به عنوان یک برنامهٔ خدمات پس‌زمینه ثبت شده است.

منبع پیش‌فرض unit-template.service است.

<package-name>.spec
فایل spec مربوط به RPM

منبع پیش‌فرض template.spec است.

control
فایل کنترل (Control file)

منبع پیش‌فرض template.control است.

copyright
فایل حق نشر (Copyright file)

منبع پیش‌فرض template.copyright است.

preinstall
اسکریپت شل پیش از نصب (Pre-install)

منبع پیش‌فرض template.preinstall است.

prerm
اسکریپت شل پیش از حذف (Pre-remove)

منبع پیش‌فرض template.prerm است.

postinstall
اسکریپت شل پس از نصب (Post-install)

منبع پیش‌فرض template.postinstall است.

postrm
اسکریپت شل پس از حذف (Post-remove)

منبع پیش‌فرض template.postrm است.

<launcher-name>.ico
آیکون اجراکنندهٔ برنامه

منبع پیش‌فرض JavaApp.ico است.

<launcher-name>.properties
فایل Properties برای فایل اجرایی اجراکنندهٔ برنامه

منبع پیش‌فرض WinLauncher.template است.

<application-name>-post-image.wsf
یک فایل اسکریپت ویندوز (WSF) برای اجرا پس از ساخت ایمیج برنامه
main.wxs
فایل اصلی پروژهٔ WiX

منبع پیش‌فرض main.wxs است.

overrides.wxi
فایل پروژهٔ بازنویسی‌های WiX

منبع پیش‌فرض overrides.wxi است.

service-installer.exe
فایل اجرایی نصاب سرویس

در صورتی در نظر گرفته می‌شود که برخی اجراکننده‌های برنامه به عنوان برنامه‌های خدمات پس‌زمینه ثبت شده باشند.

<launcher-name>-service-install.wxi
فایل پروژهٔ WiX برای نصب سرویس

در صورتی در نظر گرفته می‌شود که برخی اجراکننده‌های برنامه به عنوان برنامه‌های خدمات پس‌زمینه ثبت شده باشند.

منبع پیش‌فرض service-install.wxi است.

<launcher-name>-service-config.wxi
فایل پروژهٔ WiX برای پیکربندی سرویس

در صورتی در نظر گرفته می‌شود که برخی اجراکننده‌های برنامه به عنوان برنامه‌های خدمات پس‌زمینه ثبت شده باشند.

منبع پیش‌فرض service-config.wxi است.

InstallDirNotEmptyDlg.wxs
فایل پروژهٔ WiX برای کادر محاوره‌ای رابط کاربری نصاب جهت بررسی اینکه دایرکتوری نصب وجود ندارد یا خالی است

منبع پیش‌فرض InstallDirNotEmptyDlg.wxs است.

ShortcutPromptDlg.wxs
فایل پروژهٔ WiX برای کادر محاوره‌ای رابط کاربری نصاب جهت پیکربندی میانبرها

منبع پیش‌فرض ShortcutPromptDlg.wxs است.

bundle.wxf
فایل پروژهٔ WiX حاوی سلسله‌مراتب مؤلفه‌های ایمیج برنامه
ui.wxf
فایل پروژهٔ WiX برای رابط کاربری نصاب

WinInstaller.properties
فایل Properties برای فایل اجرایی نصاب

منبع پیش‌فرض WinInstaller.template است.

<package-name>-post-msi.wsf
یک فایل اسکریپت ویندوز (WSF) برای اجرا پس از ساخت نصاب تعبیه‌شدهٔ MSI برای نصاب EXE

<launcher-name>.icns
آیکون اجراکنندهٔ برنامه

منبع پیش‌فرض JavaApp.icns است.

Info.plist
فایل فهرست ویژگی‌های (property list) برنامه

منبع پیش‌فرض Info-lite.plist.template است.

Runtime-Info.plist
فایل فهرست ویژگی‌های زمان اجرای جاوا

منبع پیش‌فرض Runtime-Info.plist.template است.

<application-name>.entitlements
فایل فهرست ویژگی‌های مجوزهای امضا (Signing entitlements)

منبع پیش‌فرض sandbox.plist است.

<package-name>-post-image.sh
اسکریپت شل برای اجرا پس از ساخت ایمیج برنامه

uninstaller
اسکریپت شل حذف‌کننده (Uninstaller)

در صورتی در نظر گرفته می‌شود که برخی اجراکننده‌های برنامه به عنوان برنامه‌های خدمات پس‌زمینه ثبت شده باشند.

منبع پیش‌فرض uninstall.command.template است.

preinstall
اسکریپت شل پیش از نصب

منبع پیش‌فرض preinstall.template است.

postinstall
اسکریپت شل پس از نصب

منبع پیش‌فرض postinstall.template است.

services-preinstall
اسکریپت شل پیش از نصب برای بستهٔ سرویس‌ها

در صورتی در نظر گرفته می‌شود که برخی اجراکننده‌های برنامه به عنوان برنامه‌های خدمات پس‌زمینه ثبت شده باشند.

منبع پیش‌فرض services-preinstall.template است.

services-postinstall
اسکریپت شل پس از نصب برای بستهٔ سرویس‌ها

در صورتی در نظر گرفته می‌شود که برخی اجراکننده‌های برنامه به عنوان برنامه‌های خدمات پس‌زمینه ثبت شده باشند.

منبع پیش‌فرض services-postinstall.template است.

<package-name>-background.png
تصویر پس‌زمینه

منبع پیش‌فرض background_pkg.png است.

<package-name>-background-darkAqua.png
تصویر پس‌زمینهٔ تیره

منبع پیش‌فرض background_pkg.png است.

product-def.plist
فایل فهرست ویژگی‌های بسته

منبع پیش‌فرض product-def.plist است.

<package-name>-<launcher-name>.plist
فایل فهرست ویژگی‌های launchd برای اجراکنندهٔ برنامه‌ای که به عنوان یک برنامهٔ خدمات پس‌زمینه ثبت شده است.

منبع پیش‌فرض launchd.plist.template است.

<package-name>-dmg-setup.scpt
اسکریپت راه‌اندازی اپل‌اسکریپت (AppleScript)

منبع پیش‌فرض DMGsetup.scpt است.

<package-name>-license.plist
فایل فهرست ویژگی‌های پروانه (لایسنس)

منبع پیش‌فرض lic_template.plist است.

<package-name>-background.tiff
تصویر پس‌زمینه

منبع پیش‌فرض background_dmg.tiff است.

<package-name>-volume.icns
آیکون حجم دیسک (Volume)

منبع پیش‌فرض JavaApp.icns است.

2023 JDK 21