为Java桌面应用程序创建安装程序

28

我知道这个问题已经被问了很多次,每次都会有一个答案提到使用可执行的jar包或者使用launch4j或类似应用程序来制作.exe文件。

也许我听起来像个新手,实际上我确实是。

我一直在尝试使用Java项目。我已经成功地制作出了一个可执行的jar包,还有一个.exe文件。这要感谢你之前在SO上的回答 :)

但是,我想为Windows创建一个安装程序。比如说按下“下一步”2-3次(显示所有的条款和条件等等),然后用户指定一个位置(比如C:\Program Files\New Folder\My App),然后我的.exe文件、lib文件夹、img文件夹、其他重要文件夹都会被粘贴到目标文件夹中,以及在桌面上创建一个快捷方式。

有什么指针可以帮助我实现这个吗?


我的一个项目中我使用了Nsis作为安装程序。你可以在http://nsis.sourceforge.net/Main_Page上查看它。 - bhdrkn
WiX也是一个不错的选择。 - 1615903
2
你可能也想要查看我的公司最近发布的JWrapper.com。它非常易于使用,采用纯Java编写(因此可在任何操作系统上运行),并生成适用于Mac、Windows和Linux的本机应用程序,包括图标(可使用您提供的PNG文件)和签名(如果您拥有Windows和Mac的证书)。 - AntonyM
8个回答

21

我长时间以来一直在使用InnoSetup,它一直表现出色。它可以完成你所需要的所有操作(解压文件,放置快捷方式到桌面、开始菜单等),并且生成的安装程序我们已经很熟悉了。


嗨,我正在使用NetBeans中的innoSetup和Wix进行本地打包,但它没有创建桌面快捷方式,也没有更改应用程序图标。需要帮助。 - Aman Deep

8
如果你想要免费且开源的解决方案,可以看一下IzPack。我们在工作中使用它来支持命令行构建。
另外一个选择是install4j,这是一个商业产品,我们曾经试用过,但是当涉及到花钱时,你往往会想要知道你得到了你想要的东西 ;)

+1 for izpack,我们使用它来为http://gate.ac.uk构建安装程序。这可以是完全脚本化的过程 - 我已经设置了我们的Jenkins CI服务器,以便在每晚的快照构建中构建安装程序。 - Ian Roberts

6
如果你使用JDK 13或以上版本,你可以使用JDK中的默认打包工具将任何Java程序与其运行时一起打包。

jpackage可以为Linux、Mac和Windows操作系统创建安装程序。

你可以使用jlink创建特定的运行时。

jpackage需要一些第三方免费软件来创建Windows捆绑包:

* 要创建.exe捆绑包,它使用Wix

* 要创建.msi捆绑包,它使用Inno

  • 现在,Wix是创建exemsi捆绑包的唯一依赖项。

关于jpackage的所有细节都可以在JEP 343:打包工具中找到。


4

编辑:我会为参考而留下这里,但请注意:启动JWS和小程序所需的Java插件已被浏览器制造商删除,并且在Java 9中已被弃用并从API中删除。

使用Java Web Start

例如,按2-3次“下一步”(显示所有条款和条件等)

JNLP API的ExtensionInstallerService提供了此功能。这是安装程序服务演示

..然后用户指定位置(例如C:\ Program Files \ New Folder \ My App),..

ExtensionInstallerService提供了一个方法getInstallPath(),该方法返回推荐安装扩展的目录。安装程序不一定要在此目录中安装,这只是一个建议路径。
这与您所询问的并不完全相同,但我认为允许用户拥有那种程度的控制通常是不明智的。
JWS会在需要时自动安装JNLP中提到的资源。此外,如果服务器上的档案发生更改,则会更新资源。
JWS可以在支持的系统上提供桌面快捷方式和菜单项。
例如:

1

几个月前我也处于同样的情况。尝试了很多后,我建议使用NSIS。它有一个很好的Eclipse插件EclipseNSIS,带有一些模板。只需轻松点击即可获得基本安装程序的帮助。如果生成的代码不足够,您可以通过编码完成其余工作,但大部分代码都是由EclipseNSIS生成的。


0
您还可以使用Advanced Installer。由于您已经有一个EXE来启动您的JAR,因此不需要使用Advanced Installer的Java Launcher支持,您可以创建一个简单项目,该项目可在免费版中使用,因此无需购买许可证。
安装和创建设置包最多需要10分钟,您会发现使用它非常容易学习。

0

我想分享另一个项目。该项目分为两部分:更新桌面应用程序和准备安装程序以适用于Mac OS、Linux和Windows。如果您只需要安装程序,那么可以采用此方式 documentation 满足您的需求,只需将starter-core-1.0.jar替换为您的jar即可。


0

使用Launch4j创建exe文件。您必须提供到jre文件夹的相对路径。 接下来使用Inno Setup进行安装程序制作。您可以将jre捆绑在安装程序中。 我已经使用它,它像魔术一样运行良好。我可以展示细节。


展示细节会很好! - bsheps

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接