我的swing项目用的NetBeans开发
项目目录
exe4j目录
innosetup目录
一.打jar包
NetBeans可生成jar包
http://happyqing.iteye.com/blog/2064370
Eclipse也可以导出jar包
我是采用ant生成jar包
优点:可以自定义,去掉有些不需要的类,自定义生成的META-INF\MANIFEST.MF文件,指定Class-Path
buildProject.xml
<?xml version="1.0" encoding="UTF-8" ?> <!-- 1. 使用ant的javac命令来编译Java程序 2. 使用jar命令打包java项目 3. 使用war命令打包JavaEE项目 --> <project name="docProject" default="copy" basedir="../"> <!--属性--> <property name="build" value="${basedir}/ant" /> <property name="classes" value="${basedir}/bin/" /> <property name="lib" value="${basedir}/lib" /> <property name="jar" value="${build}/jar" /> <property name="exe4j" value="${basedir}/exe4j" /> <!--编译用的classpath--> <path id="classpath"> <fileset dir="${lib}"> <include name="*.jar"/> </fileset> </path> <!-- 清理 --> <target name="clean"> <echo message ="java_home:${java.home}"/> <delete includeemptydirs="true"> <fileset dir="${classes}"> <include name="**/*" /> </fileset> </delete> <delete file="${jar}/docProject.jar" /> </target> <!-- 编译 --> <target name="compile" depends="clean"> <!-- warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds --> <!-- 设置 includeantruntime="on" 或者 includeantruntime="false" Ant是否把它自己的 runtime包含进对 javac任务可见的classpath中 --> <javac encoding="utf-8" srcdir="${basedir}/src" destdir="${classes}" includeantruntime="false" bootclasspath="${java.home}/lib/rt.jar;${java.home}/lib/jce.jar" excludes="/com/urt/sample/*.*,/com/urt/license/*.*"> <classpath refid="classpath"/> <compilerarg value="-g:lines,vars,source" /> <!-- <compilerarg value="-Xlint:deprecation" /> <compilerarg value="-Xlint:unchecked" /> --> </javac> <copy todir="${classes}" includeEmptyDirs="true" overwrite="true"> <fileset dir="${basedir}/src"> <include name="*.properties"/> <include name="/**/*.properties"/> <include name="/images/*.*"/> </fileset> </copy> </target> <!-- 打成jar包 --> <target name="jar" depends="compile"> <pathconvert property="mf.classpath" pathsep=" "> <!--<path refid="classpath" />--> <path> <fileset dir="${lib}"> <include name="*.jar"/> </fileset> </path> <mapper> <chainedmapper> <!-- 移除绝对路径 --> <flattenmapper /> <!-- 加上lib前缀 --> <globmapper from="*" to="lib/*" /> </chainedmapper> </mapper> </pathconvert> <jar destfile="${jar}/docProject.jar" basedir="${basedir}/bin"> <!-- define MANIFEST.MF --> <manifest> <attribute name="Main-Class" value="com.urt.module.MainFrame"/> <attribute name="Class-Path" value="${mf.classpath} "/><!--这个可已没有--> </manifest> </jar> </target> <!-- 事后清理 --> <target name="afterClean" depends="jar"> <delete includeemptydirs="true"> <fileset dir="${classes}"> <include name="**/*" /> </fileset> </delete> </target> <target name="copy" depends="afterClean"> <copy todir="${exe4j}" includeEmptyDirs="true" overwrite="true"> <fileset dir="${jar}"> <include name="docProject.jar"/> </fileset> <fileset dir="${basedir}/src"> <include name="env.properties"/> </fileset> <fileset dir="${basedir}/build/classes"> <include name="license.dat"/> </fileset> </copy> </target> </project>
MANIFEST.MF
Manifest-Version: 1.0 Ant-Version: Apache Ant 1.9.2 Created-By: 1.7.0_55-b13 (Oracle Corporation) Main-Class: com.urt.module.MainFrame Class-Path: lib/commons-lang-2.3.jar lib/commons-logging-1.1.jar lib/d om4j-1.6.1.jar lib/pdfbox-app-1.8.4.jar lib/poi-3.9-20121203.jar lib/ poi-examples-3.9-20121203.jar lib/poi-excelant-3.9-20121203.jar lib/p oi-ooxml-3.9-20121203.jar lib/poi-ooxml-schemas-3.9-20121203.jar lib/ poi-scratchpad-3.9-20121203.jar lib/stax-api-1.0.1.jar lib/xmlbeans-2 .3.0.jar
指定Class-Path为了打好的jar包能找到lib
二.jar包打成exe
1.可以用bat to exe(bat2exe)工具,把一个.bat批处理文件打包成exe文件,
我下载的工具文件名是:jfsky.com-ha_Bat_To_Exe_Converter.rar 中文版的
docProject.bat
jre7x64\bin\java -jar docProject.jar
可视性:隐藏应用程序,就不显示cmd窗口了。
可设置图标文件
优点:简单,
2.用exe4j打包
一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞
http://www.blogjava.net/huliqing/archive/2008/04/18/193907.html
这篇博客说的比较清楚了
exe4j有32位版,和64位版,要想打包64位应用程序,请下载64为安装包
我下载的是:exe4j_windows-x64_4_5_2.zip
欢迎页右下角是注册信息,自行解决。
第4步里边第4小步可配置输出日志 error.log output.log 程序的日志会转发的这上
第4步里边第4小步可配置打包64位应用程序
第5步设置Class Path
似乎设置lib目录不管用,我把lib下的jar包一个一个全加上就好了。
可以指定图标
优点:可配置输出日志 error.log output.log,
因为我的程序没配置log
exe4j.exe4j
<?xml version="1.0" encoding="UTF-8"?> <exe4j version="4.5.2" transformSequenceNumber="1"> <directoryPresets config="D:/zhao/Documents/NetBeansProjects/docProject/exe4j/lib" /> <application name="docProject" distributionSourceDir="D:/zhao/Documents/NetBeansProjects/docProject/exe4j"> <languages> <principalLanguage id="en" customLocalizationFile="" /> </languages> </application> <executable name="docProject" type="1" iconSet="true" iconFile="D:/zhao/Documents/NetBeansProjects/docProject/src/images/docProject.ico" executableDir="." redirectStderr="true" stderrFile="error.log" stderrMode="overwrite" redirectStdout="true" stdoutFile="output.log" stdoutMode="overwrite" failOnStderrOutput="true" executableMode="1" changeWorkingDirectory="true" workingDirectory="." singleInstance="false" serviceStartType="2" serviceDependencies="" serviceDescription="" jreLocation="" executionLevel="asInvoker" checkConsoleParameter="false" globalSingleInstance="false" amd64="true"> <messageSet /> <versionInfo include="true" fileVersion="" fileDescription="" legalCopyright="我的公司 2014" internalName="测试项目" productName="" companyName="我的公司" productVersion="1.0" /> </executable> <splashScreen show="false" autoOff="true" alwaysOnTop="true" width="0" height="0" bitmapFile="" java6SplashScreen="false"> <text> <statusLine x="20" y="20" text="" font="Arial" fontSize="8" fontColor="0,0,0" fontWeight="500" /> <versionLine x="20" y="40" text="version %VERSION%" font="Arial" fontSize="8" fontColor="0,0,0" fontWeight="500" /> </text> </splashScreen> <java mainClass="com.urt.module.MainFrame" vmParameters="-Xms128m -Xmx2048m -XX:MaxPermSize=256m" arguments="" allowVMPassthroughParameters="true" preferredVM="" bundleRuntime="true" minVersion="1.7" maxVersion="" allowBetaVM="false" jdkOnly="false"> <searchSequence> <directory location="./jre7x64" /> </searchSequence> <classPath> <archive location="./docProject.jar" failOnError="false" /> <archive location="./lib/commons-lang-2.3.jar" failOnError="false" /> <archive location="./lib/commons-logging-1.1.jar" failOnError="false" /> <archive location="./lib/dom4j-1.6.1.jar" failOnError="false" /> <archive location="./lib/pdfbox-app-1.8.4.jar" failOnError="false" /> <archive location="./lib/poi-3.9-20121203.jar" failOnError="false" /> <archive location="./lib/poi-examples-3.9-20121203.jar" failOnError="false" /> <archive location="./lib/poi-excelant-3.9-20121203.jar" failOnError="false" /> <archive location="./lib/poi-ooxml-3.9-20121203.jar" failOnError="false" /> <archive location="./lib/poi-ooxml-schemas-3.9-20121203.jar" failOnError="false" /> <archive location="./lib/poi-scratchpad-3.9-20121203.jar" failOnError="false" /> <archive location="./lib/stax-api-1.0.1.jar" failOnError="false" /> <archive location="./lib/swing-layout-1.0.4.jar" failOnError="false" /> <archive location="./lib/xmlbeans-2.3.0.jar" failOnError="false" /> </classPath> <nativeLibraryDirectories /> </java> <includedFiles /> <unextractableFiles /> </exe4j>
三.打安装包
用inno setup打安装包,这个比较简单,可以用向导配置
有中文版的,innosetup554H.zip
把jdk,lib目录,exe,jar,配置文件,一起打包。
jar要是找不到lib下的jar,可以配置jar包下的META-INF\MANIFEST.MF文件,指定Class-Path
或者把lib包下的jar包拷贝到jdk\lib\ext下,感觉这样不太好
向导说明:
第3个页面 应用程序文件夹
应用程序文件夹名称 安装后的主目录名称
第4个页面 应用程序文件
在添加文件夹后记得编辑一下,目标子文件夹,要不会少一级目录
第8个页面 编辑设置
自定义编译器输出文件夹 生成的安装包的存放位置,
不设置的话会保存在我的文档下的Output下,若先保存向导生成的文件,再编译,会生成在同iss文件同级目录的Output下
其他说明:
Inno Setup本身是32位的,似乎没有64位的,
他可以安装64位的程序
默认总是安装到C:\Program Files (x86) 32位目录下,
[Setup]
ArchitecturesInstallIn64BitMode=x64 ia64
加一句这个就好了,默认安装到C:\Program Files下了
这个是从样例里看的,
建议多看看样例 C:\Program Files (x86)\Inno Setup 5\Examples
我的样例:
; 脚本由 Inno Setup 脚本向导 生成! ; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档! #define MyAppName "测试项目" #define MyAppVersion "1.0" #define MyAppPublisher "公司名称" #define MyAppURL "http://www.***.com/" #define MyAppExeName "docProject.exe" [Setup] ; 注: AppId的值为单独标识该应用程序。 ; 不要为其他安装程序使用相同的AppId值。 ; (生成新的GUID,点击 工具|在IDE中生成GUID。) AppId={{331BF6AF-1281-4074-BCC3-2852DDD39A4D} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\docProject DefaultGroupName={#MyAppName} OutputBaseFilename=docProjectSetup SetupIconFile=D:\zhao\Documents\NetBeansProjects\docProject\src\images\docProject.ico Compression=lzma SolidCompression=yes ArchitecturesInstallIn64BitMode=x64 ia64 [Languages] Name: "chinesesimp"; MessagesFile: "compiler:Default.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1 [Files] Source: "D:\zhao\Documents\NetBeansProjects\docProject\exe4j\docProject.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "D:\zhao\Documents\NetBeansProjects\docProject\exe4j\docProject.jar"; DestDir: "{app}"; Flags: ignoreversion Source: "D:\zhao\Documents\NetBeansProjects\docProject\exe4j\env.properties"; DestDir: "{app}"; Flags: ignoreversion Source: "D:\zhao\Documents\NetBeansProjects\docProject\exe4j\jre7x64\*"; DestDir: "{app}\jre7x64"; Flags: ignoreversion recursesubdirs createallsubdirs Source: "D:\zhao\Documents\NetBeansProjects\docProject\exe4j\lib\*"; DestDir: "{app}\lib"; Flags: ignoreversion recursesubdirs createallsubdirs ; 注意: 不要在任何共享系统文件上使用“Flags: ignoreversion” [Icons] Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon [Run] Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
用wix打包成msi,没用到
相关推荐
为了使Java Swing应用能够像常规的Windows可执行文件(.exe)一样运行,我们可以使用像exe4j和Inno Setup这样的工具进行打包。 exe4j 是一款专门用来将Java应用程序转换为Windows可执行文件的工具。它允许开发者...
当需要将一个基于Java的Web应用打包成.exe安装文件时,可以先使用exe4j将Java应用封装为独立的可执行文件,然后通过Inno Setup创建安装程序。Inno Setup可以包含exe4j生成的.exe文件,以及应用所需的其他资源,如...
总结起来,exe4j和InnoSetup是将Java应用,尤其是SpringBoot项目,转化为Windows友好型可执行程序和安装包的强大工具。它们极大地便利了开发者和终端用户的交互,使得非Java环境的用户也能轻松运行和安装SpringBoot...
当开发者使用exe4j将Java应用转换为.exe后,Inno Setup则可以用来创建包含该.exe的安装包。通过Inno Setup,开发者可以定制安装过程,添加卸载程序,甚至实现自动检查并安装JRE。这样,用户只需运行由Inno Setup创建...
exe4j和Inno Setup是两个常用的工具,用于创建Java桌面应用的Windows安装程序。下面我们将详细探讨如何使用这两个工具来实现这一目标。 **exe4j** exe4j是一个专门用于将Java应用程序打包成Windows可执行文件的...
`exe4j`和`Inno Setup`是两个常用的Java应用打包工具,它们可以帮助我们将Java应用程序转换为原生的Windows可执行文件。 `exe4j`是一款由eclipse.org提供的开源工具,它允许Java开发者将Java应用打包成Windows平台...
exe4j主要用于将Java应用程序转换为Windows平台下的可执行文件(exe),而Inno Setup则是一款功能强大的安装包制作工具,用于创建Windows安装程序。 一、exe4j使用步骤 1. 下载安装:首先,你需要访问exe4j的官方...
安装包(innosetup-5.6.1.exe)包含了创建安装程序所需的所有组件,包括编译器、脚本编辑器和各种模板,使得开发者能够轻松地配置和定制自己的安装流程。 中文语言包是InnoSetup为了满足中国用户需求而提供的一个...
通过exe4j和Inno Setup等工具,你可以实现这一目标,为用户提供一个无需Java环境即可运行的完整解决方案。不过,需要注意的是,这种方法仅适用于Windows平台,对于其他操作系统,如Mac或Linux,可能需要使用不同的...
- **集成exe4j生成的.exe**: 将通过exe4j打包的Java程序添加到InnoSetup的安装包中。 - **创建安装界面**: 设计用户友好的安装界面,包括欢迎页、许可协议、目标位置选择等。 - **设置卸载**: 创建卸载程序,方便...
对于Python应用程序来说,由于其可执行文件(exe)通常需要依赖库和其他资源,因此使用像Inno Setup这样的安装包制作工具就显得尤为重要。Inno Setup是一个免费且功能强大的Windows安装包制作工具,它支持自定义安装...
《exe4j与InnoSetup:Java程序打包的利器》 在Java开发领域,将编译好的类文件打包成可执行的Windows程序是一项常见的需求。exe4j和InnoSetup正是针对这一需求而设计的两款工具,它们为Java开发者提供了方便、高效...
通过exe4j和Inno Setup的组合,我们不仅解决了Java桌面应用的部署难题,还能控制安装包的大小,8M左右的体积对用户来说是相当友好的。这使得开发者能更专注于应用功能的开发,而无需过于担心部署问题。 总之,exe4j...
这个“inno setup仿大厂安装包”是一个示例,展示了如何使用Inno Setup创建类似大厂级别的专业安装包。 Inno Setup的主要特点包括: 1. **定制化安装过程**:通过编写脚本(.iss文件),你可以定义安装程序的外观...
1, Idea:将代码打包成jar包(java形式的...3, innosetup:将游戏用到的图片,Java的运行环境和第二步打包的代码,组合成最终的安装程序。 最终的效果,双击生成的exe文件,安装,不需要安装JDK,就可以玩拼图小游戏
在使用exe4j和Inno Setup时,通常先用exe4j将Java应用打包成.exe,然后使用Inno Setup创建一个包含.exe和其他相关文件的安装程序。通过两者结合,开发者可以为用户提供一套完整的、易于安装和运行的软件包。 在提供...
Inno Setup是一款流行的安装制作工具,常用于创建Windows应用程序的安装包。它的最新版本是6.0.3,这个压缩包“InnoSetup6.0.3安装包与中文包.rar”包含了该版本的安装程序以及中文语言包,使得国内用户能够方便地...
exe4j软件+注册机+使用教程+inno setup 安装软件+教程。Java程序如何生成Jar、exe及安装文件
解决 Inno Setup 制作中文安装包在非中文系统上显示乱码的问题 在制作安装包时,Inno Setup 是一个常用的选择,尤其是在制作中文安装包时。但是,在非中文系统上,Inno Setup 制作的中文安装包常常会出现乱码的问题...
Inno Setup是一款强大的安装包制作工具,主要用于创建Windows平台下的应用程序安装程序。这款软件以其简单易用、功能全面而受到广大开发者的喜爱。在本文中,我们将深入探讨Inno Setup的核心特性、使用方法以及如何...