`
happyqing
  • 浏览: 3204669 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java swing项目打安装包 ant+exe4j+inno setup

阅读更多

 

我的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,没用到

 

  • 大小: 22 KB
  • 大小: 5 KB
  • 大小: 2.9 KB
  • 大小: 6.3 KB
分享到:
评论

相关推荐

    java对swing打包,exe4j和Inno setup

    为了使Java Swing应用能够像常规的Windows可执行文件(.exe)一样运行,我们可以使用像exe4j和Inno Setup这样的工具进行打包。 exe4j 是一款专门用来将Java应用程序转换为Windows可执行文件的工具。它允许开发者...

    exe4j+++Inno+Setup打包工具

    当需要将一个基于Java的Web应用打包成.exe安装文件时,可以先使用exe4j将Java应用封装为独立的可执行文件,然后通过Inno Setup创建安装程序。Inno Setup可以包含exe4j生成的.exe文件,以及应用所需的其他资源,如...

    exe4j+innosetup.zip

    总结起来,exe4j和InnoSetup是将Java应用,尤其是SpringBoot项目,转化为Windows友好型可执行程序和安装包的强大工具。它们极大地便利了开发者和终端用户的交互,使得非Java环境的用户也能轻松运行和安装SpringBoot...

    exe4j及inno安装包

    当开发者使用exe4j将Java应用转换为.exe后,Inno Setup则可以用来创建包含该.exe的安装包。通过Inno Setup,开发者可以定制安装过程,添加卸载程序,甚至实现自动检查并安装JRE。这样,用户只需运行由Inno Setup创建...

    Java桌面应用安装部署步骤(exe4j+inno Setup)

    exe4j和Inno Setup是两个常用的工具,用于创建Java桌面应用的Windows安装程序。下面我们将详细探讨如何使用这两个工具来实现这一目标。 **exe4j** exe4j是一个专门用于将Java应用程序打包成Windows可执行文件的...

    Java打包成exe工具_exe4j_64_InnoSetup_51(A&U)

    `exe4j`和`Inno Setup`是两个常用的Java应用打包工具,它们可以帮助我们将Java应用程序转换为原生的Windows可执行文件。 `exe4j`是一款由eclipse.org提供的开源工具,它允许Java开发者将Java应用打包成Windows平台...

    exe4j及inno setup使用

    exe4j主要用于将Java应用程序转换为Windows平台下的可执行文件(exe),而Inno Setup则是一款功能强大的安装包制作工具,用于创建Windows安装程序。 一、exe4j使用步骤 1. 下载安装:首先,你需要访问exe4j的官方...

    innosetup安装包+中文语言包

    安装包(innosetup-5.6.1.exe)包含了创建安装程序所需的所有组件,包括编译器、脚本编辑器和各种模板,使得开发者能够轻松地配置和定制自己的安装流程。 中文语言包是InnoSetup为了满足中国用户需求而提供的一个...

    swing打包成exe安装包工具

    通过exe4j和Inno Setup等工具,你可以实现这一目标,为用户提供一个无需Java环境即可运行的完整解决方案。不过,需要注意的是,这种方法仅适用于Windows平台,对于其他操作系统,如Mac或Linux,可能需要使用不同的...

    java打包成exe辅助软件exe4j与innosetup

    - **集成exe4j生成的.exe**: 将通过exe4j打包的Java程序添加到InnoSetup的安装包中。 - **创建安装界面**: 设计用户友好的安装界面,包括欢迎页、许可协议、目标位置选择等。 - **设置卸载**: 创建卸载程序,方便...

    使用inno setup将python exe制作安装包详细教程(csdn)————程序.pdf

    对于Python应用程序来说,由于其可执行文件(exe)通常需要依赖库和其他资源,因此使用像Inno Setup这样的安装包制作工具就显得尤为重要。Inno Setup是一个免费且功能强大的Windows安装包制作工具,它支持自定义安装...

    exe4j和innosetup工具.rar

    《exe4j与InnoSetup:Java程序打包的利器》 在Java开发领域,将编译好的类文件打包成可执行的Windows程序是一项常见的需求。exe4j和InnoSetup正是针对这一需求而设计的两款工具,它们为Java开发者提供了方便、高效...

    一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞

    通过exe4j和Inno Setup的组合,我们不仅解决了Java桌面应用的部署难题,还能控制安装包的大小,8M左右的体积对用户来说是相当友好的。这使得开发者能更专注于应用功能的开发,而无需过于担心部署问题。 总之,exe4j...

    inno setup仿大厂安装包,脚本和安装包都可运行

    这个“inno setup仿大厂安装包”是一个示例,展示了如何使用Inno Setup创建类似大厂级别的专业安装包。 Inno Setup的主要特点包括: 1. **定制化安装过程**:通过编写脚本(.iss文件),你可以定义安装程序的外观...

    javaSE 拼图小游戏,java项目打包成exe Idea exe4j innosetup

    1, Idea:将代码打包成jar包(java形式的...3, innosetup:将游戏用到的图片,Java的运行环境和第二步打包的代码,组合成最终的安装程序。 最终的效果,双击生成的exe文件,安装,不需要安装JDK,就可以玩拼图小游戏

    exe4j、inno setup安装使用说明

    在使用exe4j和Inno Setup时,通常先用exe4j将Java应用打包成.exe,然后使用Inno Setup创建一个包含.exe和其他相关文件的安装程序。通过两者结合,开发者可以为用户提供一套完整的、易于安装和运行的软件包。 在提供...

    InnoSetup6.0.3安装包与中文包.rar

    Inno Setup是一款流行的安装制作工具,常用于创建Windows应用程序的安装包。它的最新版本是6.0.3,这个压缩包“InnoSetup6.0.3安装包与中文包.rar”包含了该版本的安装程序以及中文语言包,使得国内用户能够方便地...

    exe4j和inno setup软件及注册机加教程

    exe4j软件+注册机+使用教程+inno setup 安装软件+教程。Java程序如何生成Jar、exe及安装文件

    解决Inno Setup制作中文安装包在非中文系统上显示乱码的问题

    解决 Inno Setup 制作中文安装包在非中文系统上显示乱码的问题 在制作安装包时,Inno Setup 是一个常用的选择,尤其是在制作中文安装包时。但是,在非中文系统上,Inno Setup 制作的中文安装包常常会出现乱码的问题...

    Inno Setup 安装包制作工具

    Inno Setup是一款强大的安装包制作工具,主要用于创建Windows平台下的应用程序安装程序。这款软件以其简单易用、功能全面而受到广大开发者的喜爱。在本文中,我们将深入探讨Inno Setup的核心特性、使用方法以及如何...

Global site tag (gtag.js) - Google Analytics