JavaFX 使用 xjar 加密并且打包成 exe安裝運行

記錄一下(針對 Windows 的加密摘悴、打包殃恒、安裝梨水、運行)
一般都很少人會使用 JavaFX 去寫桌面程序休雌,但是因為某些原因导俘,不得不使用暮蹂,并且還需要對外發(fā)布安裝包甫题。為了防止代碼被看到(因為 jar 包是類似于壓縮包授嘀,解壓就能看到全部內(nèi)容)憨琳,所以使用了 xjar 進行加密诫钓。
xjar_github
首先按照 github 的 readme 將 jar 包引入,并且增加 xjar-plugin篙螟。

// 打包命令
mvn clean package -Dxjar.password=自定義的密碼

打包后菌湃,會出現(xiàn)一個 xjar.go 文件,這個文件就是執(zhí)行文件遍略,通過該文件去執(zhí)行 java -jar ***.xjar 去運行 jar包惧所,從而將加密后的 javafx 程序運行起來

maven 打包后骤坐,target 目錄下有幾個關(guān)鍵文件

  • ***.jar -- 未加密的 jar 包
  • ***.xjar -- 加密后的 jar 包
  • xjar.go -- 真正執(zhí)行文件

這個時候的運行命令是 xjar.go java -jar ***.xjar

此時,還需要將這些文件打包成安裝包下愈,并且需要有一個可執(zhí)行文件用來安裝后運行纽绍。
因為 xjar.go 是真正運行文件,所以就需要將 xjar.go 編譯成 .exe 文件势似,這個可以使用 go 官方的命令
go build (go build 具體參數(shù)不寫了拌夏,如果需要打包其他相關(guān)文件到同一個exe,還有圖標等履因,百度都有)

如果需要 go 編譯后的 .exe 文件能直接運行障簿,而不是執(zhí)行上述命令(雙擊 .exe 文件直接運行)
則需要對 maven 打包出的 xjar.go 做億點點改造(本機沒 xjar.go 文件了,所以直接文字說明吧)

通過觀察 xjar.go 文件發(fā)現(xiàn)栅迄,內(nèi)部是通過調(diào)用 cmd 命令行來直接執(zhí)行 java -jar ***.xjar 的站故。
具體的入口在 main() 方法,里面會拿到傳入的參數(shù)(就是 java -jar ***.xjar)毅舆,這三個參數(shù)西篓,然后去調(diào)用后續(xù)方法。

  1. 首先將第一個參數(shù) java 拿出來憋活,作為執(zhí)行命令
  2. 后面的參數(shù)作為 java 命令的執(zhí)行參數(shù)岂津,如果要設置某些如 -Xmx 這些,則放在第一個參數(shù)后面余掖,倒數(shù)第一寸爆、第二個參數(shù)前面
  3. 倒數(shù)第二個參數(shù)會作為 -jar,如果不是會報錯
  4. 倒數(shù)第一個參數(shù)就是執(zhí)行的 xjar
// 這是生成 xjar.go 中獲取 jar 包名稱的方法盐欺,會直接尋找 -jar 參數(shù)的下一個參數(shù)作為執(zhí)行的 jar 包名稱
// find jar name from args
func JAR(args []string) (string, error) {
    var jar string

    l := len(args)
    for i := 1; i < l-1; i++ {
        arg := args[i]
        if arg == "-jar" {
            jar = args[i+1]
        }
    }
    if jar == "" {
        return "", errors.New("unspecified jar name")
    }
    return jar, nil
}

因為默認參數(shù)是要自己傳的(看xjar.go java -jar ***.xjar能看出來)赁豆,所以為了讓直接執(zhí)行 xjar.go 能有這種效果,則直接修改生成的 xjar.go 文件

main()入口處冗美,直接寫死運行命令魔种,將main()方法傳入的 args[] 手動賦值

  1. 把 args[0] 賦值成 java
  2. 后續(xù)的賦值成啟動參數(shù)
  3. 最后兩個為 -jar***.xjar
    上述操作完成后,運行 xjar.go 就能直接啟動 jar包了粉洼,但是這個時候發(fā)現(xiàn)會彈出 cmd 窗口來執(zhí)行节预,所以還要隱藏
將 xjar.go 打包成 exe 的命令換成 go build  -ldflags="-H windowsgui"
// 并且在這行代碼下添加下面那行代碼
cmd := exec.Command(java, args...)
// 添加的代碼
cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}

這個實現(xiàn)運行打包后的 xjar.exe就能隱藏彈窗直接啟動 jar 包了

最后就是使用 inno setup 打包成安裝包了。
具體執(zhí)行文件直接選 xjar.exe 那個文件属韧,這個文件自己修改名稱安拟。xjar 包和其他需要的文件夾也一起打包進去,為加密的 Jar 包就不需要了宵喂。具體的打包方法直接百度就好了糠赦。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子拙泽,更是在濱河造成了極大的恐慌淌山,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顾瞻,死亡現(xiàn)場離奇詭異泼疑,居然都是意外死亡,警方通過查閱死者的電腦和手機荷荤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門退渗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蕴纳,你說我怎么就攤上這事氓辣。” “怎么了袱蚓?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長几蜻。 經(jīng)常有香客問我喇潘,道長,這世上最難降的妖魔是什么梭稚? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任颖低,我火速辦了婚禮,結(jié)果婚禮上弧烤,老公的妹妹穿的比我還像新娘忱屑。我一直安慰自己,他們只是感情好暇昂,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布莺戒。 她就那樣靜靜地躺著,像睡著了一般急波。 火紅的嫁衣襯著肌膚如雪从铲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天澄暮,我揣著相機與錄音名段,去河邊找鬼。 笑死泣懊,一個胖子當著我的面吹牛伸辟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播馍刮,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼信夫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起忙迁,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤脐彩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后姊扔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體惠奸,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年恰梢,在試婚紗的時候發(fā)現(xiàn)自己被綠了佛南。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡嵌言,死狀恐怖嗅回,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情摧茴,我是刑警寧澤绵载,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站苛白,受9級特大地震影響娃豹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜购裙,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一懂版、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧躏率,春花似錦躯畴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至夯到,卻和暖如春倡鲸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背黄娘。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工峭状, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人逼争。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓优床,卻偏偏與公主長得像,于是被迫代替她去往敵國和親誓焦。 傳聞我的和親對象是個殘疾皇子胆敞,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容