0

我使用了来自成员 TLama 的此答案中的代码。我认为这正是我所需要的,但我有两个问题:

我需要注册表中编辑框中的序列号。这是我尝试过的:

Root: "HKCU"; Subkey: "Software\myProg"; ValueType: string; ValueName: "Serial"; ValueData: "{code:GetSerialNumber}"; Flags: deletevalue uninsdeletevalue

但 Inno 给了我一个错误。TLama 在他的回答中写道(来自上面的链接),调用该GetSerialNumber部分就足够了,但我会做某事。错误的...

另一个问题:是否可以用示例代码预填充串行框?例如 12345 还是 abcde?我只使用一个有 10 个字符的输入框...

希望有人可以提供帮助,并为我的英语不好感到抱歉;)

4

1 回答 1

0

您可以使用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, 'Software\myProg',
    'Serial', S);
  end;
end;

必须将VarSerialEdits: array of TEdit;设置为脚本的全局。您可能还想稍后将键添加到注册表(例如,使用CurStepChangedwhenssDone或其他内容)或编写您自己的函数,该函数将传递SerialResultasString然后在Registry Section.

于 2014-01-22T12:46:35.560 回答