在Unicode Inno Setup中是否可以调用函数(代码)并在“Run Section”中返回一个值(字符串)?

时间:2017-02-06 14:08:27

标签: function inno-setup

在Inno Setup脚本的[Run]部分下面,我有以下内容......

[Run]
Filename: "{sys}\cscript.exe"; \
  Parameters: """{tmp}\myScript.vbs"" ""{code:GetStringValue}"" {#CONST_PORT}"; \
  Description: "Setting the port to {#CONST_PORT}."; \
  StatusMsg: "Setting the port to {#CONST_PORT}."; \ 
  Tasks: SetPorts; \
  Check: SetPort({#CONST_PORT}); \
  Flags: runhidden;

然后在[Code]部分,我有以下内容......

[Code]
function GetStringValue: String;
var
  version: Integer;
begin
  version := 20;
  result := 'This is a test showing the int ' + IntToStr(version);
end;

该对象的函数将返回[Run]部分中的字符串。目前我可以告诉您在{code:}部分使用[Run]是否需要调用返回Boolean值的函数。有没有解决的办法?我需要能够在[Run]部分中将动态字符串传递给我的VBScript。

1 个答案:

答案 0 :(得分:1)

  

目前我可以告诉您在{code:}部分使用[Run]是否需要调用返回Boolean值的函数。< / p>

那不是真的。

引用Scripted constants上的文档:

  

被调用函数必须有1个名为Param的String参数,必须返回String或布尔值,具体取决于使用常量的位置

通常,在code:参数中使用脚本化(Check)常量时,它必须返回一个布尔值。在其他地方(据我所知),它必须返回一个字符串。

所以你的脚本是正确的,除了你缺少参数(它是强制性的,即使你实际上不需要/使用它):

[Code]
function GetStringValue(Param: string): string;
...