install4j与exe4简介——Java应用程序打包工具

2023-11-05

对于已经完成的Java应用程序开 发项目,从商业化角度看,应该制作成安全稳定的安装程序包来保证产品的安全和企业的利益。现在市面上比较高效的商业化工具有 installshield,installanywhere, install4j等,installshield适合C,C++,Delphi,PB,VB等;而后两者适合Java应用程序的打包制作。下面主要以 InstallAnywhere7.1为例,详细说明如何来给一个Java应用程序制作安装包。Java应用程序项目开发测试完成后,企业需要将此打包存 档(即jar文件),并制作成商业化安装程序。

1. 各版本的JDK都提供jar实用程序,其基本语法如下:
jar <option string> [JAR] [manifest file] [input files]
option string用于指定jar实用程序执行的操作,因此必须指定(下面列出各参数及使用方法)。
c 创建新的或空的压缩档
v 列出目录表
x 解压所有文件
x file 解压指定文件
f 指出“我准备向你提供文件名”。若省略此参数,jar会假定它的输入来自标准输入;或者在它创建文件时,输出会进入标准输出内
m 指出第一个参数将是用户自建的详情表文件的名字
v 产生详细输出,对jar做的工作进行巨细无遗的描述
O 只保存文件;不压缩文件(用于创建一个JAR文件,以便我们将其置入自己的类路径中)
M 不自动生成详情表文件,大多情况不会用到。
下面是调用jar的一些典型方法:
jar cf myJarFile.jar *.class
用于创建一个名为myJarFile.jar的JAR文件,其中包含了当前目录中的所有类文件,同时还有自动产生的详情表文件。
jar cmf myJarFile.jar myManifestFile.mf *.class
与前例类似,但添加了一个名为myManifestFile.mf的用户自建详情表文件。
jar tf myJarFile.jar
生成myJarFile.jar内所有文件的一个目录表。
jar tvf myJarFile.jar
添加“verbose”(详尽)标志,提供与myJarFile.jar中的文件有关的、更详细的资料。
jar cvf myApp.jar audio classes image
假定audio,classes和image是子目录,这样便将所有子目录合并到文件myApp.jar中。

        一般来说,在Java应用程序开发的过程中都会用到第三方库文件,在制作安装包时最好将企业自主开发的和第三方库分离开。因此,在制作成jar文件之前, 先写一个mainfest文件(用户自建详情表单文件,后缀名是.mf),在制作jar文件的过程中用于指出一个使用验证信息说明相关jar文件的文件 (即当前项目使用到的第三方jar库文件)。


10.2 install4j 与exe4j

官方主页:http://www.ej-technologies.com/download/exe4j/files.php

10.2.1 install4j

Install4j is a cross platform Java installer that produces native launchers and installers for all major platforms. Install4j offers an intuitive GUI that makes it easy to quickly define installation projects. A command line compiler and integration for Apache ANT are included.

install4j 是一个功能强大的, 多平台Java 安装文件生成工具,用于生成Java 应用程序本地化的安装及应用程序发布。install4j 的优异性在于它易于使用,紧密的集成到目标平台,以及灵活的JRE 管理与部署选项。

install4j 的图形用户界面中可以实现的功能:

* 完全自定义发布树

在发布树的每一个目录中,你能设置整个目录内容或是磁盘上任何目录的单个文件。定义的视图与结果视图让你能完全控制安装程序将发布的文件。

* 处理特定平台的差异

install4j 提供方便的“包含/排除”机制,使其适应平台方式来进行发布。

* 针对Unix, Linux 及Mac OS X 所定义的文件权限

对发布树的每一个元素,当其安装在类似于Unix 这样的平台上时,你能自定义用户访问的权限。       

* 定义优良的卸载策略

对发布树的每一个元素,你能决定在卸载时是否删除它。

* 定义覆盖策略

对发布树的每一个元素,你能配置不同的覆盖策略,当安装过程中需要覆盖文件时,这些覆盖策略会指示nstall4j 进行相应的操作。

* 定义安装的组件

你能定义文件及目录的分组,形成分离的安装组件,这样你就可提供给用户来选择只安装一定的组件。

10.2.2 exe4j

exe4j 可以打包成各种格式的exe ,也可以把jar 打包进exe ,也可以引用一个外部的jar 文件,还可以打包成windows 服务的程序,并且可以设置最低JRE 的版本,还可以设定启动画面。虽然Java 6.0 已经实现了这一点,但是还是没有exe4j 生成的启动画面快。

