Inno setup Inno设置串行代码的输入框,并将输出到注册表

Inno setup Inno设置串行代码的输入框,并将输出到注册表,inno-setup,inputbox,serial-number,custom-pages,Inno Setup,Inputbox,Serial Number,Custom Pages,我使用了来自成员TLama的代码。我想这正是我需要的,但我有两个问题: 我需要注册表中编辑框中的序列号。这就是我所尝试的: Root: "HKCU"; Subkey: "Software\myProg"; ValueType: string; ValueName: "Serial"; ValueData: "{code:GetSerialNumber}"; Flags: deletevalue uninsdeletevalue 但是Inno给了我一个错误。特拉玛在他的回答中写道(从上面的链接)

我使用了来自成员TLama的代码。我想这正是我需要的,但我有两个问题:

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

Root: "HKCU"; Subkey: "Software\myProg"; ValueType: string; ValueName: "Serial"; ValueData: "{code:GetSerialNumber}"; Flags: deletevalue uninsdeletevalue
但是Inno给了我一个错误。特拉玛在他的回答中写道(从上面的链接),调用
GetSerialNumber
部分就足够了,但我做错了

另一个问题:是否可以用示例代码预先填充serialbox?例如12345或abcde?我只使用了一个10个字符的输入框

希望有人能帮忙,为我的英语不好而抱歉;)

您可以使用,然后使用
{userinfoserial}
,但如果您想使用,则应稍微更改
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;

Var
SerialEdits:TEdit的数组必须设置为脚本的全局。您也可能希望稍后将键添加到注册表(例如,当
ssDone
或其他东西时,使用
CurStepChanged
或编写自己的函数,将
Serial
作为
String
传递到
Result
,然后在
注册表部分调用它,该序列页是一个用于多次编辑的脚本。它不打算用于其他任何东西,除了它是写什么。但是如果您仍然决定使用它,那么您可以创建一个单用途脚本常量getter,它将返回我的
GetSerialNumber
函数调用的结果。或者修改
GetSerialNumber
函数以匹配脚本化常量原型。在安装之前写入注册表对用户不公平。我现在使用了CheckSerial(UserInfoPage)功能。有没有可能,框中已经填充了一个代码,用户可以更改它?@Michael,为此,您可以指定指令的值。数小时的搜索和如此简单的解决方案。。。非常感谢,现在一切正常:)