【发布时间】:2016-11-12 10:14:37
【问题描述】:
我知道已经有问题Execute different command in Inno Setup Run section based on Windows version 有很好的答案。
我的问题是如何为不同的目标 Windows 版本执行不同的命令块。我的问题是,如果目标版本是 Windows 7,我有 ~10-15 个命令需要执行,而对于 Windows 8 或更高版本,我需要执行 ~ 相同数量的不同命令。
是否可以避免在第一种情况所需的每个命令后添加; OnlyBelowVersion: 6.2,在第二个块中的每个命令后添加; MinVersion: 6.2?
我知道有预处理器条件 "#if"、#else 和 #endif 但当然只在编译时有效
问题和答案Determine Windows version in Inno Setup 虽然可能看起来类似于这个问题,但没有回答它。我知道如何在 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;
但是我觉得有点难看……
【问题讨论】: