標(biāo) 題: 一鍵安裝雙擊運(yùn)行——Java安裝程序制作
作 者: Jason Du
時(shí) 間: 2009-3-23
原 文: http://www.tkk7.com/javapro/archive/2009/03/24/JavaAppSetup.html
對(duì)于Java桌面應(yīng)用來(lái)說(shuō),比較煩瑣的就是安裝部署問(wèn)題,如:客戶端是否安裝有jre、jre版本、jre在哪里下載、如何用jre啟動(dòng)Java應(yīng)用等等。不要說(shuō)剛接觸電腦的人,就算是比較熟悉電腦,如果沒(méi)有接觸過(guò)Java,面對(duì)一個(gè)Java應(yīng)用,如何在Windows下啟動(dòng)它,估計(jì)都會(huì)折騰半天。所以這個(gè)是導(dǎo)致Java桌面應(yīng)用被一些人所討厭的最大原因,Java的優(yōu)勢(shì)是“一次編寫(xiě),隨處運(yùn)行”,跨平臺(tái)特性確實(shí)很好,但并不是每個(gè)人都需要跨平臺(tái),而且有時(shí)候JVM平臺(tái)或版本問(wèn)題也會(huì)造成“一次編寫(xiě),到處測(cè)試”的尷尬。對(duì)于固定平臺(tái)下的Java應(yīng)用,最好的方式莫過(guò)于帶著JRE,讓用戶輕松點(diǎn)擊就能運(yùn)行。下面我們來(lái)解決這樣的問(wèn)題。
針對(duì)windows平臺(tái),主要方法是:先將JRE進(jìn)行精簡(jiǎn),再使用工具exe4j 來(lái)解決雙擊運(yùn)行使用的問(wèn)題,最后用Inno Setup打包成安裝程序, 這樣一來(lái),我們的Java應(yīng)用就和普通的windows應(yīng)用程序一樣了。
本文相關(guān)下載
本教程PDF格式文檔
http://www.uushare.com/user/javapro/file/1418624
http://www.rayfile.com/files/7840998c-1824-11de-942b-0014221b798a/
本教程示例程序
http://www.uushare.com/user/javapro/file/1418316
http://www.rayfile.com/files/3ee1f95c-1826-11de-bcfb-0019d11a795f/
exe4j 4.2 注冊(cè)版
http://www.uushare.com/user/javapro/file/1418327
http://www.rayfile.com/files/c56bebba-1826-11de-9b55-0019d11a795f/
Inno Setup 漢化增強(qiáng)版 + ISTool漢化 + 反編譯套裝 + ISFD界面設(shè)計(jì)漢化
http://www.uushare.com/user/javapro/file/1418305
http://www.rayfile.com/files/95c91dd9-1826-11de-89b1-0019d11a795f/
一、精簡(jiǎn)JRE
JRE6默認(rèn)安裝大小大約90M,而一般程序只有幾M甚至幾百K,帶JRE運(yùn)行,感覺(jué)非常不合理,分發(fā)與網(wǎng)絡(luò)傳輸過(guò)程也會(huì)大受影響。關(guān)于JRE的精簡(jiǎn)參照下面幾篇相關(guān)文章:
Java程序發(fā)布之jre篇
http://www.tkk7.com/gdws/archive/2006/12/25/89898.html
如何制作最小的RCP程序壓縮包(包含JRE)
http://www.eclipseworld.org/bbs/read-cec-tid-5777.html
讓Java程序帶上精簡(jiǎn)的jre(附工具)
http://glemir.xplore.cn/archives/200
JRE極限精簡(jiǎn)探求手冊(cè)[1]——精簡(jiǎn)一個(gè)Swing的即時(shí)戰(zhàn)略游戲
http://cping1982.blog.51cto.com/601635/129630
Java應(yīng)用——精簡(jiǎn)JRE體積的小工具
http://blog.csdn.net/cping1982/archive/2008/09/02/2865198.aspx
JVM rt.jar 精簡(jiǎn)工具圖形外殼 0.1
http://www.tkk7.com/beansoft/archive/2008/12/19/247321.html
可以運(yùn)行 RCP/Swing 的迷你JRE 6(3.75MB)
http://www.tkk7.com/beansoft/archive/2008/01/18/176353.html
可以運(yùn)行SWT的精簡(jiǎn)版JRE 1.4.2_04, 壓縮后僅1.3MB
http://www.tkk7.com/beansoft/archive/2007/03/07/102381.html
總得來(lái)說(shuō)JRE精簡(jiǎn)是一個(gè)比較復(fù)雜的工作,如果不清楚某部分的功能不要輕易進(jìn)行刪減,否則可能產(chǎn)生一些未知的錯(cuò)誤。pack200壓縮工具在對(duì)某些重新打包過(guò)的rt.jar文件壓縮時(shí)會(huì)產(chǎn)生錯(cuò)誤,如果使用的話一定要注意控制臺(tái)的輸出信息。
二、使用exe4j生成exe可執(zhí)行文件
下面是我的一個(gè)完整Java示例程序 —— TestProcessBar。可以看到示例程序已經(jīng)附帶了jre , 下面先使用exe4j給它制作一個(gè)exe可執(zhí)行文件(即圖中的TestProcessBar.exe),并指定我們自帶的jre 。

