当前位置: 首页 > 知识库问答 >
问题:

如何在Inno设置中使用Pascal变量?

米楚青
2023-03-14
[Files]
Source: "C:\MyProg.exe"; DestDir: "{app}"; BeforeInstall: GetHome(); Flags: ignoreversion
[INI]
Filename: "{myVarFromPascal}\.MyProg\settings.ini"; Section: "Settings"; Key: "sound"; String: "1"; Flags: createkeyifdoesntexist
[Code]
procedure GetHome();
     var
  myPascalVar: String;
begin
   RegQueryStringValue(HKEY_CURRENT_USER, 'Volatile Environment','USERPROFILE', myPascalVar);
   MsgBox('Value is "' + myPascalVar + '"', mbInformation, MB_OK);
end;

这是我在INNO设置中的三个示例部分。我想在INI部分使用myPascalVar。我该怎么做?

共有1个答案

梁丘波
2023-03-14

您需要将变量更改为全局范围,并为所谓的< code >脚本常量编写一个简单的getter函数:

[Files]
Source: "C:\MyProg.exe"; DestDir: "{app}"; BeforeInstall: GetHome; Flags: ignoreversion

[INI]
Filename: "{code:GetMyVar}\.MyProg\settings.ini"; Section: "Settings"; Key: "sound"; String: "1"; Flags: createkeyifdoesntexist

[Code]
var
  myPascalVar: string;

function GetMyVar(Value: string): string;
begin
  Result := myPascalVar;
end;

procedure GetHome;
begin
  RegQueryStringValue(HKEY_CURRENT_USER, 'Volatile Environment', 'USERPROFILE', myPascalVar);
  MsgBox('Value is "' + myPascalVar + '"', mbInformation, MB_OK);
end;
 类似资料:
  • 我在Inno Setup Script中从DLL文件调用一个函数,它的返回类型是。为了获取整个字符串,我需要取消引用指针,但标准的Pascal语法在这里不起作用。有可能做到这一点吗? 我只有DLL文件。原始语言是德尔福。 我更新到最新版本的Inno Setup 6.0.3,并在我家用Windows 10 Pro机器上测试了以下代码: 我不明白为什么它必须查看我的“临时”目录?我还听说这个问题可能与

  • 我正在尝试使用Inno setup pascal脚本函数RegQueryStringValue从Windows注册表中读取机器GUID。我要找的注册表项是HKEY _ LOCAL _ MACHINE \ SOFTWARE \ Microsoft \ Cryptography \ MACHINE guid 这将无法在HwId变量中设置值。 我错过了什么?

  • 问题内容: 我正在尝试从表中读取数据。该表具有表名列表。 对于数据集的每一行,我想运行几个查询以提取数据并将其插入到临时表中。 这是我所做的 每次我运行此查询时,都会出现此错误 我不知道为什么,因为我在上面的代码中看到了在顶部声明此变量的原因。 取得输出并手动执行。它没有问题,并且该变量将具有应有的datetime值。 问题答案: 您需要使用执行动态查询,可帮助您 变量 演示版

  • 问题内容: 我正在尝试设置一个环境变量,然后将其读回以验证它是否确实被设置。 我有以下内容: 但是,它看起来总是空的,这意味着它可能设置不正确。 我的exec命令正确吗?javadocs声明它可以将字符串参数作为命令。 有任何想法吗? 问题答案: 这行不通。当您开始一个新过程时,该过程将收到环境 的副本 。然后,它对环境变量所做的任何更改都将在该副本中进行,并且在任何时候都不会对调用方可见。 您实

  • 问题内容: 对于多分支项目,我有一个声明性管道脚本,在该脚本中,我想读取文本文件并将结果存储为字符串变量,以供管道的后续步骤访问。使用摘要生成器,我尝试执行以下操作: 为此,这将是我的字符串。 在Jenkins控制台输出中出现错误: 我是否需要使用一个步骤来将Jenkins环境变量的输出设置为?如果是这样,怎么办? 谢谢 问题答案: 该错误是由于只允许您在指令中使用管道步骤。我知道一种解决方法是使

  • 我使用Inno Setup 6. x的目标是在代码中自定义文本,即Pascal Script。我使用Pascal Script的原因是我只想在为真时自定义/更改标签。我该怎么做? 以下两种方法不起作用: > 使用脚本常量: 这显示的是“{code:GetFinishedLabel}”,而不是“BLA”。 在< code>InitializeWizard中自定义向导。 完整(失败)示例: 仍然显示中