如何为izpack installer .jar文件制作.exe文件

我用izpack制作安装程序。 它在.jar文件中。 我想在.exe文件中创建它以便分发它。 我怎么能以简单的方式做到这一点?

Andrew总是喜欢从一开始就推广Java Web Start技术:)这是一个很好的技术。 但是,在开始修补之前,您还需要先学习技术部分。

否则,您将使用旧式EXE分发模型,如下所示……

无论如何,我对Izpack并不熟悉。 但是,有类似的单独工具来实现izPack可以做的组合结果。 我最喜欢的EXE创建和安装工具是从Eclipse IDE运行的Launch4J + InnoSetup + Ant任务

Launch4J是一个Java应用程序启动器。 InnoSetup是一个安装创建者Ant任务,可帮助开发人员构建和集成步骤。

如何使用Launch4J + InnoSetup + Ant构建任务+ Eclipse IDE : http : //www.eteks.com/tips/tipCreationExe.html (法语 – 使用谷歌翻译)

当您考虑为Java应用程序分发基于桌面的Windows EXE文件时,还需要考虑目标环境。 当您使用Windows XP或更低版本时,它很好。 但是,当您希望在Windows Vista和Windows 7下正常运行时,它将开始成为一个主要的挫折。

最好不要存储需要在Windows Vista / Windows 7下保存到%ProgramFiles%应用程序配置,临时文件等,因为它现在变为只读文件夹。 出于此目的,请使用用户的配置文件夹。

当然,您可以通过“以管理员身份运行”运行应用程序来绕过它,但它涉及以下设置:

Windows Vista和Windows 7通过用户访问控制(UAC)提示function引入了严格的用户访问策略。 必须使用Administrators组下的用户帐户安装软件。 默认Windows系统Program Files下的所有文件夹都设置为只读,并且在尝试保存其中的某些内容时可能会导致非管理员用户帐户出现问题。 要使用非管理员用户帐户运行Java应用程序,必须将应用程序属性设置为启用Run as administrator身份Run as administrator 。 应在桌面中创建快捷方式,并将其设置为启用Run as administrator身份Run as administrator

如何解决以下问题:

(1) AppUserModelID问题Windows Vista / Windows 7中的Java支持需要以下解决方案: Launch4j,NSIS和重复固定的Windows 7任务栏图标

(2)Java应用程序的Run as Administrator问题需要以下解决方案: 在Windows Vista上请求Java应用程序的管理员权限

除此之外,还需要在64位Windows版本下运行时检查%ProgramFiles% 。 32位Windows和64位Windows之间的路径不同。 在64位Windows下,所有32位应用程序都将进入%ProgramFiles(x86)%

因此,在将硬编码文件路径值用于Java应用程序的文件夹和%ProgramFiles%中安装的子文件夹时要小心。 最好设置一个Windows environment variable ,该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" 

实验并享受!

如果应用程序。 有一个GUI,你可以从一个网站分发, Java Web Start提供了最好的解决方案。 JWS适用于支持Java的所有平台,并且受Oracle支持。

(我听说.Net适用于’仅限Windows’解决方案。)

winrun4j非常容易使用,我唯一的问题是,除非你使用嵌入式JVM进行分发,否则你可能需要同时提供64位和32位的下载。