根据Windows版本在Inno Setup Run部分中执行不同的命令块

姆维德尔高兹

我知道在基于Windows版本的Inno Setup Run部分中已经存在执行其他命令的问题,并且答案非常好。

我的问题是如何针对不同的目标Windows版本执行不同的命令块。我的问题是,如果目标版本是Windows 7,则我需要执行约10-15条命令,而对于Windows 8或更高版本,则需要执行相同数量的不同命令。

是否可以避免在; OnlyBelowVersion: 6.2第一种情况下需要; MinVersion: 6.2在每个命令之后以及第二个块中的每个命令之后添加

我知道有预处理条件"#if"#else以及#endif但这当然在编译时只能

问题和答案虽然可能看起来与此问题相似,但在Inno Setup中确定Windows版本不会得到回答。我知道如何在Inno Setup中确定Windows版本。我也知道这些; MinVersion: 6.2; OnlyBelowVersion: 6.2选项。我在问是否可以指定一个命令块(10-15个命令)并将该选项应用于整个块,而不是分别应用于每个命令。

目标不是避免“加密版本号”,而是避免多次重复相同的条件。并避免在块会随着时间增长而忘记它的风险。

我到目前为止发现的解决方案是使用CurStepChanged过程:

procedure CurStepChanged(CurStep: TSetupStep);
begin
   if CurStep = ssPostInstall then
      if IsWindows8OrLater() then
         MsgBox('Running on Windows 8 Or Later', mbInformation, MB_OK)
         { 15 comands or call of W8-specific procedure goes here }
      else begin
         MsgBox('Running on Windows 7', mbInformation, MB_OK);
         { 15 comands or call of W7-specific procedure goes here }
      end;
end;

但这对我来说有点难看...

马丁·普里克里(Martin Prikryl)

该文件中没有任何块控制功能.iss

为了避免重复神秘的版本号,您所能做的就是定义一个预处理器变量,例如:

#define Windows8AndNewer "MinVersion: 6.2"
#define Windows7AndOlder "OnlyBelowVersion: 6.2"

[Run]
Filename: "Windows8-Command1.exe"; {#Windows8AndNewer}
Filename: "Windows8-Command2.exe"; {#Windows8AndNewer}

Filename: "Windows7-Command1.exe"; {#Windows7AndOlder}
Filename: "Windows7-Command2.exe"; {#Windows7AndOlder}

唯一的其他方法是使用函数重新实现该[Run]部分[Code]Exec

procedure Run(FileName: string);
var
  ResultCode: Integer;
begin
  Exec(FileName, '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
  { some error checking }
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssPostInstall then
  begin
    if GetWindowsVersion() >= $06020000 then
    begin
      Log('Running on Windows 8 or later');
      Run('Windows8-Command1.exe');
      Run('Windows8-Command2.exe');
    end
      else
    begin
      Log('Running on Windows 7 or older');
      Run('Windows7-Command1.exe');
      Run('Windows7-Command2.exe');
    end;
  end;
end;

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据Windows版本在Inno Setup Run部分执行不同的命令

来自分类Dev

如何根据Inno Setup中的Windows版本向卸载程序添加/不添加快捷方式?

来自分类Dev

Inno Setup中的Windows帐户查询列表

来自分类Dev

根据在线文件设置Inno Setup安装程序版本

来自分类Dev

Inno Setup中的TTreeView

来自分类Dev

Inno setup - 如何在设置悬停中更改版本?

来自分类Dev

Inno Setup:在[运行]部分中执行Pascal功能

来自分类Dev

根据Inno Setup中的在线列表检查IP地址

来自分类Dev

Inno Setup中的“ java -version”命令具有不同的结果

来自分类Dev

Inno Setup,检测Java版本

来自分类Dev

inno setup中的“ Not in a loop”错误

来自分类Dev

在Inno Setup中取消安装

来自分类Dev

Inno Setup中的条件DisableProgramGroupPage

来自分类Dev

在Inno Setup中记录TWindowsVersion

来自分类Dev

Inno Setup 中的动态密码

来自分类Dev

如果安装程序中的字体版本高于安装的字体版本,请使用Inno Setup安装字体

来自分类Dev

如果安装程序中的字体版本高于安装的字体版本,请使用Inno Setup安装字体

来自分类Dev

在setup.py中执行python版本

来自分类Dev

在Inno Setup图标部分计算命令参数的值

来自分类Dev

根据Inno Setup中选择的语言创建命令行参数快捷方式

来自分类Dev

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

来自分类Dev

如何获取包含在inno setup installer exe文件中的文件版本(exe和dll)?

来自分类Dev

如何在Inno Setup中删除由以前版本的应用程序添加的文件

来自分类Dev

如何在Inno Setup中为OutputBaseFilename的版本组件填充零

来自分类Dev

如何检查Inno Setup中是否安装了特定的Python版本?

来自分类Dev

Inno Setup Unicode版本的Pascal脚本中“字符集”上的“类型不匹配”错误

来自分类Dev

Inno Setup [Code]部分变量为[Registry]

来自分类Dev

Dirs部分的Inno Setup Check功能

来自分类Dev

如何在Inno Setup中仅根据条件安装文件(外部配置文件)

Related 相关文章

  1. 1

    根据Windows版本在Inno Setup Run部分执行不同的命令

  2. 2

    如何根据Inno Setup中的Windows版本向卸载程序添加/不添加快捷方式?

  3. 3

    Inno Setup中的Windows帐户查询列表

  4. 4

    根据在线文件设置Inno Setup安装程序版本

  5. 5

    Inno Setup中的TTreeView

  6. 6

    Inno setup - 如何在设置悬停中更改版本?

  7. 7

    Inno Setup:在[运行]部分中执行Pascal功能

  8. 8

    根据Inno Setup中的在线列表检查IP地址

  9. 9

    Inno Setup中的“ java -version”命令具有不同的结果

  10. 10

    Inno Setup,检测Java版本

  11. 11

    inno setup中的“ Not in a loop”错误

  12. 12

    在Inno Setup中取消安装

  13. 13

    Inno Setup中的条件DisableProgramGroupPage

  14. 14

    在Inno Setup中记录TWindowsVersion

  15. 15

    Inno Setup 中的动态密码

  16. 16

    如果安装程序中的字体版本高于安装的字体版本,请使用Inno Setup安装字体

  17. 17

    如果安装程序中的字体版本高于安装的字体版本,请使用Inno Setup安装字体

  18. 18

    在setup.py中执行python版本

  19. 19

    在Inno Setup图标部分计算命令参数的值

  20. 20

    根据Inno Setup中选择的语言创建命令行参数快捷方式

  21. 21

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

  22. 22

    如何获取包含在inno setup installer exe文件中的文件版本(exe和dll)?

  23. 23

    如何在Inno Setup中删除由以前版本的应用程序添加的文件

  24. 24

    如何在Inno Setup中为OutputBaseFilename的版本组件填充零

  25. 25

    如何检查Inno Setup中是否安装了特定的Python版本?

  26. 26

    Inno Setup Unicode版本的Pascal脚本中“字符集”上的“类型不匹配”错误

  27. 27

    Inno Setup [Code]部分变量为[Registry]

  28. 28

    Dirs部分的Inno Setup Check功能

  29. 29

    如何在Inno Setup中仅根据条件安装文件(外部配置文件)

热门标签

归档