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

Muh*_*riq 10 java installer exe jar izpack

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

eee*_*eee 8

安德鲁总是喜欢从一开始就推广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下正常运行时,它将开始成为一个主要的挫折.

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

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

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

如何解决以下问题:

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

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

除此之外,您还需要%ProgramFiles%在64位Windows版本下运行时进行检查.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"
Run Code Online (Sandbox Code Playgroud)

实验并享受!


And*_*son 0

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

(我听说 .Net 对于“仅限 Windows”的解决方案效果很好。)