前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用javapackager打包各系统安装包

使用javapackager打包各系统安装包

作者头像
IT小马哥
发布2022-10-05 17:59:58
3.9K0
发布2022-10-05 17:59:58
举报
文章被收录于专栏:Java TaleJava Tale

在平时我们打包会将其打成Jar,那么在其他平台运行的时候就需要安装jre来支持运行。我们用的是javapackager,javapackager是jdk1.8自带的一个打包工具,可以生成各个系统的安装包

准备工作

  • innosetup-5.6.0.exe(windows下Java8支持6版本以下的,不要下载6及其6以上的版本,否则无法打包成功)
  • wix(打包成msi必须下载,没有下载javapackager会提示缺少wix)
  • JDK8

用法

代码语言:javascript
复制
javapackager  command  [options]

command :应该执行的任务

[options] :以空格分隔的命令的一个或多个选项

Commands

您可以指定以下命令之一。在命令之后,指定它的选项。

  1. -createbss:将 CSS 文件转换为二进制形式。
  2. -createjar:根据其他参数生成 JAR 存档。
  3. -deploy:组装应用程序包以进行重新分发。默认情况下,部署任务会生成基础应用程序包,但如果需要,它也可以生成自包含的应用程序包。
  4. -makeall:使用预定义的大多数参数,一次调用执行编译、createjardeploy步骤,并尝试生成所有适用的自包含应用程序包。源文件必须位于名为 的文件夹src中,生成的文件(JAR、JNLP、HTML 和自包含应用程序包)位于名为 的文件夹中dist。此命令只能以最少的方式配置,并且尽可能自动化。
  5. -signjar:使用提供的证书对 JAR 文件进行签名。

createbss 命令的选项

  1. -outdir dir: 将接收生成的输出文件的目录的名称。
  2. -srcdir dir:要打包的文件的基本目录。
  3. -srcfiles files:-srcdir选项指定的目录中的文件列表。如果省略,将使用目录中的所有文件(在这种情况下这是一个强制参数)。列表中的文件必须用空格分隔。

createjar 命令的选项

  1. -appclass app-class:要执行的应用程序类的限定名称。
  2. -argument arg:要作为<fx:argument>元素插入到 JNLP 文件中的未命名参数。
  3. -classpath files:相关 JAR 文件名列表。
  4. -manifestAttrs manifest-attributes:其他清单属性的名称和值列表。句法:“名称 1=值 1,名称 2=值 2,名称 3=值 3”
  5. -nocss2bin:打包器在复制到 JAR 之前不会将 CSS 文件转换为二进制形式。
  6. -outdir dir:将接收生成的输出文件的目录的名称。
  7. -outfile filename:将生成的文件的名称(不带扩展名)。
  8. -paramfile file:具有默认命名应用程序参数的属性文件。
  9. -preloader preloader-class:要执行的 JavaFX 预加载器类的限定名称。此选项仅用于 JavaFX 应用程序。不要用于 Java 应用程序,包括无头应用程序。
  10. -srcdir dir:要打包的文件的基本目录。
  11. -srcfiles files:-srcdir选项指定的目录中的文件列表。如果省略,将使用目录中的所有文件(在这种情况下这是一个强制参数)。列表中的文件必须用空格分隔。

