下次执行Inno Setup-made安装程序时,在自定义页面上恢复以前输入的数据

时间:2014-08-12 23:46:47

标签: inno-setup pascalscript

我想使用此代码,但我需要卸载的代码部分:在下次打开可执行文件时,它可以读取此字段“服务名称”中写入的信息。

可以帮帮我吗?

即使现在它存储了写在“服务名称”中的信息吗?

相关:
How do I record user input during install, so it can be used during uninstall?

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您正在寻找用以前存储的数据填充输入字段的方法。在您链接的示例中,您可以注意到使用了GetPreviousData函数,该函数仅用于读取先前由SetPreviousData函数调用存储的数据。

原则是,当RegisterPreviousData事件触发时,您为要存储的每个值调用SetPreviousData函数,为每个值提供一些唯一键(此函数的参数被调用) ValueName这不是很自我解释的。例如,以下是如何存储来自两个不同输入字段的值:

procedure RegisterPreviousData(PreviousDataKey: Integer);
begin
  SetPreviousData(PreviousDataKey, 'MyUniqueKey1', InputPage.Values[0]);
  SetPreviousData(PreviousDataKey, 'MyUniqueKey2', InputPage.Values[1]);
end;

正如我已经提到的,以这种方式存储的数据可以通过使用GetPreviousData函数读取,您可以在添加输入字段后立即调用该函数。在此功能中,您将传递与用于存储数据相同的密钥,除了您还传递默认值,当给定密钥的数据不会被返回时,将返回该值。找到。对于上面的代码示例,它可以是这样的:

procedure InitializeWizard;
var
  Index: Integer;
begin
  InputPage := CreateInputQueryPage(wpWelcome, 'Caption', 'Description', '');

  Index := InputPage.Add('Input field 1:', False);
  InputPage.Values[Index] := GetPreviousData('MyUniqueKey1', 'Default value');

  Index := InputPage.Add('Input field 2:', False);
  InputPage.Values[Index] := GetPreviousData('MyUniqueKey2', 'Default value');
end;

此机制使用注册表作为值的存储。更具体地说,它与存储卸载信息的密钥相同。实际上,RegisterPreviousData事件方法的PreviousDataKey参数传递的内容是刚刚创建的卸载数据注册表项的句柄,用于告诉SetPreviousData函数存储数据的位置

该注册表项路径中的值键由固定的Inno Setup CodeFile:前缀部分组成,后跟SetPreviousData函数中传递的唯一键。因此,对于我们的示例,Inno Setup会在卸载数据注册表项路径中创建以下值键:

Inno Setup CodeFile: MyUniqueKey1
Inno Setup CodeFile: MyUniqueKey2