【问题标题】:How to make .exe file for izpack installer .jar file如何为 izpack 安装程序 .jar 文件制作 .exe 文件
【发布时间】:2011-08-04 13:05:54
【问题描述】:

我用 izpack 制作了一个安装程序。它在 .jar 文件中。我想在 .exe 文件中制作它以便分发它。我怎样才能轻松地做到这一点?

【问题讨论】:

    标签: java jar installation exe izpack


    【解决方案1】:

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

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

    【讨论】:

    • 我的应用没有 GUI。 “Java Web Start”可能是一个不错的解决方案,但我想从 Izpack 安装程序 .jar 文件创建 .exe 文件。
    • 你知道“izpack2exe”吗?
    【解决方案2】:

    Andrew 总是喜欢从一开始就推广 Java Web Start 技术 :) 这是一项不错的技术。但是,您还需要先学习技术部分,然后才能开始修改它。

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

    反正我对 Izpack 并不熟悉。但是,对于 izPack 可以做什么,有类似的单独工具可以实现组合结果。我最喜欢的 EXE 创建和安装工具是 Launch4J + InnoSetup + Ant taskEclipse IDE 运行。

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

    如何使用 Launch4J + InnoSetup + Ant build task + Eclipse IDEhttp://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) 提示功能。该软件 必须使用用户完成安装 管理员组下的帐户。 默认 Windows 下的所有文件夹 系统Program Files 设置为 只读,可能会导致问题 到非管理员用户帐户 当试图在其中保存一些东西时。使用 非管理员用户帐户, 应用程序属性必须设置为 启用Run as administrator。一种 快捷方式应在 桌面并设置为启用Run as administrator

    如何解决以下问题:

    (1) Windows Vista/Windows 7 中AppUserModelID Java 支持的问题需要以下解决方案: Launch4j, NSIS, and duplicate pinned Windows 7 taskbar icons

    (2) Java 应用程序的Run as Administrator 问题需要以下解决方案: Request admin privileges for Java app on Windows Vista

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

    因此,在将硬编码文件路径值用于安装在 %ProgramFiles% 中的 Java 应用程序的文件夹和子文件夹时,请务必小心。最好在下面的ISS文件sn-p中设置一个Windows environment variable可以由InnoSetup生成。使用 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"
    

    体验和享受!

    【讨论】:

    • "Java Web Start" 可能是一个不错的解决方案,但我想从 Izpack 安装程序 .jar 文件创建 .exe 文件。
    • 你知道“izpack2exe”吗?
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多