deploy命令的选项

  1. -allpermissions:如果存在,应用程序将需要 JNLP 文件中的所有安全权限。
  2. -appclass app-class:要执行的应用程序类的限定名称。 就是详细包名+类名,也就是程序的入口类的全类名
  3. -argument arg:要插入到fx:argumentJNLP 文件中的元素中的未命名参数。
  4. -Bbundler-argument=value: 向用于打包自包含应用程序的捆绑程序提供信息。有关每个捆绑器的参数的信息,请参阅自包含应用程序捆绑器的参数。
  5. -callbacks:在生成的 HTML 中指定用户回调方法。格式如下:“名称 1:值 1,名称 2:值 2,...”
  6. -description description:应用程序的描述。
  7. -embedCertificates:如果存在,证书将嵌入 JNLP 文件中。
  8. -embedjnlp:如果存在,JNLP 文件将嵌入到 HTML 文档中。
  9. -height height:应用程序的高度。
  10. -htmlparamfile file:属性文件,其中包含在浏览器中运行时生成的应用程序的参数。
  11. -isExtension:如果存在,则将srcfiles其视为扩展。
  12. -name name:应用程序的名称。
  13. -native type:生成独立的应用程序包(如果可能)。使用该-B选项为正在使用的捆绑器提供参数。如果指定了类型,则仅创建此类型的捆绑包。如果未指定类型,all则使用。 以下值对type有效:
    • all:为运行它的平台运行所有安装程序,并为应用程序创建磁盘映像。如果未指定类型,则使用此值。
    • installer:运行它所在平台的所有安装程序。
    • image:为应用程序创建磁盘映像。创建原生的镜像(打成window的exe)。
    • exe: 生成一个 Windows.exe包。
    • msi:生成一个 Windows 安装程序包。
  14. -outdir dir:将接收生成的输出文件的目录的名称。
  15. -outfile filename:将生成的文件的名称(不带扩展名)。
  16. -paramfile file:具有默认命名应用程序参数的属性文件。
  17. -preloader preloader-class:要执行的 JavaFX 预加载器类的限定名称。此选项仅用于 JavaFX 应用程序。不要用于 Java 应用程序,包括无头应用程序。
  18. -srcdir dir:要打包的文件的基本目录。就是我们之前包含jar文件的文件夹(注意这里不是java源代码目录)
  19. -srcfiles files:-srcdir选项指定的目录中的文件列表。如果省略,将使用目录中的所有文件(在这种情况下这是一个强制参数)。列表中的文件必须用空格分隔。

20 -templateId:模板处理应用的应用ID。

21 -templateInFilename:HTML 模板文件的名称。占位符采用以下形式:#XXXX.YYYY(APPID)#

代码语言:javascript
复制
	其中 APPID 是应用程序的标识符,XXX 是以下之一:
  • DT.SCRIPT.URLdtjava.js 在部署工具包中的位置。默认情况下,位置是http://java.com/js/dtjava.js
  • DT.SCRIPT.CODE包含部署工具包的 dtjava.js 的脚本元素。
  • DT.EMBED.CODE.DYNAMIC将应用程序嵌入给定占位符的代码。预计代码将被包装在function()方法中。
  • DT.EMBED.CODE.ONLOAD使用钩子将应用程序嵌入网页所需的所有代码onload(包含 dtjava.js 除外)。
  • DT.LAUNCH.CODE启动应用程序所需的代码。预计代码将被包装在function()方法中。

22 -templateOutFilename:将从模板生成的 HTML 文件的名称。

23 -title title:应用程序的标题。

24 -vendor vendor:应用程序的供应商。

25 -width width:应用程序的宽度。

26 -updatemode update-mode:设置 JNLP 文件的更新模式。

makeall 命令的选项

  1. -appclass app-class:要执行的应用程序类的限定名称。
  2. -classpath files:相关 JAR 文件名列表。
  3. -height height:应用程序的高度。
  4. -name name:应用程序的名称。
  5. -preloader preloader-class:要执行的 JavaFX 预加载器类的限定名称。此选项仅用于 JavaFX 应用程序。不要用于 Java 应用程序,包括无头应用程序。
  6. -width width:应用程序的宽度。

signjar 命令的选项

  1. -alias:密钥的别名。
  2. -keyPass:用于恢复密钥的密码。
  3. -keyStore file:密钥库文件名。
  4. -outdir dir:将接收生成的输出文件的目录的名称。
  5. -srcdir dir:要签名的文件的基本目录。
  6. -srcfiles files:-srcdir选项指定的目录中的文件列表。如果省略,将使用目录中的所有文件(在这种情况下这是一个强制参数)。列表中的文件必须用空格分隔。
  7. -storePass:检查密钥库完整性或解锁密钥库的密码
  8. -storeType:密钥库类型。默认值为“jks”。

应用程序捆绑的参数

这些自定义的bundle参数在使用的时候要注意,-B加上参数名=值 例如 icon 使用的时候就是 -Bicon=“path

