在Inno Setup中根据多个值验证序列号

时间:2014-04-16 10:47:02

标签: inno-setup verification serial-number

所以我正在尝试使用以下方法在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安装代码,但任何人都可以解释如何让这项工作取悦吗?谢谢!

1 个答案:

答案 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;