在过程调用中使用常量和代码(inno setup)

时间:2013-11-26 23:05:53

标签: inno-setup pascal

我尝试从Inno设置中的AfterInstall方法调用一个过程,但它给了我一个语法错误。 {code:GetShortName|{app}}部分是照片。我尝试使用ExpandConstant,但我有同样的错误,+运算符似乎不喜欢那里。我尝试在ExpandConstant中传递整个内容,但我在运行时遇到错误:

“内部错误:表达式错误'脚本错误:无法调用proc。'”

Source: "InputFiles\prog.exe"; 
DestDir: "{tmp}/" ; 
AfterInstall: ExecuteCommand('{tmp}\prog.exe', '--distribute ' + ExpandConstant('{code:GetShortName|{app}}') + '/{#SandboxInternalFolder}')

如何在此位置使用代码和常量?

1 个答案:

答案 0 :(得分:2)

AfterInstall值的参数解析器相当原始 - 它只能处理包含在ExpandConstant调用中的单个值或单个字符串值。您不能使用任何表达式或其他函数调用。

由于ExpandConstant的工作方式,还有一种方法可以编写特定的构造:

AfterInstall: ExecuteCommand(ExpandConstant('{tmp}\prog.exe'), ExpandConstant('--distribute {code:GetShortName|{app}}\{#SandboxInternalFolder}'))

话虽如此,除非有一个非常令人信服的理由将所有内容作为参数传递,否则你应该只指定一个简单的过程名称并直接在那里做任何你想做的事情。这样你可以避免扩展代码常量 - 你也可以直接调用GetShortName。