2014-01-22 22 views
0

我使用Member TLama的Answer中的代码。我认为这正是我需要的,但是我有两个问题:Inno设置Inputbox输入到注册表中的输出代码

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

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

但Inno给了我一个错误。 TLama在他的回答(从上面的链接)中写道,它足够称为GetSerialNumber部分,但我做了。错...

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

希望有人能帮忙,我的英语不好对不起;)

回答

0

您可以使用​​然后{userinfoserial},但如果你想使用TLama's solution然后你应该稍微改变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; 

瓦尔SerialEdits: array of TEdit;必须被设置为全局的脚本。稍后您还可能希望将密钥添加到注册表中(例如CurStepChangedssDone)或编写您自己的功能,该功能将通过SerialResult作为String,然后在Registry Section中调用它。

+0

该串行页面是多个编辑的脚本。它不打算用于除写入内容外的其他任何内容。但是如果你仍然决定使用它,那么你可以创建一个单一目的脚本常量getter,它将返回我的'GetSerialNumber'函数调用的结果。或者修改'GetSerialNumber'函数以匹配脚本常量原型。在安装之前写入注册表对用户不公平。 – TLama

+0

我现在使用了CheckSerial(UserInfoPage)功能。是否有可能已经在框中填入了代码并且用户可以更改它? – Michael

+0

@Michael,为此您可以为[DefaultUserInfoSerial]指定值(http://www.jrsoftware.org/ishelp/index.php?topic=setup_defaultuserinfoserial)指令。 – TLama