`
快乐的牛
  • 浏览: 73764 次
社区版块
存档分类
最新评论

使用launch4j + InnoSetup打包你的java程序

 
阅读更多

1.满足于Jar吗?

   写了个java桌面程序,封装成了.jar文件可以双击运行。满足于此吗?这个程序看起来不像一个Windows 应用程序。首先,进程名称是javaw.exe,而不是你自定义的进程名称。没有图标。不是.exe可执行文件,用户开始看到会犹豫,这玩意能不能运行?

2.封装jar 成 exe

   先把jar做成exe程序,有很多开源软件可供选择,这里推荐launch4j。网上拷贝一份配置文件,改改,就可以了。下面是简单的launch4j配置文件:

<launch4jConfig>
  <headerType>gui</headerType>
<!--gui程序,若填console,程序运行时,会有一个命令行跟着启动;即使是后台应用程序,也建议用gui-->
  <outfile>a.exe</outfile>
<!--输出文件,不用多说,这里指定文件名即可-->
  <jar>lib/xx.jar</jar>
<!--很重要,你的main函数在那个jar包中-->
  <dontWrapJar>false</dontWrapJar>
<!--这里选false,将jar封装成exe二进制格式-->
  <downloadUrl>http://java.com/download</downloadUrl>
<!--如果机器上没有jre,提示用户到这里去下载-->
  <icon>xx.ico</icon>
<!--支持程序图标-->  
<customProcName>true</customProcName>
  <classPath>
    <mainClass>MainClass</mainClass>
    <cp>lib/*.jar</cp>
<!--这个很重要,指定classpath-->
  </classPath>
  <singleInstance>
    <mutexName>xx</mutexName>
    <windowTitle>text</windowTitle>
  </singleInstance> 
<!--是否允许多实例运行-->
  <jre>
    <minVersion>1.6.0</minVersion>
    <maxVersion>1.7.0</maxVersion>
    <jdkPreference>preferJre</jdkPreference>
<!--指定依赖的jre环境,最低,最高版本-->
  </jre>
</launch4jConfig>

 launch4j支持以ant任务的方式执行封装任务,方便自动化。下面是简单的ant任务配置:

<property name="launch4j.dir" location="path-to-launch4j/" />
	<target name="exe" depends="junit">
		<taskdef name="launch4j" classname="net.sf.launch4j.ant.Launch4jTask" classpath="${launch4j.dir}/launch4j.jar
				    :${launch4j.dir}/lib/xstream.jar" />
		<launch4j configFile="launch4j.xml" />
	</target>

 3.已经是exe文件了,不过是绿色软件,有时候需要做一个安装程序setup.exe,为程序执行准备环境,如制作成 windows 服务开机运行,或者为用户创建快捷方式等等。这里推荐功能强大的InnoSetup,自己写一个脚本,自动完成封装。下面是简单的Inno Script脚本文件:

 

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "A Name"
#define MyAppVersion "1.0"
#define MyAppPublisher "xx, Inc."
#define MyAppURL "http://www.xxx.com/"
#define MyAppExeName "xxx.exe"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{id-generated}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "xx.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "xx.xml"; DestDir: "{app}"; Flags: ignoreversion
Source: "lib\*"; DestDir: "{app}\lib"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
;这里配置快捷方式
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

 

上面的文件挺复杂的?我也没有解释,呵呵,因为上面的内容基本上是InnoSetup自动生成的,在InnoSetup Compiler里,新建iss文件,会有向导一步一步提示。OK,完成了,马上跑一下setup.exe,现在,你的java程序,已经变得很专业了。

分享到:
评论
1 楼 xiaotao.2010 2012-01-14  
难得找到~

相关推荐

    JavaFX+SpringBoot2.7+JDK17+Launch4j+InnoSetup实现JVMTI的Jar包加密/H2数据

    本项目前端界面框架采用atlantafx,图标库使用了ikonli,实现了自定义主题。springboot版本2.7.5,mybatis版本2.1.2。运行程序后可自动生成数据库。在安装过程中,会提示输入软件序列号,序列号的校验可通过restful...

    利用开源软件Launch4j把java 桌面应用程序打包成exe

    利用开源软件Launch4j把java 桌面应用程序打包成exe[图解]

    launch4j java打包程序又一推荐

    本程序是另外一个对java application进行打包成exe的程序,改程序可以吧jre内嵌到程序里面,不需要安装jdk就可以运行。包中有两个版本,一个是的windows,一个是linux,可以选择不同的方式来安装使用,比较方便。

    Java封装器-launch4j

    Launch4j是一个开源的安装程序,将您的jar文件打包成操作系统的本地可执行文件,支持Windows, MacOS,Linux和Solaris。对于JRE,您可以嵌入在安装文件中,也可以在安装时提示用户下载正确的JRE版本。Launch4j更加吸引...

    Launch4j_3.9 老朽痴拙汉化版(Java打包生成器)

    Launch4j_3.9 老朽痴拙汉化版, 多平台Java打包, JAR生成exe

    java打包工具launch4j-3.0.1

    launch4j是一个非常好的打包软件,他能把机jar文件生成exe直接运行,其操作简单,可以很好的吧jre打包整合的一起。

    launch4j jar文件打包

    Launch4j是一个开源的安装程序,将您的jar文件打包成操作系统的本地可执行文件,支持Windows, MacOS,Linux和Solaris。对于JRE,您可以嵌入在安装文件中,也可以在安装时提示用户下载正确的JRE版本。Launch4j更加吸引...

    Launch4j 教程——JAR应用程序生成exe

    四、运行4 五、设置 Basic项6 六、设置 Classpath .7 七、设置 JRE.8 八、保存配置.9 九、编译并生成 exe ..10 十、执行生成的 exe ..11 十一、常见问题.12 1、设置的 icon文件必须是.icon格式的;..12 2、...

    launch4j打包程序

    可以将java程序jar打包成.exe程序

    launch4j java exe制作包工具

    launch4j是Java应用程序的Windows本地可执行文件 (.exe) 封装器。提供了本地弹出屏幕,应用程序图标,JRE搜索或使用绑定的JRE,启动失败反馈,传递命令行参数,ant脚本。  Launch4j是一个开源的安装程序,将您的jar...

    Launch4j程序+教程

    使用Launch4j打包jar包生成exe可执行程序教程

    Launch4j 把java jar包转化为exe文件 可脱离jre 内附详细文档

    Launch4j 可以将java的jar包转换为exe文件,工具是本人在网上下载的,文档也是在网上淘到的,本人实验过的,传上来,以后可重复使用,有缘看到的朋友也可以试试,好使!

    launch4j的用法,图文并茂,一学就会

    十张图片,十步教会你使用launch4j,简单易学,一看就懂

    launch4j JAR包打包成WINDOW可执行EXE工具

    JAR包打包成WINDOW可执行EXE工具,非常好用的工具

    Launch4j-中文版(Java打包exe生成器).rar

    Launch4j是一个开源的Java应用程序打包工具,它可以将Java程序打包成可执行的Windows程序,使得用户可以直接双击运行。它还提供了一些额外的功能,如程序图标设置、JRE绑定、自定义程序信息等。Launch4j支持多种平台...

    launch4j-3.12-win32

    launch4j是一款能够将java程序转换为可直接运行的exe文件。launch4j中文版就是将Jar文件打包转换为EXE文件,有需要的赶快下载吧!

    launch4j.jar.zip

    launch4j 将jar文件打包成exe文件的第三方工具

    launch4j教程和软件

    launch4j 可以用来将Java应用程序转成Windows本地可执行文件 (.exe)。提供了本地弹出屏幕,应用程序图标,JRE搜索或使用绑定的JRE,启动失败反馈,传递命令行参数,ANT编译脚本等功能。

    Launch4j-3.12.7z

    将jar打包成exe的工具,支持window和linux平台打包。压缩包中有 window和linux两个平台的工具。launch4j-3.12-linux-x64.tgz + launch4j-3.12-win32.zip

    launch4j-3.0.1-win32.exe

    launch4j-3.0.1-win32.exe 不错的jar打包exe的程序。

Global site tag (gtag.js) - Google Analytics