【原創】使用Install4j為Javafx2.x程式製作Windows安裝包[前篇]

來源:互聯網
上載者:User

最近因項目需要,我需要給自己用Javafx2.1開發的案頭軟體SmartHome製作Windows安裝包,由於過程還蠻複雜,於是記錄下來留給以後看。

 

一.製作工具

1.Fatjar:Eclipse 的外掛程式,它的外掛程式更新網址:http://kurucz-grafika.de/fatjar

2.Install4j:一個使用Eclipse RCP開發的收費的用於為java程式製作安裝包的軟體,提供90天的試用期,官方下載網址:http://www.ej-technologies.com/products/install4j/overview.html

3.JRE:需要的是JDK7u6,:http://jdk7.java.net/download.html  這個是目前(截止2012-7-17)最新的JRE,因為它已經將Javafx2.2包括其中了

詳細資料網址(開源中國):http://www.oschina.net/news/30075/javafx-2-2

誠然,資訊中提到該JDK中提供了兩種用於打包Javafx應用程式的工具,一種是使用jdk內建的工具javafxpackager,一種是使用ant,個人感覺兩種方式都不好用,特麻煩...囧

官網上的協助文檔地址:

Native packaging for JavaFX : https://blogs.oracle.com/talkingjavadeployment/entry/native_packaging_for_javafx

Deploying JavaFX Applications : http://docs.oracle.com/javafx/2/deployment/jfxpub-deployment.htm

 

本教程的主要內容就是使用上面的工具Javafx應用程式製作windows安裝包

 

二.製作步驟

1.安裝JDK7u6,安裝時我指定JRE安裝在和jdk的同一個目錄下,檔案夾的名稱是jre7u6,我安裝之後的目錄是 D:\Java\jdk1.7.0_06  相應的jre目錄是 D:\Java\jre7u6

將SmartHome項目的java環境換成剛才安裝的jdk,方法很多,我習慣建立User Libarary,取名為jre7u6-javafx2.2(隨便命名)

刪除以前的分開來的jre和javafx的rt,添加這個jre一個即可!

2.安裝Farjar,Eclipse外掛程式的線上安裝方式,安裝完成之後重啟Eclipse,點擊項目,選擇build Fat Jar,配置一些基本資料,例如MainClass,ClassPath

第二頁要選中項目所需要的第三方jar包

      

3.經過前兩步得到了Jar包 smarthome0.0.7_fat.jar,在項目的根目錄下,然後建立一個檔案夾SmartHome,存放一些製作安裝包所需要的內容,大致內容其實也就是幾個:

(1)項目打包好的Jar包 smarthome0.0.7_fat.jar

(2)軟體的圖片資源,也就是logo表徵圖,Splash圖片等等,可以沒有

(3)第三方jar包,因為上面的fatjar已經將所需要的第三方jar打包好了,所以這裡可以不用了  ......

4. 安裝Install4j,我下載了試用版,只能試用90天,不過夠我用了,不過,試用版本得到的軟體會有一些煩人的提示喲,不喜歡的話就去下破解版吧或者buy it!

安裝好了之後,建立一個project,取名smarthome,儲存到哪裡都行,這裡我還是儲存到了SmartHome目錄下,因為install4j這個軟體經常需要添加檔案或者檔案夾

它預設是進入的是該project所在的目錄

5.接下來是最關鍵的一步:製作JRE Bundle,這是為了後面的media file的製作做準備

原因是這樣子的:install4j的server上沒有最新的jdk7u6,而客戶機一般是沒有安裝java環境的,即使有,也不可能是最新的jre7u6,所以,要讓軟體綁定這個特定的jre!

為了綁定這個特定的jre,首先就是要製作一個JRE Bundle,然後在後面的media file的配置中可以選擇這個jre bundle

詳細內容可以查看install4j的安裝目錄下的協助文檔:jreBundle.html,寫的很好很詳細

在install4j的主菜單中選擇 Project->Create a JRE Bundle,開始製作。

在 Select the JRE中選擇第一步中安裝的jre7u6目錄

在Output Directory中,這裡是指定產生的jre bundle檔案的匯出路徑,預設是放在install4j的安裝目錄下的jres檔案夾中,因為我之前已經製作過了一次,

所以jres目錄下已經有了這個jre bundle,所以我重新指定匯出到前面建立的SmartHome目錄下,因為我通過一次製作錯誤發現其實尋找路徑包含了當前的install4j project的根目錄!

但是協助文檔中並沒有提到!

在協助文檔 Media File Wizard: Bundled JRE 中說到JRE Bundle檔案的尋找路徑是 $INSTALL4J_HOME/jres and {user home directory}/.install4j5/jres

