Inno Setup - 在[code]

时间:2016-11-22 20:15:06

标签: function inno-setup pascalscript

我正在尝试阅读Windows注册表,以便我的应用更新可以检索以前保存的安装路径作为其DefaultDirName。

我读过一些我应该调用函数的地方,例如:

DefaultDirName="{code:GetPath}"

问题是我需要定义一个默认路径,以防函数找不到前一个。例如,'C:\ MyPath'。所以我这样做了:

[Code]
function GetPath(Value: String): String;
var
  OrigPath: string;
begin
  Result := '{sd}\MyPath';
  if RegQueryStringValue(HKCU, 'Software\MyApp', 'PathExec', OrigPath) then
     Result := OrigPath;
end;

这不起作用。当我运行安装程序时,在目标目录对话框中,字面意思是“C:\ PathOfMySetup \ {sd} \ MyPath”,而不是“C:\ MyPath”。

我应该在第一个“Result:=”行写一下,以便在系统驱动器上创建“MyPath”?

感谢。

1 个答案:

答案 0 :(得分:0)

Pascal脚本中的常量并没有神奇地扩展。您必须使用ExpandConstant function显式扩展它们:

Result := ExpandConstant('{sd}\MyPath');