该命令的-B选项用于-deploy指定用于创建自包含应用程序的捆绑程序的参数。每种类型的捆绑器都有自己的一组参数。

  1. appVersion=version:应用程序包的版本。一些捆绑器会限制版本字符串的格式。
  2. classPath=path :相对于组装的应用程序目录的类路径。javapackager该路径通常从 JAR 文件清单中提取,如果您使用其他命令,则不需要设置。
  3. icon=path:用于启动器和其他辅助的默认图标的位置。对于 Windows,格式必须为.ico.
  4. identifier=value:用于其他平台特定值的默认值,例如mac.CFBundleIdentifier. 建议使用反向 DNS 顺序,例如com.example.application.my-application.
  5. jvmOptions=option:运行应用程序时传递给 JVM 的选项。java可以使用对命令有效的任何选项。要传递多个选项,请使用该-B选项的多个实例,如下例所示:-BjvmOptions=-Xmx128m -BjvmOptions=-Xms128m`
  6. jvmProperties=property=value:运行应用程序时要传递给 VM 的 Java 系统属性。可以使用-D对命令选项有效的任何属性。java指定属性名称和属性值。要传递多个属性,请使用该-B选项的多个实例,如下例所示:-BjvmProperties=apiUserName=示例 -BjvmProperties=apiKey=abcdef1234567890
  7. mainJar=filename:包含应用程序主类的 JAR 文件的名称。javapackager文件名通常从 JAR 文件清单中提取,如果您使用其他命令,则不需要设置。
  8. preferencesID=node:要检查的首选项节点以检查用户可以覆盖的 JVM 选项。指定的节点在运行时作为选项传递给应用程序-Dapp.preferences.id。此参数与userJVMOptions参数一起使用。
  9. runtime=path:运行时=路径要包含在包中的 JRE 或 JDK 的位置。提供 JDK 或 JRE 的根文件夹的文件路径。要使用系统默认的 JRE,请不要提供路径,如下例所示:-Bruntime=
  10. serJvmOptions=option=value:用户可以覆盖的 JVM 选项。java可以使用对命令有效的任何选项。指定选项名称和选项的值。要传递多个选项,请使用该-B选项的多个实例,如下例所示:-BuserJvmOptions=-Xmx=128m -BuserJvmOptions=-Xms=128m

Windows EXE Bundler 参数

  1. copyright=string:应用程序的版权字符串。字符串必须是不超过 100 个字符的单行。此参数用于各种 exe 和注册表元数据。
  2. licenseFile=path:捆绑商提供或记录的最终用户许可协议 (EULA) 的位置。该路径是相对于打包的应用程序资源的,例如-BlicenseFile=COPYING.
  3. menuHint=boolean:指示快捷方式是否安装在开始菜单或开始屏幕上的标志。设置为true安装快捷方式。默认值为true.
  4. ortcutHint=boolean:指示快捷方式是否放置在桌面上的标志。设置为true向桌面添加快捷方式。默认值为false.
  5. systemWide=boolean:指示应用程序是安装在 Program Files 中还是安装在用户主目录中的标准位置的标志。设置为true在 Program Files 中安装应用程序。设置为false将应用程序安装在用户的主目录中。默认值为false.
  6. win.menuGroup=group:何时安装应用程序的菜单menuHinttruemenuHint当is时,该参数被忽略false
  7. vendor=value:提供申请的公司、组织或个人。此参数用于各种 exe 和注册表元数据。

Windows MSI Bundler 参数

  1. menuHint=boolean:指示快捷方式是否安装在开始菜单或开始屏幕上的标志。设置为true安装快捷方式。默认值为true.
  2. shortcutHint=boolean:指示快捷方式是否放置在桌面上的标志。设置为true向桌面添加快捷方式。默认值为false.
  3. systemWide=boolean:指示应用程序是安装在 Program Files 中还是安装在用户主目录中的标准位置的标志。设置为true在 Program Files 中安装应用程序。设置为false将应用程序安装在用户的主目录中。默认值为true.
  4. win.menuGroup=group:何时安装应用程序的菜单menuHinttruemenuHint当is时,该参数被忽略false
  5. vendor=value:提供申请的公司、组织或个人。此参数用于各种 exe 和注册表元数据。

不推荐使用的选项

打包工具不再使用以下选项,如果存在则将其忽略。

  1. -runtimeversion version:所需 JavaFX 运行时的版本。已弃用。
  2. -noembedlauncher:如果存在,打包程序不会将 JavaFX 启动器类添加到 JAR 文件中。已弃用。

-v选项可以与任何任务命令一起使用以启用详细输出。 当-srcdir命令中允许该选项时,它可以多次使用。如果指定了该选项,则将在前面选项-srcfiles中指定的位置查找参数中命名的文件。srcdir如果没有-srcdir前面的 ,则使用执行命令-srcfiles的目录。javapackager

例子

使用 -createjar 命令

代码语言:javascript
复制
javapackager -createjar -appclass package.ClassName -srcdir classes -outdir out -outfile outjar -v

classes将目录的内容打包为outjar.jar,将应用程序类设置为package.ClassName

使用 -deploy 命令

代码语言:javascript
复制
javapackager -deploy -outdir outdir -outfile outfile -width 34 -height 43  -name AppName -appclass package.ClassName -v -srcdir compiled

为应用程序生成outfile.jnlp和对应的outfile.html文件,它由34 x 43 像素启动并具有尺寸。outdir``AppName``package.ClassName

使用 -makeall 命令

代码语言:javascript
复制
javapackager -makeall -appclass brickbreaker.Main -name BrickBreaker -width 600 -height 600

是否所有打包工作,包括编译createjar、和deploy.

使用 -signjar 命令

代码语言:javascript
复制
javapackager -signJar --outdir dist -keyStore sampleKeystore.jks -storePass **** -alias duke -keypass **** -srcdir dist

对目录中的所有 JAR 文件进行签名dist,附加具有指定别名的证书,keyStore然后storePass将签名的 JAR 文件放回dist目录中。

将 -deploy 命令与 Bundler 参数一起使用

代码语言:javascript
复制
javapackager -deploy -native exe -BsystemWide=true -BjvmOptions=-Xmx128m 
    -BjvmOptions=-Xms128m -outdir packages -outfile BrickBreaker -srcdir dist 
    -srcfiles BrickBreaker.jar -appclass brickbreaker.Main -name BrickBreaker 
    -title "BrickBreaker demo"

生成本机 Windows EXE 包,用于将 BrickBreaker 应用程序作为自包含应用程序运行。

代码语言:javascript
复制
javapackager -deploy -native   -outdir packages -outfile md5 -srcfiles  md5.jar -appclass com.sysware.md5.MyFrame -name md5

生成本机安装包(在linux下生成deb,在windows下生成exe,在mac下生成dkg),用于将 md5.jar 应用程序作为自包含应用程序运行。

分析一下

代码语言:javascript
复制
javapackager---java8自带的打包程序

-deploy---用来构建目标机器的发行版本,简单说就是打包成exe或者其他平台的包,如果不带任何参数,会生成一个基本的应用程序,不建议不带任何参数

-native image---为jar创建磁盘镜像(可以将image替换为其他的类型,例如exe,msi,deb,rpm,dmg,pkg,省略就是该系统支持的文件格式)

-outdir packages---输出目录。

-outfile md5----输出文件(不要带后缀,比如md5.exe,就写md5就行了)。

-srcfiles md5.jar---要打包的jar文件。

-appclass com.sysware.md5.MyFrame---jar文件的主类的全限定名。(注意是全限定名)

-name md5---启动之后的应用名称

文章翻译自:https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javapackager.html

本文由 小马哥 创作,采用 知识共享署名4.0 国际许可协议进行许可 本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名 最后编辑时间为: 2022/09/08 20:26

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-09-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备工作
  • 用法
  • Commands
  • createbss 命令的选项
  • createjar 命令的选项
  • deploy命令的选项
  • makeall 命令的选项
  • signjar 命令的选项
  • 应用程序捆绑的参数
  • Windows EXE Bundler 参数
  • Windows MSI Bundler 参数
  • 不推荐使用的选项
  • 例子
    • 使用 -createjar 命令
      • 使用 -deploy 命令
        • 使用 -makeall 命令
          • 使用 -signjar 命令
            • 将 -deploy 命令与 Bundler 参数一起使用
            相关产品与服务
            NLP 服务
            NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档