“If you choose to bundle a JRE by selecting the "bundle the following JRE" radio button, you have to choose a JRE from the drop down list below it. If you select "manual entry" in the drop down list, a text field will appear where you can enter a file name with compiler variables. Please note that you cannot enter a path here, but only a bundle filename that will be searched in $INSTALL4J_HOME/jres and {user home directory}/.install4j5/jres. The existence of this bundle file will be checked only at compile time, not by the wizard.”

         

在Bundle file name是用於指定budle檔案的名稱,指定Java version和Custom ID,不指定的話install4j自己能夠檢測出來的

其他的步驟預設即可,最後產生bundle windows-x86-1.7.0.6_jre7u6-javafx2.2.tar.gz 是一個壓縮檔,至於為什麼是Linux下常見的壓縮檔我也不知道,軟體開發人員喜歡?也未必。。。

產生的budle檔案的名稱  {platform}-{Java version}-{Custom ID} 後面兩個可以自己指定,如果不指定使用預設,那麼產生的bundle檔案是 windows-x86-1.7.0_06-ea.tar.gz

6.開始真正的製作安裝包!我只介紹我需要配置的步驟,不詳細描述Install4j的具體使用!

使用教程參考網址:

Install4j使用指南: http://wenku.baidu.com/view/f8abc62ded630b1c59eeb544.html###

用install4j為Java打包exe教程: http://wenku.baidu.com/view/d0fb8e0716fc700abb68fcc2.html###

系統安裝包設計開發說明(By Install4j): http://wenku.baidu.com/view/20f86306bed5b9f3f90f1ced.html###

 

(1)General Setting

在Application Info中設定軟體的Full Name和Short Name以及版本資訊

在Java Version中設定最小的版本號碼是1.7,並刪除JRE Search Sequence中的所有項---這不是一般的常見的配置方式,因為打包Javafx本身就不常見!它的JRE是必須要隨著安裝包一起走的!

一般情況是這樣子的,按照搜尋的順序選擇有合適的滿足最大最小條件的JRE來運行程式,這裡我們不需要搜尋,而是綁定前面製作好了的JRE!

在Language中選擇第一項:簡體中文

在Media File Options中設定產生的安裝檔案的儲存路徑,為了方便,我還是儲存到SmartHome檔案夾中,檔案的名稱使用預設的pattern來產生

其他的部分保持預設即可

    

 

 

(2)Files

在Define Distribution Tree中點擊 Installation Directory,然後選擇添加檔案或者檔案夾,選中使用Fatjar匯出的jar包和軟體的logo圖片,其他的預設即可

  

最終結果:一個jar,一張圖片

 

(3)Launchers

建立一個launch,選擇 Generated launcher

在Executable info中設定啟動程式exe檔案的名稱:SmartHome,如果只允許一個執行個體運行,那麼選中Allow Only a single running instance of the application

在Icon中設定軟體的icon,選中前面匯入的logo

在Java Invocation中的Class Path中匯入前面的jar包,並指定Main Class

其他部分保持預設即可

                        

      

 

(4)Installer

全部保持預設

 

(5)Media

建立Media File,選擇Installer,並且type是windows

在Configure installer options中設定安裝到客戶機子上的檔案夾的名稱,預設是shortname,我改為了編譯時間的變數fullName的值

重點在Bundle JRE(綁定JRE)中,選擇Bundle the following JRE,並且選擇Manual entry,在後面的文字框中輸入前面製作的JRE Bundle的檔案名稱 windows-x86-1.7.0.6_jre7u6-javafx2.2 

注意,不包含 .tar.gz, 還要注意的是這個檔案是在SmartHome目錄下的,也是可以找到的!詳情看前面的製作介紹!

         

 

(6)Build

點擊Start Build,報錯了,一定要在Application Info中設定一個JRE的搜尋路徑,由於這個JRE是靜態繫結的,所以選擇環境變數  sys.withJre

它的描述中提到了如果JRE是靜態繫結到media file中的,那麼這個變數就是一個包含“_with_jre”的變數,否則就是Null 字元串

           

 

配置好了之後就重新Start Build,最終結果:

 

 

三.安裝過程

雙擊產生的 smarthome_windows_1_0_0.exe 由於使用的是試用版本的install4j,所以會有一個提示表單彈出,確定即可

然後進入安裝嚮導:

(1)

(2)

(3)

(4)

(5)

(6)

 

至此就安裝好了,開始菜單可以看到,點擊運行即可,一開始也會有一個install4j的提示,確定即可

 

登陸介面:

 

主介面:

 

至此,就結束啦!O(∩_∩)O哈哈哈~   Enjoy the world of JavaFx !

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.