我想使用此代码,但我需要卸载的代码部分:在下次打开可执行文件时,它可以读取此字段“服务名称”中写入的信息。
可以帮帮我吗?
即使现在它存储了写在“服务名称”中的信息吗?
相关:
How do I record user input during install, so it can be used during uninstall?
答案 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