我使用了来自成员 TLama 的答案中的代码。我认为这正是我所需要的,但我有两个问题:
我需要注册表中编辑框中的序列号。这是我尝试过的:
Root: "HKCU"; Subkey: "SoftwaremyProg"; ValueType: string; ValueName: "Serial"; ValueData: "{code:GetSerialNumber}"; Flags: deletevalue uninsdeletevalue
但是Inno给了我一个错误。TLama在他的回答中写道(来自上面的链接),称GetSerialNumber
部分就足够了,但我确实如此。错。。。
另一个问题:是否可以用示例代码预填充串行框? 例如 12345 或 abcde?我只使用一个带有 10 个字符的输入框......
希望有人能帮忙,对不起我的英语;)
您可以使用UserInfoPage
然后{userinfoserial}
但是如果您想使用TLama的解决方案,那么您应该稍微更改NextButtonClick
函数:
function NextButtonClick(CurPageID: Integer): Boolean;
var
S: string;
I: Integer;
begin
Result := True;
if CurPageID = SerialPage.ID then
begin
S := '';
for I := 0 to High(SerialEdits) do
S := S + SerialEdits[I].Text + '-';
SetLength(S, Length(S)-1);
RegWriteStringValue(HKEY_CURRENT_USER, 'SoftwaremyProg',
'Serial', S);
end;
end;
脚本的 varSerialEdits: array of TEdit;
必须设置为全局。您可能还想稍后将密钥添加到注册表(例如,在ssDone
或其他情况下使用CurStepChanged
)或编写自己的函数,该函数将Serial
作为String
传递给Result
,然后在Registry Section
中调用它。