如何从Inno Setup安装JRE?

我正在尝试通过Inno Setup(以及其他应用程序)安装最新的平台(x64或x86)合适的Java Runtime Environment。我找到了一些脚本示例,这些脚本示例说明了如何检测版本并在正确的情况下进行安装并使其适应我的需要,但我一直遇到以下问题:

无法打开文件“ path \ to \ JREInstall.exe”:
CreateProcess失败:代码5:
拒绝访问

这是严格负责安装JRE的代码:

[Setup]
AppName="JRE Setup"
AppVersion=0.1
DefaultDirName="JRE Setup"

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"

[Files]
Source: "jre-8u11-windows-x64.exe"; DestDir: "{tmp}\JREInstall.exe"; \
    Check: IsWin64 AND InstallJava();
Source: "jre-8u11-windows-i586.exe"; DestDir: "{tmp}\JREInstall.exe"; \
    Check: (NOT IsWin64) AND InstallJava();

[Run]
Filename: "{tmp}\JREInstall.exe"; Parameters: "/s"; \
    Flags: nowait postinstall runhidden runascurrentuser; Check: InstallJava()

[Code]

procedure DecodeVersion(verstr: String; var verint: array of Integer);
var
  i,p: Integer; s: string;
begin
  { initialize array }
  verint := [0,0,0,0];
  i := 0;
  while ((Length(verstr) > 0) and (i < 4)) do
  begin
    p := pos ('.', verstr);
    if p > 0 then
    begin
      if p = 1 then s:= '0' else s:= Copy (verstr, 1, p - 1);
      verint[i] := StrToInt(s);
      i := i + 1;
      verstr := Copy (verstr, p+1, Length(verstr));
    end
    else
    begin
      verint[i] := StrToInt (verstr);
      verstr := '';
    end;
  end;
end;

function CompareVersion (ver1, ver2: String) : Integer;
var
  verint1, verint2: array of Integer;
  i: integer;
begin
  SetArrayLength (verint1, 4);
  DecodeVersion (ver1, verint1);

  SetArrayLength (verint2, 4);
  DecodeVersion (ver2, verint2);

  Result := 0; i := 0;
  while ((Result = 0) and ( i < 4 )) do
  begin
    if verint1[i] > verint2[i] then
      Result := 1
    else
      if verint1[i] < verint2[i] then
        Result := -1
      else
        Result := 0;
    i := i + 1;
  end;
end;

function InstallJava() : Boolean;
var
  ErrCode: Integer;
  JVer: String;
  InstallJ: Boolean;
begin
  RegQueryStringValue(
    HKLM, 'SOFTWARE\JavaSoft\Java Runtime Environment', 'CurrentVersion', JVer);
  InstallJ := true;
  if Length( JVer ) > 0 then
  begin
    if CompareVersion(JVer, '1.8') >= 0 then
    begin
      InstallJ := false;
    end;
  end;
  Result := InstallJ;
end;

在完整的安装脚本中,相同的消息继续出现。如何从该脚本化安装文件中运行JRE安装程序?

我能够找出问题所在:很明显,我在使用这些行时弄错了:

Source: "jre-8u11-windows-x64.exe"; DestDir: "{tmp}\JREInstall.exe"; Check: IsWin64 AND InstallJava();
Source: "jre-8u11-windows-i586.exe"; DestDir: "{tmp}\JREInstall.exe"; Check: (NOT IsWin64) AND InstallJava();

他们应该像这样就位:

Source: "jre-8u11-windows-x64.exe"; DestDir: "{tmp}"; DestName: "JREInstall.exe"; Check: IsWin64 AND InstallJava();
Source: "jre-8u11-windows-i586.exe"; DestDir: "{tmp}"; DestName: "JREInstall.exe"; Check: (NOT IsWin64) AND InstallJava();

看来已经解决了问题。

另外这行我被误认为:

Filename: "{tmp}\JREInstall.exe"; Parameters: "/s"; Flags: nowait postinstall runhidden runascurrentuser; Check: InstallJava()

应该是:

Filename: "{tmp}\JREInstall.exe"; Parameters: "/s"; Flags: nowait runhidden runascurrentuser; Check: InstallJava()

这是我使用此特定工具的有限经验所能提供的最佳解决方案。如果有机会,我将研究PrepareToInstall选项,但这暂时有效。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在inno setup中进行mysql的静默安装?

来自分类Dev

