Java Window 32-bit 打包jar to exe ,打包安裝程式steup

摘要:Java Window 32-bit 打包jar to exe ,打包安裝程式steupi

上一篇文章,講的是如何多jar to one jar 檔,所以相關的lib 可進去主要的jar程式中。

 

這次,我要將這個主要的jar檔,為他製造exe檔,

以下是我的參考連結

http://www.blogjava.net/huliqing/archive/2008/04/18/193907.html

這篇文章會為你介紹如何製作exe檔及steup安裝檔。

 

使用的是exe4j,來製造exe檔,這是下載位置

http://www.ej-technologies.com/products/exe4j/overview.html

 

而試用版的話,最後會出現一些惱人的訊息

因此,接著去下載exe4j的破解程式與操作文章

http://www.pc6.com/softview/SoftView_68764.html

 

而我的過程中,包完後出現了以下的錯誤訊息

 

The JVM found at {0} is damaged.
Please reinstall or define EXE4J_JAVA_HOME to point to an installed 32-bit JDK or JRE

The JVM could not be started. The main method may have thrown an exception

No JVM could be found on your system. 
Please define EXE4J_JAVA_HOME
to point to an installed 32 -bit JDK or JRE or download a JRE from www.java.com
 
以及需要icon,而特別去找了online的圖檔轉icon的工具
 
而要怎麼處理上面那個訊息呢。
那就是
我在include自己的jre檔,必須是32-bit的Java jre
所以就去官方下載了Java 32-bit
安裝後,再去找C:\Program Files (x86)\Java\jdk1.6.0_24\jre,整個copy檔我的安裝目錄下
而exe只能幫你設定好相關的資料位置,但不是將資料都包進去,
所以相對位置必須要注意。
因此我的目錄如下
install/config
install/icon
install/jre1.6
install/log
install/files
install/my.jar
install/my.exe
install/my.exe4j
 
這有點類似像bat,批次檔寫指令碼的概念,只是批次檔在客戶那邊可能就不太好看,用exe檔會比較直覺。
必須人只想要滑鼠點兩下就能執行。
 
而且將jre另外copy一份,利用他來執行JVM,可防止到各個作業系統,有的有裝Java,有的沒裝Java的問題,或Java版本不一致的問題。
只是jre是可以瘦身的,本人還沒學會如何瘦身jre,只能暫且應付了事。
 
最大的問題,大概就是32-bit的這種錯誤訊息。應該就只是一般的相對路徑問題要注意一下。
 
接著
開始包安裝檔
使用的Inno Steup
到此下載QuickStart Pack的版本,執行。
 
執行就會有Inno Steup Complier ,產生新的安裝腳本 script 語法檔案,
過程中,產生後,大概就無法再使用精靈了,但如果看得懂InnoSteup的腳本語法,就簡單了,就可以直接執行,
我是使用精靈產生後,再改寫script
要小心的大概就是[Files]區段,如果是要加入資料夾,那資料夾必須要有檔案,但如果沒有檔案,
那也可以特別改路徑,指定目錄下有空目錄的方式,複製到根目錄下。
DestDir:  "{app}"是他的根目錄,
但使用他的加入資料夾方式,可能會不小心把我要的資料夾 jre1.6
裡面的資料變到根目錄去了。
所以我得改成
DestDir:  "{app}\jre1.6"
 
還有要安裝給對方看到的名稱
也為了可以隨時修改安裝名稱
所以也會動到
#define MyAppName "My Program"
 
安裝路徑也會改到
DefaultDirName={pf}\MyCompany\{#MyAppName}
 
如果重新開機,就想要自動啟動程式的話,可以建一個捷徑在啟動資料夾下,並且使用最高權限安裝程式
[Setup] PrivilegesRequired=admin 
[Icons] Name: "{commonstartup}\My Program"; Filename: "{app}\MyProg.exe"

		
[Registry] Root: HKCU; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "MyProg"; ValueData: """{app}\MyProg.exe"""; Flags: uninsdeletevalue
If you use 'HKLM', again admin privileges is required.
 
------
 
以上參考網路上神人的連結以及相關下載位置也都準備好了。
應該可以解除摸索的時間。
(這過程我摸了兩天,真是orz...)