JPACKAGE(1) JDK Commands JPACKAGE(1) نام (NAME) jpackage-openjdk21 - ابزار بسته‌بندی برنامه‌های خودکفای جاوا در قالب بسته‌های نصبی سیستم در OpenJDK 21 خلاصه دستور (SYNOPSIS) jpackage [گزینه‌ها] گزینه‌ها گزینه‌های خط فرمان که با فاصله از یکدیگر جدا می‌شوند. بخش گزینه‌های jpackage (JPACKAGE OPTIONS) را ببینید. توضیحات (DESCRIPTION) ابزار jpackage یک برنامهٔ جاوا و یک ایمیج زمان اجرای جاوا را به عنوان ورودی دریافت کرده و یک ایمیج برنامهٔ جاوا تولید می‌کند که شامل تمام وابستگی‌های لازم است. این ابزار قادر است یک بستهٔ بومی (native) در قالب‌های ویژهٔ هر پلتفرم، مانند exe در ویندوز یا dmg در macOS تولید کند. هر قالب باید روی همان پلتفرمی ساخته شود که قرار است روی آن اجرا شود؛ هیچ پشتیبانی چندپلتفرمی (cross-platform) وجود ندارد. این ابزار دارای گزینه‌هایی است که امکان سفارشی‌سازی برنامه‌های بسته‌بندی‌شده را به روش‌های گوناگون فراهم می‌کند. گزینه‌های JPACKAGE (JPACKAGE OPTIONS) گزینه‌های عمومی (Generic Options): @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 چاپ نسخهٔ محصول در جریان خروجی و سپس خروج. گزینه‌های ایجاد ایمیج زمان اجرا (Runtime Image): --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) برنامه اضافه شوند. از این گزینه می‌توان بیش از یک بار استفاده کرد. گزینه‌های ایجاد اجراکننده(های) برنامه (Launchers): --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 ایجاد یک اجراکنندهٔ کنسولی برای برنامه؛ باید برای برنامه‌هایی که نیاز به تعاملات کنسولی دارند مشخص شود. گزینه‌های پلتفرم macOS (تنها هنگام اجرا روی macOS در دسترس است): --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) در فایل ‎.spec مربوط به RPM یا مقدار بازنگری (Debian revision) در فایل کنترل DEB. --linux-app-category category-value مقدار گروه (Group) در فایل ‎.spec مربوط به RPM یا مقدار بخش (Section) در فایل کنترل DEB. --linux-shortcut ایجاد میانبر برای برنامه. گزینه‌های پلتفرم macOS (تنها هنگام اجرا روی macOS در دسترس است): --mac-dmg-content additional-content[,additional-content...] گنجاندن تمام محتوای ارجاع‌شده در فایل dmg. از این گزینه می‌توان بیش از یک بار استفاده کرد. مثال‌ها (EXAMPLES) تولید یک بستهٔ برنامه مناسب برای سیستم میزبان: برای یک برنامهٔ ماژولار: 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 [...] jpackage --type app-image -n name \ -m moduleName/className --runtime-image appRuntimeImage تولید یک بستهٔ زمان اجرای جاوا: jpackage -n name --runtime-image امضای ایمیج از پیش تعریف‌شدهٔ برنامه (در macOS): jpackage --type app-image --app-image \ --mac-sign [...] نکته: تنها گزینه‌های اضافی مجاز در این حالت عبارتند از: مجموعه گزینه‌های اضافی امضای مک و --verbose دایرکتوری منابع JPACKAGE (JPACKAGE RESOURCE DIRECTORY) آیکون‌ها، فایل‌های الگو و سایر منابع jpackage را می‌توان با افزودن منابع جایگزین به این دایرکتوری بازنویسی کرد. ابزار jpackage فایل‌ها را با نام‌های مشخصی در دایرکتوری منابع جستجو خواهد کرد. فایل‌های دایرکتوری منابع که تنها هنگام اجرا روی لینوکس در نظر گرفته می‌شوند: .png آیکون اجراکنندهٔ برنامه منبع پیش‌فرض JavaApp.png است. .desktop یک فایل دسکتاپ که برای استفاده با دستور xdg-desktop-menu به کار می‌رود. برای اجراکننده‌های برنامه‌ای که برای وابستگی‌های فایل ثبت شده‌اند و/یا دارای آیکون هستند در نظر گرفته می‌شود. منبع پیش‌فرض template.desktop است. فایل‌های دایرکتوری منابع که تنها هنگام ساخت نصاب DEB/RPM لینوکس در نظر گرفته می‌شوند: -.service فایل واحد (unit file) متعلق به systemd برای اجراکنندهٔ برنامه‌ای که به عنوان یک برنامهٔ خدمات پس‌زمینه ثبت شده است. منبع پیش‌فرض unit-template.service است. فایل‌های دایرکتوری منابع که تنها هنگام ساخت نصاب RPM لینوکس در نظر گرفته می‌شوند: .spec فایل spec مربوط به RPM منبع پیش‌فرض template.spec است. فایل‌های دایرکتوری منابع که تنها هنگام ساخت نصاب DEB لینوکس در نظر گرفته می‌شوند: 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 است. فایل‌های دایرکتوری منابع که تنها هنگام اجرا روی ویندوز در نظر گرفته می‌شوند: .ico آیکون اجراکنندهٔ برنامه منبع پیش‌فرض JavaApp.ico است. .properties فایل Properties برای فایل اجرایی اجراکنندهٔ برنامه منبع پیش‌فرض WinLauncher.template است. فایل‌های دایرکتوری منابع که تنها هنگام ساخت نصاب MSI/EXE ویندوز در نظر گرفته می‌شوند: -post-image.wsf یک فایل اسکریپت ویندوز (WSF) برای اجرا پس از ساخت ایمیج برنامه main.wxs فایل اصلی پروژهٔ WiX منبع پیش‌فرض main.wxs است. overrides.wxi فایل پروژهٔ بازنویسی‌های WiX منبع پیش‌فرض overrides.wxi است. service-installer.exe فایل اجرایی نصاب سرویس در صورتی در نظر گرفته می‌شود که برخی اجراکننده‌های برنامه به عنوان برنامه‌های خدمات پس‌زمینه ثبت شده باشند. -service-install.wxi فایل پروژهٔ WiX برای نصب سرویس در صورتی در نظر گرفته می‌شود که برخی اجراکننده‌های برنامه به عنوان برنامه‌های خدمات پس‌زمینه ثبت شده باشند. منبع پیش‌فرض service-install.wxi است. -service-config.wxi فایل پروژهٔ WiX برای پیکربندی سرویس در صورتی در نظر گرفته می‌شود که برخی اجراکننده‌های برنامه به عنوان برنامه‌های خدمات پس‌زمینه ثبت شده باشند. منبع پیش‌فرض service-config.wxi است. InstallDirNotEmptyDlg.wxs فایل پروژهٔ WiX برای کادر محاوره‌ای رابط کاربری نصاب جهت بررسی اینکه دایرکتوری نصب وجود ندارد یا خالی است منبع پیش‌فرض InstallDirNotEmptyDlg.wxs است. ShortcutPromptDlg.wxs فایل پروژهٔ WiX برای کادر محاوره‌ای رابط کاربری نصاب جهت پیکربندی میانبرها منبع پیش‌فرض ShortcutPromptDlg.wxs است. bundle.wxf فایل پروژهٔ WiX حاوی سلسله‌مراتب مؤلفه‌های ایمیج برنامه ui.wxf فایل پروژهٔ WiX برای رابط کاربری نصاب فایل‌های دایرکتوری منابع که تنها هنگام ساخت نصاب EXE ویندوز در نظر گرفته می‌شوند: WinInstaller.properties فایل Properties برای فایل اجرایی نصاب منبع پیش‌فرض WinInstaller.template است. -post-msi.wsf یک فایل اسکریپت ویندوز (WSF) برای اجرا پس از ساخت نصاب تعبیه‌شدهٔ MSI برای نصاب EXE فایل‌های دایرکتوری منابع که تنها هنگام اجرا روی macOS در نظر گرفته می‌شوند: .icns آیکون اجراکنندهٔ برنامه منبع پیش‌فرض JavaApp.icns است. Info.plist فایل فهرست ویژگی‌های (property list) برنامه منبع پیش‌فرض Info-lite.plist.template است. Runtime-Info.plist فایل فهرست ویژگی‌های زمان اجرای جاوا منبع پیش‌فرض Runtime-Info.plist.template است. .entitlements فایل فهرست ویژگی‌های مجوزهای امضا (Signing entitlements) منبع پیش‌فرض sandbox.plist است. فایل‌های دایرکتوری منابع که تنها هنگام ساخت نصاب PKG/DMG در macOS در نظر گرفته می‌شوند: -post-image.sh اسکریپت شل برای اجرا پس از ساخت ایمیج برنامه فایل‌های دایرکتوری منابع که تنها هنگام ساخت نصاب PKG در macOS در نظر گرفته می‌شوند: uninstaller اسکریپت شل حذف‌کننده (Uninstaller) در صورتی در نظر گرفته می‌شود که برخی اجراکننده‌های برنامه به عنوان برنامه‌های خدمات پس‌زمینه ثبت شده باشند. منبع پیش‌فرض uninstall.command.template است. preinstall اسکریپت شل پیش از نصب منبع پیش‌فرض preinstall.template است. postinstall اسکریپت شل پس از نصب منبع پیش‌فرض postinstall.template است. services-preinstall اسکریپت شل پیش از نصب برای بستهٔ سرویس‌ها در صورتی در نظر گرفته می‌شود که برخی اجراکننده‌های برنامه به عنوان برنامه‌های خدمات پس‌زمینه ثبت شده باشند. منبع پیش‌فرض services-preinstall.template است. services-postinstall اسکریپت شل پس از نصب برای بستهٔ سرویس‌ها در صورتی در نظر گرفته می‌شود که برخی اجراکننده‌های برنامه به عنوان برنامه‌های خدمات پس‌زمینه ثبت شده باشند. منبع پیش‌فرض services-postinstall.template است. -background.png تصویر پس‌زمینه منبع پیش‌فرض background_pkg.png است. -background-darkAqua.png تصویر پس‌زمینهٔ تیره منبع پیش‌فرض background_pkg.png است. product-def.plist فایل فهرست ویژگی‌های بسته منبع پیش‌فرض product-def.plist است. -.plist فایل فهرست ویژگی‌های launchd برای اجراکنندهٔ برنامه‌ای که به عنوان یک برنامهٔ خدمات پس‌زمینه ثبت شده است. منبع پیش‌فرض launchd.plist.template است. فایل‌های دایرکتوری منابع که تنها هنگام ساخت نصاب DMG در macOS در نظر گرفته می‌شوند: -dmg-setup.scpt اسکریپت راه‌اندازی اپل‌اسکریپت (AppleScript) منبع پیش‌فرض DMGsetup.scpt است. -license.plist فایل فهرست ویژگی‌های پروانه (لایسنس) منبع پیش‌فرض lic_template.plist است. -background.tiff تصویر پس‌زمینه منبع پیش‌فرض background_dmg.tiff است. -volume.icns آیکون حجم دیسک (Volume) منبع پیش‌فرض JavaApp.icns است. JDK 21 2023 JPACKAGE(1)