對於我的Windows桌面應用程序的安裝,我使用izpack創建安裝程序,然後使用winrun4j(也是izpack安裝的一部分)從exe中調用它,爲實際運行添加另一個winrun4j包裝應用程序一旦安裝。爲安裝程序和應用程序只嵌入一個JRE到WInrun4j
麻煩的是,對於win4runj.exe工作,它需要使用正確的Java類型,即如果exe是64位它必須運行64位jvm,如果exe是32位它必須運行32位jvm。這對於用戶混淆,所以我打算趁winrun4j是否可以使用嵌入式Java虛擬機,然後進行兩個下載提供
- widgetinstaller.exe(32位)
- widgetinstaller64.exe(64-位)
但我的困惑是,爲每個下載我只想一旦嵌入JVM,但不能工作了如何做到這一點,因爲我有兩個EXE文件(安裝程序,程序本身),這會是完成?
更新
有工作,如果我安裝JVM兩次(一次列入install.jar時的IzPack建,而一旦添加到壓縮文件,所以可以通過widgetinstaller.exe使用)。
- widgetinstaller.exe駐留在C:\代碼\插件\安裝
- 下載32位JRE從Oracle
- 安裝到C:\代碼\插件\ 32bitJVM
- 編輯izpack.xml,加入
<file src="C:/code/widget/JVM32bit" targetdir="$INSTALL_PATH"/>
- 添加安裝vm.location = 32bitJVM/bin中/客戶端/ JVM.DLL到c:\代碼\插件\安裝\ widgetinstaller.ini
- 添加插件本身vm.location = ../32bitJVM/bin中/客戶端/ JVM.dll到c:\ code \ widget \ widget.ini
- 重建代碼,並拉上拉鍊,包括32bitJVM在zip文件中創建widgetinstaller.zip(這包含32bitJVM,widgetinstaller.ini,widgetinstaller.exe,widgetinstaller.ico和install.jar)
- 解壓後雙擊widgetinstaller.exe安裝
但我只想JVM一次,我知道我需要刪除從izpack.xml的<file src="C:/code/widget/JVM32bit" targetdir="$INSTALL_PATH"/>
,但後來我怎麼抄我32bitJVM到程序的安裝文件夾
同JVM需要保存到程序文件夾中。
似乎這必須在izpack本身以外完成?
編輯
溶液在Can I install a file using Izpack 5 without it being part of the install.jar built by izpack
使用在描述的IzPack鬆包,但它是相當混亂什麼必須的路徑設置,文檔錯誤地暗示你把一個相對鏈接http://izpack.org/documentation/installation-files.html#the-packs-element-packs。
例
的IzPack INSTALL.XML是在C:\代碼\的widget \安裝
<pack name="Base" loose="true" required="yes" preselected="yes">
<description>JVM</description>
<file src="C:\Code\Widget\JVM" targetdir="$INSTALL_PATH"/>
</pack>
當包起來的IzPack安裝應具備:
JVM
install.jar
setup.exe
三江源的回答,現在嘗試它,(以爲我有它的工作但那是因爲我的安裝程序能找到JVM的安裝程序以外),但我看不出如何複製,同時安裝到使用的JVM程序文件夾因此可以被實際程序使用 –
應對JVM應該是一項非常簡單的任務,源文件夾是JVM所在的位置,目標文件夾是您需要讓JVM運行程序的位置。看到這個複製文件夾和文件的例子:http://www.mkyong.com/java/how-to-copy-directory-in-java/ – sorifiend
是的,謝謝我知道如何用Java複製文件,但我不知道如何從安裝程序中調用此複製例程。而且,如果副本不在安裝程序中,它將查找已掛起的用戶,因爲加載JVM文件夾需要一些時間,並且它不會鏈接到進度欄。 –