2012-08-27 33 views
0

對於我的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 

回答

0

如果JVM嵌入在安裝程序中,那麼程序不能使用它。 再次,如果JVM嵌入在程序中,那麼安裝程序將無法使用它。

但是,您仍然可以只使用一個JVM。這是通過將JVM應用到本地文件來完成的。

因此,當您使用winrun4j啓動安裝程序時,它將從嵌入式JVM啓動,然後在安裝結束時,需要將相同的JVM保存到程序文件夾中。

然後,您的程序winrun4j exe可以使用您保存到該文件夾​​的JVM來啓動程序,您可以通過將winrun4j中的「vm.location」設置爲保存的JVM的位置來執行此操作。

Process: 
1) Run the installer exe with the required JVM 
2) During the installation save the embedded JVM to a file 
3) Once the instillation is complete the program exe can launch using the saved JVM 
+0

三江源的回答,現在嘗試它,(以爲我有它的工作但那是因爲我的安裝程序能找到JVM的安裝程序以外),但我看不出如何複製,同時安裝到使用的JVM程序文件夾因此可以被實際程序使用 –

+0

應對JVM應該是一項非常簡單的任務,源文件夾是JVM所在的位置,目標文件夾是您需要讓JVM運行程序的位置。看到這個複製文件夾和文件的例子:http://www.mkyong.com/java/how-to-copy-directory-in-java/ – sorifiend

+0

是的,謝謝我知道如何用Java複製文件,但我不知道如何從安裝程序中調用此複製例程。而且,如果副本不在安裝程序中,它將查找已掛起的用戶,因爲加載JVM文件夾需要一些時間,並且它不會鏈接到進度欄。 –

相關問題