在 Inno Setup 中以随机数作为参数执行程序?

Execute program with random number as a parameter in Inno Setup?

如何在 Inno Setup 的字符串中包含随机数?

[Run]
#define rndH Random(24) 
#define rndM Random(60)

Filename: "schtasks"; \
  Parameters: "/Create /F /SC DAILY /ST {rndH}:{rndM} /RU SYSTEM /RL HIGHEST /TN ""Program Title"" /TR ""'{app}\program.exe'""";

当我尝试上面的代码时,出现错误

[ISPP] Undeclared identifier: "Random"

谢谢

如果有人有这样的问题,我设法用下面的代码解决了。

[Run]
Filename: "schtasks"; \
  Parameters: "/Create /F /SC DAILY /ST {code:MyRandH}:{code:MyRandM} /RU SYSTEM /RL HIGHEST /TN ""Program Title"" /TR ""'{app}\program.exe'""";

[Code]
var
  h: Integer;
  m: Integer;

function MyRandH(Param: String): String;
begin
  h := Random(24);
  if h < 10 then
    Result := '0' + IntToStr(h)
  else
    Result := IntToStr(h);
end;

function MyRandM(Param: String): String;
begin
  m := Random(60);
  if m < 10 then
    Result := '0' + IntToStr(m)
  else
    Result := IntToStr(m);
end;

您答案中的代码有效,但不必要地复杂:

  • 使用 scripted constant 参数,避免创建两个仅相差一个常量的函数;
  • 使用Format function将数字填充到两位数;
  • 不需要使用全局变量(虽然我的版本实际上根本不需要任何变量)。
[Run]
Filename: "schtasks"; \
  Parameters: "/Create /F /SC DAILY /ST {code:MyRand|24}:{code:MyRand|60} ...";
[Code]

function MyRand(Param: string): string;
begin
  Result := Format('%.2d', [Random(StrToInt(Param))]);
end;