所以我正在尝试使用以下方法在Inno Setup中创建一个带序列号验证的安装程序:
CustomPage for Serial Number in Inno Setup
^对于序列号页面
How can i set the serial for this serial form (Inno Setup)
^用于检查输入的序列号。两者都是由TLama制作的!
所以我试图让代码使用多个序列号,我尝试这样做(使用第二个链接的代码):
CanContinue := GetSerialNumber('-') = '62FFU-GA4N8-T8N6W-WLQJW-N6WLQ-AJKD6';
CanContinue := GetSerialNumber('-') = 'TEST1-RANDO-MFAKE-THING-YBLAB-BLA55';
但是这样做时,只有第二个会起作用。
我真的不太了解Inno安装代码,但任何人都可以解释如何让这项工作取悦吗?谢谢!
答案 0 :(得分:4)
它没有按预期工作,因为你用第二行代码覆盖了CanContinue
值,导致只能用于第二个序列号。
您应该将GetSerialNumber
函数的返回值存储到某个局部变量,以避免多个函数调用,并在语句中使用or
运算符。这样的事情(我还删除了额外的CanContinue
变量,这里没有太大用处):
procedure OnSerialEditChange(Sender: TObject);
var
S: string;
begin
{ store the returned value to the local variable to avoid multliple calls }
S := GetSerialNumber('-');
{ enable the NextButton only when the serial number matches either first }
{ OR the second serial number string }
WizardForm.NextButton.Enabled :=
(S = '62FFU-GA4N8-T8N6W-WLQJW-N6WLQ-AJKD6') or
(S = 'TEST1-RANDO-MFAKE-THING-YBLAB-BLA55');
end;