gpt4 book ai didi

inno-setup - 从 [Run] Afterinstall 调用 [code] 中的两个过程

转载 作者:行者123 更新时间:2023-12-04 23:44:02 28 4
gpt4 key购买 nike

我的代码部分 Pro1 和 Pro2 中有两个过程,pro1 从用户那里获取值,pro2 使用该值,所以我希望这些过程以相同的顺序一个接一个地执行。我知道我们可以使用 Afetrinstall 从 [Run] 部分调用程序。我可以使用单个 Afterinstall 以相同的顺序调用这两个过程 Pro1 和 Pro2 吗?

还有一件事,我如何根据代码中编写的条件调用运行部分中的特定文件名?那有可能吗?我可以多次调用相同的文件名吗?我是 inno 的新手,任何人都可以帮助我。

最佳答案

是否可以将多个功能分配给“AfterInstall”参数?

不,这是不可能的,但您可以简单地从一个函数调用另一个函数。因此,您将为 AfterInstall 分配一个函数参数和来自分配的另一个函数调用。在脚本中它可能看起来像这样:

[Files]
Source: "MyProg.exe"; DestDir: "{app}"; AfterInstall: AfterInstallProc

[Code]
procedure AfterInstallProc;
begin
// do something here
AnotherProcedure;
end;

procedure AnotherProcedure;
begin
// do something else here
end;

是否可以有条件地为 [Run] 部分条目的“文件名”参数赋值?

是的,是的。您可以声明所谓的 scripted constant这是一个具有指定函数的常量,您可以在其中将值返回给参数。在这样的脚本示例中:

[Run]
Filename: "{code:GetRunEntryFileName}";

[Code]
function GetRunEntryFileName(Value: string): string;
begin
// the "SomeCondition" is meant to be a certain variable or statement which
// evaluates upon your needs; to the Result you'll return the same as you'd
// write in the script including constants, like e.g. '{app}\MyProg.exe'
if SomeCondition then
Result := 'calc.exe'
else
Result := 'charmap.exe';
end;

类似的你可以申请[Run]的所有参数除 Flags 以外的部分参数,必须在编译时知道。

我可以从 [Run] 部分执行相同的应用程序吗?

是的,你可以。这部分不关心您正在执行什么,因此甚至可以有完全相同的条目,或者只是多次针对同一应用程序的条目。所以即使这是可能的:

[Run]
Filename: "{app}\MyProg.exe";
Filename: "{app}\MyProg.exe";
Filename: "{app}\MyProg.exe"; Parameters: "/x"

但这只有在你运行时才有实际意义,例如某个外部安装程序,您需要使用不同的命令行参数多次调用它。我想不出以完全相同的方式多次执行同一个应用程序的理由。

关于inno-setup - 从 [Run] Afterinstall 调用 [code] 中的两个过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21276501/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com