下次执行Inno安装程序制作的安装程序时,在自定义页面上恢复先前输入的数据



我想使用这个代码,但是我需要卸载的部分代码:在下次我打开可执行文件时,它可以读取在这个字段'Service name'中写入的信息。

你能帮我吗?

即使是现在,它在哪里存储写在"服务名称"中的信息?

相关的

:
如何在安装时记录用户输入,以便在卸载时使用?

如果我理解正确的话,您正在寻找一种用先前存储的数据填充输入字段的方法。在您链接的示例中,您可以注意到使用了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

相关内容

最新更新