我正在开发Java富客户端应用程序。使用MySQL服务器,我将其作为.jar
文件。
我希望用户有一个简单的.exe
文件,在运行它时,安装JRE和MySQL服务器,然后他将有一个jar文件的快捷方式,只需处理它。
我尝试使用的不仅仅是安装程序:inno setup,高级安装程序,Excelsior Installer,...
但是他们都给了我相同的结果:在安装产品后,只需将JRE和MySQL服务器的所有.exe
文件放在目标文件夹中(即只需解压缩文件而不安装它们)。
有人能帮助我吗?
答案 0 :(得分:3)
通过InnoSetup创建安装文件时,您可以在InnoSetup脚本文件中的[Run]
下运行任意数量的可执行文件(Windows安装程序安装程序是可执行文件)。但是,您应使用Check:
检查是否已安装每个安装程序。
使用目标系统上的注册表检查安装Java Advanced Imaging(JAI)运行时和Visual C ++ 2010 Redistributable Package(x86)的示例:
[Files]
Source: "install\README.txt"; DestDir: "{app}" Flags: ignoreversion
Source: "install\vcredist_x86.exe"; DestDir: "{app}" Flags: ignoreversion recursesubdirs createsubdirs
Source: "install\jai-1_1_3-lib-windows-i586-jre.exe"; DestDir: "{app}" Flags: ignoreversion recursesubdirs createsubdirs
[Icons]
Name: "{group}\{cm:UninstallProgram, {#MyTitleName}}"; Filename: "{uninstallexe}"; Comment: "Uninstalls {#MyTitleName}"
[Run]
Filename: "{app}\vcredist_x86.exe"; StatusMsg: {cm:RunVCRedist2010x86}; Flags: runhidden shellexec waituntilterminated; Check: IsNotVCRedist2010x86Installed
Filename: "{app}\jai-1_1_3-lib-windows-i586-jre.exe"; StatusMsg: {cm:RunJAIByDefault}; Flags: runhidden shellexec waituntilterminated; Check: IsNotJAIInstalled
[Code]
function IsNotJAIInstalled: Boolean;
begin
Result := not RegKeyExists(HKLM, 'SOFTWARE\SUNW\Java Advanced Imaging');
end;
function IsNotVCRedist2010x86Installed: Boolean;
var
Installed: Cardinal;
begin
Result := RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86',
'Installed', Installed) and (Installed <> 1);
end;
注意:强>
如果[Files]
中的安装程序位于InnoSetup项目的“install”文件夹中,则会在Innosetup过程中压缩它们以生成InnoSetup安装程序可执行文件。当您运行创建的设置时,它将解压缩您定义的{app}
文件夹中的安装程序,它将执行[Run]
下定义的任何内容
答案 1 :(得分:0)
Java Web Start和deployJava.js
是此部署的明显选择。
deployJava.js
确保用户拥有正确的最低版本的JRE来运行该应用。ExtensionInstallerService
。PersistenceService
存储任何特定于安装的数据(例如,用户选择安装数据库的路径)。请注意,如果您可以在Mac上为MySQL提供安装程序。和* nix,JWS可以通过操作系统对下载进行分区。