也可以用exe4j 打包Java 应用,然后用install4j 发布java 应用。install4j 不但用于打包很合适, 并且它还提供了一组很强大很实用的与平台相关的API ,这些对于扩展我们的程序也是有很大的帮助的。

 

9. 开源NSIS 与EclipseNSIS

NSIS 官方主页:http://nsis.sourceforge.net/Main_Page

EclipseNSIS 官方主页:http://eclipsensis.sourceforge.net/index.shtml

NSIS (Nullsoft Scriptable Install System) is a professional open source system to create Windows installers. It is designed to be as small and flexible as possible and is therefore very suitable for internet distribution.

NSIS 是Windows 下的一个安装与卸载程序制作工具,采用SuperPiMP 技术,使用简洁的脚本文件生成单文件的安装程序。 可通过样例修改或根据自己要求编写 NSI 脚本文件来定制自己的安装系统,可实现许可协议的显示、安装类型的选择、写入注册表、写入INI 文件、连接程序外壳、语句跳转、提示信息显示、创建卸载程序、定制安装和卸载程序的图标、创建快捷方式等其他安装程序应有的功能,是一款操作简单、功能强大的高效率安装软件。其中,MakeNSISW 是脚本编译器,负责制定脚本文件编译成对应的EXE 文件,并可以进行测试安装。

EclipseNSIS is a plugin for the Eclipse platform which enables editing, compiling and testing Nullsoft Installer (NSIS) scripts.

参考网址:

(1)http://www.blogjava.net/huliqing/archive/2008/04/18/193907.html
        (2)http://blog.csdn.net/diggywang/archive/2006/07/20/946981.aspx
      (3)http://www.chinadforce.com/redirect.php?tid=850193&goto=lastpost(install4j打包方法)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