如何使用Inno Setup作为必备组件安装.NET Framework?

来自分类Dev

Inno Setup-如何在安装开始之前安装许多字体?

来自分类Dev

Inno Setup-如何知道安装程序执行Google Chrome时应打开stackoverflow.com?

来自分类Dev

如何覆盖Inno Setup中的功能?

来自分类Dev

如何从Inno Setup安装程序设置全局环境变量?

来自分类Dev

Inno Setup到底如何强制重启

来自分类Dev

如何从注册表获取Office的安装目录以安装Inno Setup安装程序

来自分类Dev

在Inno Setup中取消安装

来自分类Dev

您如何在Inno Setup中找到用户选择的安装路径?

来自分类Dev

Inno Setup:/ verysilent安装后如何自动运行程序?

来自分类Dev

Inno Setup:如何将安装程序本身放入已安装的程序中

来自分类Dev

当Inno Setup安装失败时(在安装程序本身内),如何调用exe?

来自分类Dev

如何在Inno Setup中最小化安装程序?

来自分类Dev

如何使Inno Setup安装程序仅安装在Windows服务器版本上

来自分类Dev

Inno Setup-如何安装Windows Update脱机安装程序

来自分类Dev

Inno Setup-如何设置安装文件夹的权限

来自分类Dev

如何使用AutoIt安装JRE

来自分类Dev

如何使用Inno Setup检查Internet连接

来自分类Dev

Inno Setup的:如何检查如果没有JRE存在并提示下载?

来自分类Dev

如何在Inno Setup中的安装后强制重启

来自分类Dev

如何使用Inno Setup安装程序和卸载程序删除某些文件

来自分类Dev

在Inno Setup中安装部分后,如何移动任务部分?

来自分类Dev

如何使Inno Setup RunList清单框透明?

来自分类Dev

如何由Inno Setup创建的安装程序在“程序和功能”中的列表上显示指定的图标?

来自分类Dev

如何在inno setup中进行mysql的静默安装?

来自分类Dev

Inno Setup Compiler:如何修改文件内容

来自分类Dev

如何解压缩Inno Setup安装程序

来自分类Dev

如何使Inno Setup安装程序仅安装在Windows服务器版本上

Related 相关文章

  1. 1

    如何在inno setup中进行mysql的静默安装?

  2. 2

    如何使用Inno Setup作为必备组件安装.NET Framework?

  3. 3

    Inno Setup-如何在安装开始之前安装许多字体?

  4. 4

    Inno Setup-如何知道安装程序执行Google Chrome时应打开stackoverflow.com?

  5. 5

    如何覆盖Inno Setup中的功能?

  6. 6

    如何从Inno Setup安装程序设置全局环境变量?

  7. 7

    Inno Setup到底如何强制重启

  8. 8

    如何从注册表获取Office的安装目录以安装Inno Setup安装程序

  9. 9

    在Inno Setup中取消安装

  10. 10

    您如何在Inno Setup中找到用户选择的安装路径?

  11. 11

    Inno Setup:/ verysilent安装后如何自动运行程序?

  12. 12

    Inno Setup:如何将安装程序本身放入已安装的程序中

  13. 13

    当Inno Setup安装失败时(在安装程序本身内),如何调用exe?

  14. 14

    如何在Inno Setup中最小化安装程序?

  15. 15

    如何使Inno Setup安装程序仅安装在Windows服务器版本上

  16. 16

    Inno Setup-如何安装Windows Update脱机安装程序

  17. 17

    Inno Setup-如何设置安装文件夹的权限

  18. 18

    如何使用AutoIt安装JRE

  19. 19

    如何使用Inno Setup检查Internet连接

  20. 20

    Inno Setup的:如何检查如果没有JRE存在并提示下载?

  21. 21

    如何在Inno Setup中的安装后强制重启

  22. 22

    如何使用Inno Setup安装程序和卸载程序删除某些文件

  23. 23

    在Inno Setup中安装部分后,如何移动任务部分?

  24. 24

    如何使Inno Setup RunList清单框透明?

  25. 25

    如何由Inno Setup创建的安装程序在“程序和功能”中的列表上显示指定的图标?

  26. 26

    如何在inno setup中进行mysql的静默安装?

  27. 27

    Inno Setup Compiler:如何修改文件内容

  28. 28

    如何解压缩Inno Setup安装程序

  29. 29

    如何使Inno Setup安装程序仅安装在Windows服务器版本上

热门标签

归档