问题描述
||
我使用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(法语)-使用Google翻译
当您考虑为Java应用程序分发基于桌面的Windows EXE文件时,还需要考虑目标环境。以Windows XP或更低版本为目标时很好。但是,当您想使其在Windows Vista和Windows 7下正常运行时,它将成为一个主要的挫败感。
最好不要存储需要保存到Windows Vista / Windows 7下的“ 0”中的应用程序配置,临时文件等,因为它现在变成了只读文件夹。为此,请使用用户的配置文件文件夹。
当然,您可以通过使用“以管理员身份运行”运行应用程序来绕过它,但是它涉及以下设置:
Windows Vista和Windows 7具有
引入了严格的用户访问策略
通过用户访问控制(UAC)
提示功能。该软件
安装必须由用户完成
管理员组下的帐户。
默认Windows”下的所有文件夹
系统
Program Files
被设置为
只读,可能会导致问题
到非管理员用户帐户
尝试在其中保存某些内容时。要使用
非管理员用户帐户,
应用程序属性必须设置为
使能Run as administrator
。一种
快捷方式应在
桌面,并设置为启用Run as
administrator
。
如何解决以下问题:
(1)Windows Vista / Windows 7中的“ 4” Java支持问题需要以下解决方案:
Launch4j,NSIS和重复的固定Windows 7任务栏图标
(2)Java应用程序中的“ 5”问题需要以下解决方案:
请求Windows Vista上Java应用程序的管理员特权
除此之外,在64位Windows版本下运行时,您还需要选中ѭ0。 32位Windows和64位Windows之间的路径不同。在64位Windows下,所有32位应用程序都将进入ѭ7。
因此,在将硬编码的文件路径值用于安装在%ProgramFiles%
中的Java应用程序的文件夹和子文件夹时,请务必小心。最好在下面的ISS文件片段中设置一个可由InnoSetup生成的ѭ9。使用JavaSystem.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\"
尝试并享受!
,如果是app。有一个GUI,您可以从网站上分发它,Java Web Start提供了最佳的解决方案。 JWS适用于所有支持Java的平台,并且受Oracle支持。
(我听说.Net适用于“仅Windows”解决方案。)
,winrun4j非常易于使用,它的唯一问题是,除非您使用嵌入式JVM进行分发,否则可能必须同时提供64位和32位下载。