install4j与exe4简介——Java应用程序打包工具 的相关文章

  • APNS(Apple 推送通知服务器)的反馈服务

    我们正在使用Java作为推送通知提供商APNS I我能够将消息发送到APNS但我不知道如何获得该消息的反馈 请帮忙 反馈服务具有类似于用于发送推送通知的接口的二进制接口 您可以通过以下方式访问生产反馈服务feedback push appl
  • Spring @Validated 在服务层

    Hej 我想使用 Validated group Foo class 在执行方法之前验证参数的注释 如下所示 public void doFoo Foo Validated groups Foo class foo 当我将此方法放入 Spr
  • 探索java图像处理的好资源[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我是图像处理领域的新手 请推荐一些好的资源 书籍和网络链接 来学习 Java 中的图像处理 最适合隐写术分析 适合初学者和高级水平 我看过
  • 如何停止使用扫描仪从标准输入读取多行?

    我正在做一个 JAVA 作业 应该处理多行输入 指令显示 输入是从标准输入读取的 给出了示例输入的示例 one 1 two 2 three 3 我不明白上面的示例输入 从标准输入读取 是什么意思 这是我编写的一个测试程序 它可以消除我的困惑
  • 我应该使用 JDBC getNString() 而不是 getString() 吗?

    我们正在构建一个由 Oracle 数据库支持的 Java 应用程序 我们使用 JDBC 驱动程序 访问该数据库ojdbc6 jar and orai18n jar 数据库模式主要使用以下方式存储文本列NVARCHAR2数据类型 The JD
  • Java - toString 到 Color

    我一整天都在努力解决这个问题 基本上我做了一个 for 循环 将条目添加到数组列表中 其中一项是 颜色 变量 我已经用过random nextInt为颜色构造函数的红色 绿色和蓝色部分创建新值 我还设置了一个toString方法 这样我就可
  • Java时间转正常格式

    我有 Java 时间1380822000000 我想转换为我可以阅读的内容 import java util Date object Ws1 val a new Date 1380822000000 toString 导致异常 warnin
  • 如何在 Python 中加密并在 Java 中解密?

    我正在尝试在 Python 程序中加密一些数据并将其保存 然后在 Java 程序中解密该数据 在Python中 我像这样加密它 from Crypto Cipher import AES KEY 1234567890123456789012
  • 如何修复maven错误JAVA_HOME环境变量未正确定义

    当我在虚拟环境中检查maven的版本时 出现以下错误 The JAVA HOME environment variable is not defined correctly This environment variable is need
  • 为本地@ExceptionHandler编写JUnit测试

    我有以下控制器 class Controller ResponseStatus HttpStatus OK RequestMapping value verifyCert method RequestMethod GET public vo
  • java数学中的组合“N选择R”?

    java库中是否有内置方法可以为任何N R计算 N选择R 公式 实际上很容易计算N choose K甚至不需要计算阶乘 我们知道 公式为 N choose K is N N K K 因此 公式为 N choose K 1 is N N N
  • Hazelcast:连接到远程集群

    我们有一组 Hazelcast 节点 全部运行在一个远程系统 具有许多节点的单个物理系统 上 我们希望从外部客户端连接到该集群 一个 Java 应用程序 它使用如下代码连接到 Hazelcast ClientConfig clientCon
  • 按名称获取 ArrayList

    这是正确的获取方式吗ArrayList
  • 如何从 Trie 中检索给定长度的随机单词

    我有一个简单的 Trie 用来存储大约 80k 长度为 2 15 的单词 它非常适合检查字符串是否是单词 但是 现在我需要一种获取给定长度的随机单词的方法 换句话说 我需要 getRandomWord 5 来返回 5 个字母的单词 所有 5
  • 在片段之间切换时底部导航栏会向下推

    在我的活动中 我有一个底部导航栏和框架布局来显示片段 一切正常 但问题是当我开始按顺序从 1 4 移动时 底部导航栏保持在其位置 但当我突然从 4 跳到2 然后底部导航栏就会超出屏幕 当再次单击同一项目时 它就会回到正常位置 该视频将清楚地
  • 应用程序中空指针异常[重复]

    这个问题在这里已经有答案了 我正在尝试在我的应用程序中实施应用程序内计费 我写了这段代码 public class Settings extends PreferenceFragment ServiceConnection mService
  • 从特定 JAR 文件读取资源(文件的重复路径)

    假设您有 jar1 和artifactId 动物园 jar2 和artifactId 动物 两个 jar 都有一个具有相同路径的资源文件 例如 animals animal txt 有什么方法可以从特定的 jar 中读取该文件吗 使用 ge
  • 尝试使用 Spring 和扩展 Hibernate JpaRepository 的自定义 GenericDao 接口来使用 EhCache

    背景 这是我的工作 简化 GenericDao接口 由任何实现DomainDao 通用Dao java NoRepositoryBean public interface GenericDao
  • 膨胀类 android.support.design.widget.CoordinatorLayoute 时出错

    我正在尝试运行我的应用程序 但不断收到标题中列出的错误 我读过周围的内容 人们说尝试将主题更改为 AppCombat 主题 但这似乎不起作用 以下是我遇到的错误 Process com example jmeyer27 crazytiles
  • Swing:创建可拖动组件...?

    我在网上搜索了可拖动 Swing 组件的示例 但我发现示例不完整或不起作用 我需要的是一个摇摆组件那可以是dragged通过鼠标 在另一个组件内 被拖拽的时候 应该已经 改变它的位置 而不仅仅是 跳 到目的地 我很欣赏无需非标准 API 即

随机推荐

  • mysql fulltext_干货!从零开始学习MySQL

    关注我们吧 查看更多干货文章 视频 回复 数据 还有数据分析相关资料领取 每周更有免费直播课 有问题也可私信咨询小编哦 一 为什么要用全文索引 我们在用一个东西前 得知道为什么要用它 使用全文索引无非有以下原因 like查询太慢 json字
  • openwrt 作为旁路由教程,适用于小米主路由

    小米路由作为主路由 openwrt作为旁路由时 手机上无线会提示无法访问外网 这个是由于小米路由自身解析导致 参考了好几篇文章 自己也趟了几遍才设置好 openwrt旁路由设置 刷好固件的新 Openwrt 网关 一般默认的IP地址是192
  • React Ref 其实是这样的

    大家好 我是Mokou 好久没有冒泡了 最近一直在看研究算法和数据结构方面的东西 但是似乎很多前端不喜欢看这种东西 而且目前本人算法方面也很挫 就不献丑了 当然了 最近也开始研究React了 这篇文章主要是讲述 Ref 相关的内容 如有错误
  • linux驱动开发学习笔记八:配置内核必不可少的工具--menuconfig

    一 常见的几种配置工具介绍 在配置内核的时候会有很多配置方法 make menuconfig make xxx defconfig 直接修改 config 注意 其中menuconfig是一个图形化配置工具 在后面我们会着重介绍 xxx d
  • 这篇文章把数据讲透了(四):数据挖掘

    一 前言 上一期文章中 我们已经了解到 数据 是一个庞大的体系 如下图所示 并用了 洗菜 择菜 的例子 为大家讲解数据清洗的含义 而今天笔者主要给大家讲解当净菜备好后 如何对净菜进行加工烹饪 让它变成有价值 有意义的美味佳肴 即数据挖掘的过
  • 好用的DNS服务器及各自特点

    1 114 114 114 114 在国内是比较出名的解析服务 因为解析速度快 同时连接三网 移动 电信 联通 横跨服务器延迟也不高 也可以满足用户需求 2 123 125 81 6 现在有很多人用360软件也会随着使用360DNS服务器
  • 大数据处理需要用到的九种编程语言

    随着大数据的热潮不断升温 几乎各个领域都有洪水倾泻般的信息涌来 面对用户成千上万的浏览记录 记录行为数据 如果就单纯的Excel来进行数据处理是远远不能满足的 但如果只用一些操作软件来分析 而不怎么如何用逻辑数据来分析的话 那也只是简单的数
  • 软件工程经济学知识点总结

    软件工程经济学知识点总结 题型 选择 20分 判断 20分 计算 20分 综合 25分 论述 15分 绪论 工程经济性 生产性工程项目的直接目的是盈利 非生产性工程项目的直接目的虽不是经济性的 但建设和运行中也必须重视成本 一切工程都具有经
  • 从C++角度讲解C#Out和ref的区别

    本文不同于以往的文章 而是透过c 和c 两种语言来讲解out和ref的区别 在C 中 out和ref都是用来传递参数的关键字 它们的主要区别在于 ref ref参数表示对变量的引用 这意味着当您将参数传递给一个使用ref参数的方法时 方法可
  • 基于Simulink的开关电源仿真设计

    基于Simulink的开关电源仿真设计 由220V单相工频交流电转变为直流电进行输出 设计由MATLAB的Simulink工具箱进行仿真实现 设计思路 输入端为220V单相工频交流电 输出端为48V直流电 48V直流电源应用广泛 如干电池
  • 编程实现木马的ActiveX启动和注入IE的启动方式

    木马的启动方式有很多种 现在比较流行的就是注册为系统服务启动 只适合Windows 2000以上的系统 或者以驱动的方式启动 不过 最近以ActiveX方式启动又比较流行了 因为它适合Windows 9x或2000以上的机器 而且杀毒软件
  • 华为交换机查看端口相关信息常用命令

    华为交换机查看端口相关信息常用命令 1 显示接口的运行状态和相关信息 display interface Ethernet brief dis int br 2 查看接口的描述信息 display interface description
  • Java 继承 (超详细)

    目录 1 什么是继承 2 在何处使用继承 3 如何使用继承 4 理解继承 4 1 子类可以继承父类的所有资源吗 4 2访问修饰符protected 5 方法重写 5 1方法的重写或方法的覆盖 Overriding 5 2必须遵守的规则 1
  • canvas小练习之渐变粒子特效

  • 【Python生存分析库scikit-survival的安装及使用教程】

    Python生存分析库scikit survival的安装及使用教程 生存分析是指在人口统计学领域中 对于以某种特定因素为背景下出现某类事件的时间进行统计分析的一种方法 在Python中 scikit survival就是一个十分实用的生存
  • 一文详解 ChatGPT:背后的技术,数据,未来发展

    文章目录 一文详解 ChatGPT ChatGPT背后的技术 基于 Transformer 的预训练语言模型 提示学习与指令精调 思维链 Chain of Thought COT 基于人类反馈的强化学习 Reinforcement Lear
  • Doris系列15- 索引

    文章目录 一 索引概述 二 案例 参考 一 索引概述 目前Doris只支持bitmap 索引 BITMAP 索引仅在单列上创建 bitmap index 位图索引 是一种快速数据结构 能够加快查询速度 语法 index 创建和修改相关语法有
  • RT-Thread分析-日志系统-rt_kprintf分析

    目录 1 前言 2 rt kprintf 3 配置选项 4 console设备 4 1 设备声明 4 2 设备创建 4 3 获取 console device 5 分析rt kprintf 函数 6 rt kprintf重定向 1 前言 内
  • sqli-labs(38-41)

    0x01 原理 堆叠注入 顾名思义就是很多语句结合在一起进行注入 在sql语句中 以 标志着一条语句的结束 要实现堆叠注入就是用 连接多条语句进行注入 即我们可以结束一个语句后 构造下一个语句 而union select也是将两条语句结合在
  • install4j与exe4简介——Java应用程序打包工具

    对于已经完成的Java应用程序开 发项目 从商业化角度看 应该制作成安全稳定的安装程序包来保证产品的安全和企业的利益 现在市面上比较高效的商业化工具有 installshield installanywhere install4j等 ins