我想使用这个代码,但是我需要卸载的部分代码:在下次我打开可执行文件时,它可以读取在这个字段'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