2011-11-17 126 views
1

我正在研究Java富客户端应用程序。与MySQL服务器,我把它作为.jar文件。 我希望用户有一个简单的.exe文件,当运行它时,安装JRE和MySQL服务器,然后他将有一个jar文件的快捷方式,并简单地在它上面工作。如何使用安装程序在简单的.exe文件中安装多个安装?

我试图用比安装更多:Inno Setup的,先进的安装程序,安装程序怡东... 但他们都给予我同样的结果:只要把所有.exe文件JRE和MySQL服务器在目标文件夹安装产品后(即只解压文件而不安装它们)。

任何人都可以帮助我吗?

+0

*“我希望用户有一个简单的.exe文件”*这对Mac或基于nix的机器的最终用户没有用处。 –

+2

嗨,安德鲁... Java Web Start? :) –

+0

是的,应用程序有一个GUI,它并不需要JDK来运行或工作,但我只想测试一下 – user1051052

回答

3

,只要你想(Windows安装程序安装程序是可执行文件)[Run]下InnoSetup脚本文件通过InnoSetup创建您的安装文件时,您可以运行尽可能多的可执行文件。但是,您应该使用Check:来检查每个安装程序是否已安装。

实例安装Java高级图像(JAI)运行时和Visual C++ 2010再发行组件包目标系统(86)用注册表检查:

[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]

+0

这是我第一次用inno,所以我不知道这些东西,我写了这个 [Run] 文件名:“{app} \ {#MyAppExeName}”;描述:“{cm:LaunchProgram,{#StringChange(MyAppName,”&“,”&&")}}";标志:shellexec postinstall skipifsilent 文件名:“{app} \ JRE_1_5_.exe”;参数:“--install MyApp_JRE_1_5_” Filename: “{app} \ JDK_6_WI.exe”;参数:“--install MyApp_JDK_6_WI” 这是对还是错,如果错了,我该怎么写呢?? – user1051052

+0

当你运行InnoSetup来编译你的InnoSetup脚本文件时,它会产生事件。如果有什么问题,我们可以从这个InnoSetup事件跟踪中得知跟踪 –

+0

是否有另一个安装程序在GUI中工作而无需编写代码? 是Excelsior安装程序完成我想要的工作吗? – user1051052

0

Java Web StartdeployJava.js下任何定义是这种部署显而易见的选择。

  1. 使用deployJava.js确保用户拥有正确的最低版本的JRE来运行应用程序。
  2. 使用ExtensionInstallerService调用MySQL安装程序。
  3. (如有必要)使用PersistenceService存储任何安装特定数据(例如,用户选择安装DB的路径)。
  4. 在启动文件中指定桌面快捷方式和菜单项。

请注意,如果您可以在Mac上为MySQL提供安装程序。和* nix,JWS可以通过操作系统对下载进行分区。

相关问题