java實現可安裝的exe程序
通過編寫Java代碼,實現可安裝的exe文件的一般思路:
1、在eclipse中創建java項目,然后編寫Java代碼,將編寫好的Java項目導出一個.jar格式的jar包;
2、通過安裝exe4j軟件,將導出的.jar格式的文件制作成.exe格式的可執行的文件,(注意:此時的.exe文件只是可以執行,還不能夠安裝);
3、通過安裝Inno setup軟件,將可執行的.exe格式的文件、.jar格式的文件以及其它需要的文件制作成一個可安裝的.exe格式的文件;
4、非常注意:在exe4j和Inno setup軟件中選擇的路徑都是相對路徑,因此在導出的jar包、exe4j、Inno setup等軟件執行的過程中,強烈建議一直保持在一個文件夾內進行操作和輸出文件;
通過java代碼實現可安裝的exe格式文件的一般步驟如下:
一、創建java項目,編寫好java代碼,導出jar包:
1、創建java項目,編寫java代碼就不用多說了;
2、如果需要可以將程序中的一些信息,寫在一個項目(jar包)外部的.ini格式的配置文件中去,比如客戶端鏈接服務端的IP、端口號等信息,以后服務端的IP和端口號修改了,只需要修改配置文件即可,不需要修改java代碼了,具體步驟如下:
(非常注意:.ini格式的配置文件最好是和項目(jar)包在一個工作目錄下)
(1)創建.ini格式的配置文件,然后在配置文件中寫入信息,以key-value鍵值對的形式進行書寫:
(2)在項目中編寫java代碼,在項目或程序啟動時,首先讀取.ini格式的配置文件中的信息,將獲取的信息給項目中需要的地方,讀取.ini格式文件信息的代碼如下:
package com.util; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; import com.model.ServerInfo; /** * 讀取連接服務端配置信息的.ini格式文件信息的工具類 * @author admin * */ public class LoadServerInfo { public static ServerInfo LoadIniFile(){ Properties properties = new Properties(); File exeWorkFile = new File("");//獲取jar或exe或項目工作目錄的路徑 String iniPath = exeWorkFile.getAbsolutePath()+File.separator+"serverInfo.ini";//獲取.ini格式文件的路徑 ServerInfo serverInfo = new ServerInfo(); try { properties.load(new FileInputStream(iniPath));//讀取.ini格式文件中的信息 //通過key獲取.ini文件中對應的value值,並將該value值存儲到一個對象中去 serverInfo.setIP(properties.getProperty("IP")); serverInfo.setPortNumber(Integer.valueOf(properties.getProperty("portNumber"))); } catch (IOException e) { e.printStackTrace(); }finally{ return serverInfo;//將存有.ini格式文件中信息的對象返回 } } public static void main(String[] args) { ServerInfo serverInfo = LoadServerInfo.LoadIniFile(); System.out.println(serverInfo); } }
對應的存儲服務端信息的實體類代碼如下:
package com.model; /** * 連接服務端配置信息實體類 * @author admin * */ public class ServerInfo { private String IP;//服務端IP private Integer portNumber;//服務端的Socket端口號 public ServerInfo(){ } public ServerInfo(String iP, Integer portNumber) { super(); IP = iP; this.portNumber = portNumber; } public String getIP() { return IP; } public void setIP(String iP) { IP = iP; } public Integer getPortNumber() { return portNumber; } public void setPortNumber(Integer portNumber) { this.portNumber = portNumber; } @Override public String toString() { return "ServerInfo [IP=" + IP + ", portNumber=" + portNumber + "]"; } }
3、導出jar包:
步驟一:
步驟二:
步驟三:
二、通過安裝exe4j軟件,將jar包制作成可執行的exe格式文件(注意:此時的exe格式文件只是可以執行,但是不可以安裝):
1、下載exe4j軟件,然后按照正常的進行安裝即可:
2、步驟一:
3、步驟二:
4、步驟三:注意選擇路徑的時候一定要選擇存放有jar包、jre等文件的文件夾所在的路徑,這也是輸出.exe格式文件的路徑,強烈建議這樣寫;
5、步驟四:填寫可執行exe文件名稱、選擇exe可執行程序的圖標、一台計算機上是否只允許有一個該程序啟動;
非常注意:ICO格式的文件一定是通過PS輸出ICO格式的圖片,不能夠將其它格式文件強制修改為ICO格式文件,否則會報異常:
java.io.IOException:icon file does not contain icon data;
6-1、步驟五-1:設置編碼格式為UTF-8,輸入內容是:-Dfile.encoding=utf-8
如果不設置編碼格式的話,服務端傳遞給客戶端的中文會在客戶端中顯示會變為亂碼;
6-2、步驟五-2:將項目導出的jar包添加進來,非常注意:此時的jar包路徑一定要相對路徑,因為上述選擇輸出.exe格式文件的路徑就是jar包所在文件夾的路徑,即exe4j軟件工作空間就是jar包所在的路徑,相對路徑是相對於工作空間來說的,因為jar包就在工作空間的根目錄下,因此只接寫jar包的文件名+格式即可;
7、步驟六:選擇執行項目時,首先執行的第一個java類,類似於在BS項目中,訪問某個項目時設置訪問首頁一樣;
8、步驟七:項目的jar包和項目訪問的首類設置好后,直接next下一步即可;
9、步驟八:利用exe4j制作的.exe格式文件默認的是32位操作系統的文件,如果要制作64位操作系統的文件,可以按照下圖進行選擇設置;
10、步驟九:設置程序運行時jre的版本范圍;
11、步驟十:因為創建的是java項目,項目最終是要在jvm上進行運行的,如果要用戶自己安裝jdk,配置環境變量非常的不方便,因此可以制作的過程中將jre封裝進行,可以自己設定好運行環境jre的版本,讓用戶更加方便的使用程序,下圖是為程序設定Jre運行環境的步驟:非常注意:jre要放在和jar包同級目錄下,這樣就可以寫相對目錄了,否則容易出現文件;
12、步驟十一:以后直接默認next即可:
三、通過安裝Inno setup軟件,將可執行的.exe文件、jar文件、jre文件封裝到一個可以安裝的.exe文件:
1、安裝Inno setup軟件,並啟動該軟件:
2、默認next即可:
3、設置程序安裝時默認創建的安裝文件夾以及程序的版本號等信息:
4、默認next即可:
5、選擇可執行的.exe格式文件的目錄:
6、將可執行的.exe文件、jar包、jre文件所在的文件夾添加進來,並且將該文件夾內的所有文件均添加進來,這樣可以設置成相對路徑了就:
7、默認next即可:
8、在.exe文件、jar包、jre文件所在的文件夾內創建1.txt、2.txt、3.txt三個文本文件,並按照下圖依次設置即可,我也不知具體原因,可能是要存儲一些運行過程中的信息吧:
9、默認next即可:
10、設置輸出可安裝的.exe格式文件的位置、輸出的.exe格式的文件名稱、可安裝程序的桌面圖標,
非常注意:
(1)可安裝的.exe格式文件輸出位置一定也要是jar包、jre文件、可執行.exe文件所在的文件夾;
(2)ICO格式的文件一定是通過PS輸出ICO格式的圖片,不能夠將其它格式文件強制修改為ICO格式文件,否則會報異常:
java.io.IOException:icon file does not contain icon data;
11、直接默認next,按照圖片上步驟進行即可:
12、制作完畢,現在可以看一下可以安裝的.exe格式文件了:
13、最終,只需要將可安裝的exe文件,即上圖片中的setup.exe(存儲大的exe文件)發給用戶安裝即可,其它的jar包、jre、可執行exe等文件都封裝在了可安裝exe文件內,只用可安裝的exe程序即可;