java打包exe 製作安裝包 With JRE 自啟動

來源:互聯網
上載者:User

又是一個無聊的周末,硬著頭皮給客戶想出一套java程式打包的解決方案

目標:有安裝程式包像安裝qq一樣簡單一直下一步即可 ,可卸載,要求程式自動啟動,不需要單獨安裝JRE,就在寫這套解決方案的時候,我真是百般痛恨微軟.哎無奈啊.幸好最終還是被我想出來了,分享下吧,好久不寫博了.

第一步 jre減肥,刪除jre/lib/rt.jar中不使用的類,刪除charsets.jar中不使用的字元集編碼.MyWork開源項目(http://mywork.sourceforge.net/)中帶了一個瘦身過的JRE6.0,非常小隻有幾M.如果有需要可在此基礎上適當的增肥,例如提示有類找不到,只要在完整的jre下rt.jar包中找到這個類所在的包添加到瘦身過的jre即可.
第二步 使用pack200進行壓縮,壓縮效果非常驚人,具體用法可參考官方手冊,下面是最簡單的壓縮和解壓縮命令(如果要製作安裝包的話不建議壓縮,因為不方便解壓縮,還需要另外寫程式進行解壓)
 壓縮命令D:/xxxxx/pack200 rt.jar.pack.gz rt.jar
 解壓縮命令unpack200 -r jre/lib/rt.jar.pack jre/lib/rt.jar
第三步 將自己的程式打成jar包,注意指定主類,連同依賴的jar包一同放到jre/lib/ext下面,(當然也可以不怎麼幹,通過寫批處理指定CLASSPATH)直接放到ext下面的好處在下面會體現出來

第四步 在jre檔案夾的上層目錄下面編寫啟動批處理%1的作用下面在說
 @SET PATH=./jre/bin;%1;%PATH%;
 @start javaw com.Main(根據實際情況修改為自己的程式入口)

將本地的jre或jdk檔案夾重新命名,並在cmd下敲java以確認原生jre已經失效,點擊批處理,測試如果程式正常啟動的話,繼續往下看,如果程式無法啟動,將@start javaw com.Main改寫為java com.Main重新啟動調試下,看看是不是缺類.

第五步 將批處理編譯成exe程式,使用Quick Batch File Compiler工具(http://www.abyssmedia.com/download.shtml),程式使用起來非常簡單這裡就不在介紹了,E文不好的可以去漢化新世紀下載中文的,注意如果要製作成安裝包必須使用幽靈模式,不可以使用控制台模式.

第六步 製作安裝包使用InnoSetup工具(百度一下到處都有下載),此工具有使用嚮導,這部分就不介紹了,嚮導結束後,會提示產生指令碼,儲存此指令碼並產生exe安裝包,運行安裝包,如果產生出來的檔案程式結構和第四步是一樣的,並且可以啟動並執行話,安裝包製作完成.(這一步選擇程式檔案時批處理exe和jre一同加進來注意jre必須是沒有進行pack2000壓縮的,否則需要在安裝指令碼裡面另寫解壓程式)

第七步 隨windows自動啟動程式,修改安裝指令碼添加如下代碼
[Registry]
Root: HKLM; Subkey: "SOFTWARE/Microsoft/Windows/CurrentVersion/Run"; ValueType: string; ValueName: "程式名"; ValueData: """{app}/主程式.exe"" ""{app}/jre/bin"""

這裡面就用到了%1 熟悉批處理的同學都知道系統自啟動的時候.代表的並不是程式的所在檔案夾,所以這裡傳遞了jre所在檔案夾參數,@SET PATH=./jre/bin;%1;%PATH%;中把jre添加到了path中.

第八步登出下重新登入看看程式是否自動啟動了.(可以在沒有安裝jre的機器上測試下)

 

我的安裝包大小為10M左右,我依賴了很多第三方的jar包,否則還可以更小,最後還可以加個殼或使用rar壓縮下

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.