以下是exe4j的啟動(dòng)界面,點(diǎn)擊Next開(kāi)始創(chuàng)建配置文件。

接著選擇要?jiǎng)?chuàng)建的exe文件類型,在這里我們選擇第一個(gè),這樣其實(shí)是為程序創(chuàng)建一個(gè)可以雙擊運(yùn)行的啟動(dòng)器,可以保證程序仍具有跨平臺(tái)的特性。如果選擇第二個(gè),可以把程序完全編譯成exe文件,可以更好的保護(hù)你的程序不被反編譯。

接下來(lái)設(shè)置程序的短文件名,源文件夾路徑(可以使用exe4j工程文件的相對(duì)路徑。這里我的exe4j文件保存在launcher目錄下,所以使用的源路徑為[..],即上一級(jí)目錄),以及要生成的exe文件的存放目錄,exe存放目錄相對(duì)路徑為源文件夾,這里我把它指定為當(dāng)前源文件夾。

接下來(lái),可以給我們即將生成的exe文件起一個(gè)名字,如我的“TestProcessBar.exe”,還可以給它指定一個(gè)ico類型的圖標(biāo),其它按默認(rèn)就可以了,如圖:

這里我們還可以為要生成的exe文件附加一些信息

接下來(lái)的這一步,我們需要把程序中所用到的類路徑添加上去。然后指定程序的啟動(dòng)類,其它如果沒(méi)有必要的話,則按默認(rèn)即可,點(diǎn)擊+號(hào)添加類路徑:

基本上我們所需要用到的jar文件都要添加上去,可以逐個(gè)添加上去,也可以添加整個(gè)文件夾或者使用系統(tǒng)環(huán)境變量,為了使程序能夠隨處運(yùn)行,強(qiáng)列建議使用相對(duì)路徑,并且不要使用環(huán)境變量。添加好類路徑之后回到上一步去選擇"Main Class"即可。

接下來(lái)先選擇我們的程序所需要的jre版本, 然后便是選擇我們自帶的jre了,這一步不是必須,但是為了更好的分發(fā)程序,我們自帶了jre, 所以有必要把我們自帶的jre指定為首選的運(yùn)行環(huán)境,如圖選擇Search sequence

默認(rèn)情況下程序會(huì)去系統(tǒng)的注冊(cè)表,環(huán)境變量及相關(guān)的目錄查找jre,因?yàn)槲覀冎恍枰詭У膉re,所以這里我把默認(rèn)的選項(xiàng)移除了(如果覺(jué)得有必要的話可以把默認(rèn)的選項(xiàng)放在自帶jre選項(xiàng)的后面,不刪除),然后添加我們自己的jre所在的目錄路徑,點(diǎn)+號(hào)開(kāi)始:

這里還是建議使用相對(duì)的目錄路徑:

指定jre所在的目錄,如圖:

最后我的jre目錄路徑就是這樣的:.\jre

下面這一步啟動(dòng)畫(huà)面,有興趣的可以自已設(shè)置一下。

程序最終生成了這個(gè)執(zhí)行文件: TestProcessBar.exe
現(xiàn)在使用它,已經(jīng)可以正常利用我們自帶的jre啟動(dòng)程序了,但是整個(gè)程序仍有近19M的大小。
這時(shí)候打個(gè)壓縮包,已經(jīng)可以進(jìn)行發(fā)布了。但是為了更大的壓縮,并制作更加方便易用的程序,下面我們使用Inno Setup進(jìn)行壓縮并制作一個(gè)安裝包。

三、使用Inno Setup為程序制作打包安裝程序
安裝后啟動(dòng)腳本向?qū)В鐖D所示:


這里指定程序的啟動(dòng)文件,即剛才用exe4j創(chuàng)建的exe文件。然后將整個(gè)程序目錄都包含進(jìn)去就可以了(這里因?yàn)槌绦蛑杏幸恍〆xe4j和inno setup的工程文件,故有所選擇),接下來(lái)的基本上一直按下一步就可以了,其中要設(shè)置一下安裝程序的輸出目錄,直到腳本向?qū)瓿?br />



然后執(zhí)行該腳本即可:


然后找到Inno Setup的輸出目錄,就可以看到編譯輸出后的安裝包了,如下圖:setup.exe
大小已經(jīng)壓到了6.38M。

利用這個(gè)就可以快速輕松的安裝你的Java桌面應(yīng)用了。

四、總結(jié)
總體來(lái)講,我們的目的是為了讓我們編寫(xiě)出的程序更加的方便易用。通過(guò)以上的學(xué)習(xí),現(xiàn)在我們已經(jīng)可以制作出可雙擊運(yùn)行、不用用戶另裝jre的、簡(jiǎn)單易用的程序安裝包。大家可以對(duì)jre精簡(jiǎn)、exe啟動(dòng)器的制作、打包安裝進(jìn)行更深入的學(xué)習(xí)。本教程中的工具只是做一個(gè)拋磚引玉,還有很多類似功能的工具有待大家去研究,最后,希望大家能夠制作出屬于自己的簡(jiǎn)單明快的一鍵式Java程序。
原文鏈接:http://www.tkk7.com/javapro/archive/2009/03/24/JavaAppSetup.html