INNO设置序列号验证失败?

时间:2013-08-25 18:35:13

标签: c# validation inno-setup

我试图在webservice的帮助下验证用户在服务器端输入的序列号,当用户输入序列号并点击下一个按钮时,应该验证序列号。我使用了代码下面的....我验证序列号的方法的名称是ValidateKey()....并且我为该方法传递静态值123456并且服务将为此值返回false ,,,,但我的安装正在进一步前进,我在安装的最后一步获取警报消息框

function ValidateSerialNumber: Boolean;
var
  WinHttpReq: Variant;
begin
  WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1');
  WinHttpReq.Open('POST', 'http://localhost:1024/WebService1/Service.asmx?op=ValidateMe', False);
  WinHttpReq.Send('123456');

  if WinHttpReq.Status <> 200 then
  begin
    Result := False;
  end
  else
  begin
    Result := True;
  end;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
  Result := True;

  if CurPageID = SerialPage.ID then
  begin
    Result := ValidateSerialNumber;
  end;
end;

这里我希望安装在用户单击下一个按钮时停止,如果服务返回false,如果服务返回true,那么他可以进一步安装,我哪里出错了?

1 个答案:

答案 0 :(得分:1)

您需要从NextButtonClick事件方法验证该序列号。如果验证失败,请保留在自定义页面上,将False值分配给Result变量。如果您想让向导继续,请将True分配给该事件方法的Result。像这样:

function ValidateSerialNumber(const SerialNumber: string): Boolean;
var
  WinHttpReq: Variant;
begin
  Result := False;

  WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1');
  WinHttpReq.Open('POST', 'http://localhost:1024/WebService1/Service.asmx?op=ValidateMe', False);
  WinHttpReq.Send(SerialNumber);

  Result := WinHttpReq.Status = 200;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
var
  SerialNumber: string;
begin
  Result := True;

  if CurPageID = SerialPage.ID then
  begin
    SerialNumber := GetSerialNumber('-');
    Result := ValidateSerialNumber(SerialNumber);
  end;
end;