2011-04-13 134 views

回答

0

如果應用程序。有一個GUI,你可以從一個網站發佈,Java Web Start提供最好的解決方案。 JWS適用於支持Java的所有平臺,並且受Oracle支持。

(我聽到的.Net非常適用於'僅適用於Windows的解決方案。)

+0

我的應用沒有GUI。 「Java Web Start」可以是一個很好的解決方案,但我想從Izpack安裝程序.jar文件創建.exe文件。 – 2011-04-13 12:08:46

+1

您是否知道「izpack2exe」? – 2011-04-13 12:09:03

8

安德魯總是喜歡從一開始:)這是一個很好的技術推動Java Web Start的技術。但是,在開始修補它之前,您還需要先學習技術部分。

否則,你留下了舊式的EXE分佈模型如下...

我不熟悉的IzPack反正。但是,還有類似的單獨工具可以實現組合結果,即可以執行哪些操作。我最喜歡的EXE創建和安裝工具Launch4J + InnoSetup + Ant任務Eclipse IDE中運行。

Launch4J是一個Java應用程序啓動器。 InnoSetup是安裝創建者 Ant任務幫助開發人員構建和集成步驟。

如何使用Launch4J + InnoSetup + Ant構建任務+ Eclipse的IDEhttp://www.eteks.com/tips/tipCreationExe.html(法語 - 使用谷歌翻譯)

當你想發佈一個基於桌面的Windows EXE文件爲Java的應用程序,你還需要考慮目標環境。當你的目標是Windows XP或更低版本時,這很好。但是,如果您想在Windows Vista和Windows 7下正常工作,它將開始令您大失所望。

最好不要在Windows下存儲需要保存到%ProgramFiles%的應用程序配置,臨時文件等Vista/Windows 7,因爲它現在變成只讀文件夾。爲此目的使用用戶的個人資料文件夾。

當然,你可以通過「以管理員身份運行」運行你的應用程序繞過它,但它涉及到以下設置:

Windows Vista和Windows 7都 通過推行嚴格的用戶訪問策略 用戶訪問控制(UAC) 提示功能。必須使用管理員組下的用戶 帳戶完成軟件 的安裝。 默認的Windows’ 系統Program Files下的所有文件夾設置爲 只讀,它可能會引起問題 以非管理員用戶試圖保存東西在裏面,當賬戶 。要使用 非管理員用戶帳戶運行Java應用程序,必須將 應用程序屬性設置爲 啓用Run as administrator。 快捷方式應在 桌面中創建,並設置爲啓用Run as administrator

如何解決以下問題:

(1)問題在Windows Vista/Windows 7的AppUserModelID Java支持需要以下解決方案: Launch4j, NSIS, and duplicate pinned Windows 7 taskbar icons

(2)問題與Run as Administrator需要以下解決方案: Request admin privileges for Java app on Windows Vista

除此之外,在64位Windows版本下運行時,還需要檢查%ProgramFiles%。 32位Windows和64位Windows之間的路徑不一樣。在64位Windows下,所有32位應用都將進入%ProgramFiles(x86)%

因此,在您的Java應用程序的文件夾和安裝在%ProgramFiles%中的子文件夾中使用硬編碼文件路徑值時要小心。最好設置一個Windows environment variable,它可以由InnoSetup在以下ISS文件片段中生成。使用Java System.getenv("MYAPP_HOME")來檢索變量:

[Registry] 
Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; Flags: uninsdeletevalue; ValueType: string; ValueName: "MYAPP_HOME"; ValueData: "{app}\" 

[Tasks] 
Name: modifypath; Description:"Add application directory to your environmental path"; Flags: unchecked 

[Run] 
Filename: "{app}\MyApp.EXE"; Parameters: """{app}""\"; WorkingDir: "{app}\"; Description: "Run MyApp"; Flags: postinstall nowait skipifsilent 

[Code] 

const 
    ModPathName = 'modifypath'; 
    ModPathType = 'system'; 

function ModPathDir(): TArrayOfString; 
begin 
    setArrayLength(Result, 1) 
    Result[0] := ExpandConstant('{app}'); 
end; 
#include "modpath.iss" 

實驗和享受!

+0

「Java Web Start」可以是一個很好的解決方案,但我想從Izpack安裝程序.jar文件創建.exe文件。 – 2011-04-13 12:07:15

+0

您是否知道「izpack2exe」? – 2011-04-13 12:08:07

0

winrun4j非常容易使用,我唯一的問題是,除非您使用嵌入式JVM進行分發,否則您可能不得不提供64位和32位下載。

相關問題