首页 / 知识
打包用于Windows / Linux桌面的Java应用程序
2023-04-12 00:10:00

Packaging Java apps for the Windows/Linux desktop我正在使用Eclipse SWT库进行GUI渲染,用Java为桌面编写一个应用程序。我认为SWT帮助Java克服了在桌面上接受的最大障碍:即为Java应用程序提供一致的,响应式的界面,该界面看起来与桌面上其他任何应用程序的界面都一样。但是,我认为打包应用程序仍然是一个问题。 OS X本机提供了一种将Java应用程序包装在本机应用程序捆绑包中的简单机制,但是为Windows / Linux生成不需要用户运行丑陋的批处理文件或单击.jar的应用程序仍然很麻烦。在Linux上,这可能不是问题,在Linux上,用户可能更精通技术,但是在Windows上,我希望有一个常规的.exe供他/她运行。 有没有人对使用Java的.exe生成工具有任何经验?我尝试了JSmooth,但是遇到了各种各样的问题。在我推出Visual Studio并推出自己的产品之前,是否有更好的解决方案? 编辑:我也许应该提到我无法在商业解决方案上花费很多钱。 为了跟进pauxu的回答,我在我的一个项目上使用了launch4j和NSIS,并认为展示我的使用方式会有所帮助。这是我为Windows做的事情。顺便说一句,我正在为Mac创建.app和.dmg,但还没有弄清楚Linux的用途。 launch4j和NSIS的项目副本 在我的项目中,我有一个"供应商"目录,在它的下面有一个" launch4j"和" nsis"目录。每个文件中都有每个应用程序的安装副本。我发现在项目本地拥有一个副本比强迫其他人安装两个产品并设置某种指向每个产品的环境变量要容易得多。 脚本文件 我的项目中还有一个"脚本"目录,其中包含项目的各种配置/脚本文件。首先是launch4j.xml文件:
然后是NSIS脚本rpgam-setup.nsis。可以使用VERSION参数来帮助命名文件。
蚂蚁整合 我的Ant构建文件(build.xml)中有一些目标可以处理上述问题。首先,我打电话给Ant导入launch4j的Ant任务:
然后,我有了一个用于创建包装可执行文件的简单目标:
制作安装程序的另一个目标:
上面的部分只是将安装程序所需的文件复制到一个临时位置,而下半部分执行使用所有文件来制作安装程序的脚本。 在我公司中,我们使用Launch4J来创建exe文件,并使用NSIS来创建带有SWT应用程序的安装程序。 多年来,我们已将其用于多种商业应用中,并且效果很好。 也许您应该看看IzPack。几年前,我创建了一个非常不错的安装程序,我敢打赌他们仍在改进它。它允许安装文档,二进制文件和可单击链接来启动应用程序IIRC。 我已经使用免费的Launch4J为Windows上的Java程序创建了一个自定义启动器。结合免费的NSIS安装程序,您可以为Windows用户构建一个不错的软件包。 编辑:没有看到您使用SWT。不知道它是否也适用于SWT,因为我在应用程序中仅使用了Swing。
您是否考虑过用C / C ++编写一个小的程序,该程序仅调用 您可以使用Visual C ++ Express并轻松组合启动程序。这样也可以轻松添加友好的图标。 考虑将您的应用程序转换为Eclipse RCP。它是用SWT编写的,并且Eclipse IDE包含打包工具,可以为所有主要平台生成可执行文件。对于Windows,它可以生成一个包含您的代码的zip或文件夹。对于一般的安装体验,我将使用NSIS。 eclipse实际上有一个软件包生成器项目,可以为eclipse支持的所有平台创建通用的安装程序。 您是否考虑过Java Web Start?这是专门用于通过Java Web Start部署SWT应用程序的教程。 Install4J。不是免费的,但是值得。试用一下 您现在可以通过Netbeans做到这一点!这真的很容易并且完美地工作。在Netbeans网站上查看本教程。 我过去使用过JSmooth,但仍然很幸运。用户界面非常有缺陷,但是我只用它一次构建配置文件,然后在那之后从Ant构建。 JSmooth有什么问题? JSMooth在生产环境中为我们工作得非常好,在该环境中,我首先使用一个jar(用于胖子的胖jar插件)生成了一个jar,然后用JSmooth将其包装。 (请注意,我想要一个没有文件的免安装发行版,如果需要的话,可以提示安装JRE)。 它运行得很好,以至于我认为没有人使用它:) 您考虑过高级安装程序吗? 我已经多次使用它,尤其是在Windows和Mac上。无需脚本或Ant。所有GUI。非常简单易懂。不是免费的,但值得每一分钱。 -劳厄(Lauch)作为管理员 还有更多。而且不要扭曲它,我与帅哥没有任何关系...他们的应用程序真棒。 您可能要尝试使用我们的工具BitRock InstallBuilder。尽管它是本机应用程序,但我们的许多客户都使用它来打包桌面Java应用程序。如果捆绑JRE并创建启动器等,则用户甚至不需要知道他们正在安装Java应用程序。它是跨平台的,因此您可以为Windows和Mac(以及Linux,Solaris等)生成安装程序。就像另一篇文章中提到的install4j工具一样,它是一种商业工具,但是我们为开源项目提供免费许可证,并提供特殊折扣对于microISV /小型企业等,请给我们发送电子邮件。还想强调一下,这是一个安装程序工具,因此,如果您仅寻找单个文件可执行文件,它将无法满足您的需求。 在我的公司中,我们将launch4J和NSIS用于Windows发行版,将jdeb用于Debian发行版,并将Java Web Start用于常规操作系统。这工作得很好。 我正在考虑的另一种选择:Eclipse并非从头开始编写本机启动器,而是随附了其自己的启动器的源代码,并且也许可以将其用于我的应用程序。 Sun从来没有在JDK中包含任何类似的东西,这是可耻的。 请尝试InstallJammer。这是我用过的最好的。免费且功能强大,足以用于个人和商业用途。 我经历了同样的事情,发现所有的免费选项都不是很好。看来您将自己编写。我想看看有人是否有可用的免费/廉价选项 对Launch4J的另一票表决是,今天早晨刚刚写了一个与我的项目集成的蚂蚁任务。看起来真的很好 |
最新内容
相关内容
python电脑桌面中整理exe程序
python电脑桌面中整理exe程序,图片,培训,桌面,程序,路径,文件,电脑桌面,赋值,字符串,文件名,python电脑桌面中整理exe程序1、引入库os,time,shu关于链接器:将我的混合模式应用程序
关于链接器:将我的混合模式应用程序链接到哪些库?,关于链接器:将我的混合模式应用程序链接到哪些库?,应用程序,集成,支持,这是一个,What关于vb.net:通过文件资源管理器在我
关于vb.net:通过文件资源管理器在我的应用程序中打开文件,关于vb.net:通过文件资源管理器在我的应用程序中打开文件,应用程序,自定义,iPhone Web应用程序,模板,框架?
iPhone Web应用程序,模板,框架?,iPhone Web应用程序,模板,框架?,应用程序,站点,用于,网页,iPhone web applications, templates, framework关于体系结构:我应该如何构建Java应
关于体系结构:我应该如何构建Java应用程序,将类放在哪里?,关于体系结构:我应该如何构建Java应用程序,将类放在哪里?,应用程序,支持,困惑,在Web应用程序上执行压力测试?
在Web应用程序上执行压力测试?,在Web应用程序上执行压力测试?,应用程序,主页,写了,简单,Performing a Stress Test on Web Application关于用户界面:图标:没有设计技能的开
关于用户界面:图标:没有设计技能的开发人员如何使他/她的应用程序图标看起来漂亮?,关于用户界面:图标:没有设计技能的开发人员如何使他/我应该如何将文件加载到Java应用程
我应该如何将文件加载到Java应用程序中?,我应该如何将文件加载到Java应用程序中?,文件,应用程序,加载,文本,How should I load files i关于Windows:用于存储用户可配置应
关于Windows:用于存储用户可配置应用程序设置的注册表与INI文件,关于Windows:用于存储用户可配置应用程序设置的注册表与INI文件,配置关于.net:用于解析网页链接的正则表
关于.net:用于解析网页链接的正则表达式?,关于.net:用于解析网页链接的正则表达式?,网页,正则表达式,链接,没有找到,Regular expression关于身份验证:用于登录ID的内容是什
关于身份验证:用于登录ID的内容是什么?,关于身份验证:用于登录ID的内容是什么?,帐户,重写,企业,设计阶段,What to use for login ID?我们关于Web应用程序:您对使用UUID作为
关于Web应用程序:您对使用UUID作为数据库行标识符有何看法,尤其是在Web应用程序中?,关于Web应用程序:您对使用UUID作为数据库行标识符