Java打包JRE於exe中方法


對於作Java桌面應用來說,比較煩人的就是安裝部署問題,客戶端是否安裝有jre、jre版本問題、jre去哪下載、如何用jre啟動你的Java應 用?不要說剛接觸電腦的人,就算是比較熟悉電腦,如果沒有接觸過Java,面對一個Java應用,如何在Windows下啟動它,估計都會折騰半天。如果 不是因為這個問題,Java在我的眼里算是最完美的語言了,也是我最喜愛的語言。
    所以我認為這個是導致Java桌面應用被一些人所討厭的最大原因,Java的優勢是“一次編寫,隨處運行”,跨平台特性確實很好,但並不是每個人都需要或都想要跨平台,而且有時候JVM平台或版本問題也會造成“一次編寫,到處測試”的尷尬。
    最好的方式莫過於帶着JRE,讓用戶輕松點擊就能運行。下面我們來解決這樣的問題,有什么好的建議或方法請其他朋友多多指教或補充!
    針對windows平台,讓用戶一鍵式安裝,雙擊使用, 使用工具exe4j + Inno Setup, 這兩個工具都可以在網上找到,不熟悉的可以多搜搜,使用起來也不難。
    帶着JRE運行,JRE的大小應該是最讓人頭疼的,我默認安裝的jre6大小達到80M,而程序只有200-300k左右,感覺非常不合理,分發與網絡傳 輸過程也會大受影響!為了解決這個問題我一直在網絡上搜索“瘦身版”的JRE,無意中搜到了Beansoft老師介紹的一篇關於迷你JRE的文章,相關的 JRE下載后解壓約14M左右,試用了一下,相對於我的應用缺少了一些類文件,關於部分xml操作類,及swing桌面應用框架相關連的部分類也找不到, 最后借鑒了一下,自己把一個完整的JRE從80M瘦到了38M,去除了很多不需要的類文件,當然,如果耐心一點還可以再瘦下去,再抽掉一些類文件。
    在這個基礎上再配合Inno Setup這個安裝包制作工具,最后把整個程序從40M壓到了8M,下面看看關於整個操作過程,關於JRE的瘦身有些煩瑣就不寫了,而且SUN的JRE瘦身計划也在進行,相信很快會有更小的瘦身版JRE推出,自己沒有必要再去費神。
    下面是我的一個完整的Java程序 —— MyLoading

可以看到已經附帶了jre1.6 , 下面先使用exe4j給它制作一個exe執行文件(即上圖的MyLoading.exe),並指定我們自帶的jre1.6 。以下是exe4j的啟動界面,點擊下一步開始創建配置文件。

接着選擇類型,我們選擇第一個,這樣可以保證程序仍具有跨平台的特性。如果選擇第二個,可以把程序完全編譯成exe文件,可以更好的保護你的程序不被反編譯。

接下來設置你的程序的短文件名,源文件夾路徑(如我的:E:\MyLoading),以及要生成的exe文件的存放目錄,exe存放目錄必須指定到源文件夾下,這里我把它指定為E:\Myloading的根目錄下。

接下來,可以給我們即將生成的exe文件起一個名字,如我的“MyLoading”,還可以給它指定一個ico類型的圖標,其它按默認就可以了,如圖:

接下來的這一步,我們需要把程序中所用到的類路徑添加上去。然后指定程序的啟動類,其它如果沒有必要的話,則按默認即可,點擊+號添加類路徑:

基本上你所需要用到的Jar文件都要添加上去,可以逐個添加上去,也可以添加整個文件夾或者使用系統環境變量,為了使你的程序能夠隨處運行,所以還是強列 建議你使用相對路徑,並且不要使用環境變量。添加好你的類路徑之后回到上一步去選擇好你的"Main Class"即可。

接下來先選擇我們的程序所需要的jre版本, 然后便是選擇我們自帶的jre了,這一步不是必須,但是為了更好的分發程序,我們自帶了jre, 所以必須把我們自帶的jre指定為首選的運行環境,如圖選擇:
Search sequence

默認情況下程序會去系統的注冊表,環境變量及相關的目錄查找jre,因為我們只需要自帶的jre,所以這里我把默認的選項移除了,然后添加我們自己的jre所在的目錄路徑,點+號開始:

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

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

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

下面這一步只是簡單的給程序添加一個啟動畫面,然后按默認下一步下一步就可以了。

程序最終生成了這個執行文件: MyLoading.exe
現在使用它,已經可以正常利用我們自帶的jre啟動程序了,但是整個程序仍有40M的大小.( 這里的40M 可是不包括JRE打包的 只是在生成的MyLoading.exe里有指定JRE路徑)
現在我們使用Inno Setup進行壓縮並制作一個安裝包。

Inno Setup的下載安裝請到網上搜索,安裝后啟動腳本向導,如圖所示:
整個過程很簡單:

這里指定你的程序的啟動文件,即剛才用exe4j創建的exe文件,並將你的整個程序目錄都包含進去就可以了,接下來的基本上一直按下一步就可以了,直到腳本向導完成,


然后執行該腳本即可:


然后找到Inno Setup的默認輸出目錄,就可以看到編譯輸出后的安裝包了,如下圖:MyLoading安裝.exe
大小已經壓到了8.86M。

利用這個就可以快速輕松的安裝你的Java桌面應用了。

 

另附inno setup 使用

 

『Inno Setup 簡介』
Inno Setup 是一款免費的安裝制作工具,簡潔而強大,支持 pascal 腳本,既有適合新手的腳本向導,也有適合高手的的腳本編輯器。
Inno Setup是一個不可多得的安裝制作軟件。
常見的 INNO setup安裝包制作思路:腳本向導(默認)+修改代碼(DIY)
『學習任務』

漢化目標:請將示例軟件制成安裝包,並根據上圖藍色箭頭標示位置美化安裝包。
下載文件 下載示例文件下載文件 下載安裝包資源文件
『操作流程』
一.利用腳本向導生成代碼
1.運行INNO setup主程序Compil32.exe,啟動“腳本向導”,“下一步”。注意不要選擇“創建一個新的空腳本文件”。

2.根據向導,添加軟件版本信息,第一行為程序名稱,第二行為含有版本號的程序名稱:

3.設置程序目錄,即安裝路徑,應用程序默認目錄是Program Files(在INNO腳本中表示為{pf}),可根據需要選擇目錄,如字體則安裝在系統盤“Windows”目錄下的“Fonts”文件夾中。

4.設置應用程序文件,包括主程序文件及相關文件,INNO腳本向導中的INNO安裝程序目錄下 “\Examples\MyProg.exe”文件,通過“瀏覽”選擇目標安裝包的主程序,如這里的“PDFUnlocker.exe”;緊接着添加其他相關程序,可以通過“添加目錄”來操作,注意要包含子目錄文件。

5.設置菜單名稱及圖標,默認使用程序名稱作為開始菜單文件夾名稱,當然可以根據需要修改。如果允許用戶在執行安裝過程中改變文件夾名稱,可鈎選相應選項;其他主可執行文件圖標,默認是選中“允許用戶創建桌面快捷方式”,如果不允許,可取消選擇。

6.設置應用程序文檔,即信息文件,包括許可文件等,根據個人習慣添加,本人習慣只有添加一個許可文件,即“漢化說明.txt”文檔。

7.設置安裝程序語言,即安裝包的界面語言,INNO漢化版的默認語言為簡體中文。如果要制作多語言的安裝程序,可以鈎選相應語言

8.編輯器設置,包括安裝包的輸出目錄、安裝包名稱、安裝包圖標等,如圖所示:

9.完成腳本向導,“完成”后提示是否編譯腳本,確定。

二、根據需要,修改腳本代碼:
1.修改安裝包左側位圖,其大小一般為164x314px,在INNO腳本的[Setup]段添加如下代碼:

WizardImageFile=Res\WizardImage.bmp

注:紅色的標記為位圖路徑,可以用相對路徑或絕對路徑
2.修改安裝包右上角位圖,其大小一般為55x55px,在INNO腳本的[Setup]段添加如下代碼:
WizardSmallImageFile=Res\WizardSmallImage.bmp
3.修改安裝包左下角的BeveledLabel內容,常見有兩種方式:
(1)臨時性修改 在INNO腳本的[Messages]段添加如下代碼:

BeveledLabel=軟件漢化:高芳鑾(Raindy)

(2)永久性修改 用記事本打開INNO目錄中的“Default.isl” 修改“BeveledLabel = ”后的內容:

BeveledLabel= 軟件漢化:高芳鑾(Raindy)

4.修改安裝包歡迎標簽內容,即WelcomeLabel2
用記事本打開INNO目錄中的“Default.isl” 修改“WelcomeLabel2 = ”后的內容:

WelcomeLabel2=正在准備安裝 [name/ver]...%n%n推薦您在繼續安裝前關閉所有其它應用程序。%n%n軟件漢化:高芳鑾(Raindy)%n%n電子郵件:Raindyok@qq.com%n%n

注:%n在INNO腳本中為換行符
5.安裝結束后動行主程序或打開文件等,只需在INNO腳本的[Run]段修改代碼:

Filename: {app}\PDFUnlocker.exe; Description: 啟動 PDF Unlocker; Flags: nowait postinstall shellexec;
Filename: {app}\漢化說明.txt; Description: 查看說明; Flags: nowait postinstall shellexec


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM