C# INNO安装程序序列号验证失败?
我试图在webservice的帮助下验证服务器端用户输入的序列号,,,当用户输入序列号键并单击“下一步”按钮时,应该验证序列号..我使用了下面的代码..验证序列号的方法的名称是ValidateKey()..并且我为该方法和服务传递了一个静态值123456,该值将返回false,,,,但是我的安装正在继续,我在安装的最后一步收到了警报消息框C# INNO安装程序序列号验证失败?,c#,validation,inno-setup,C#,Validation,Inno Setup,我试图在webservice的帮助下验证服务器端用户输入的序列号,,,当用户输入序列号键并单击“下一步”按钮时,应该验证序列号..我使用了下面的代码..验证序列号的方法的名称是ValidateKey()..并且我为该方法和服务传递了一个静态值123456,该值将返回false,,,,但是我的安装正在继续,我在安装的最后一步收到了警报消息框 function ValidateSerialNumber: Boolean; var WinHttpReq: Variant; begin WinH
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;
函数ValidateSerialNumber:布尔值;
变量
WinHttpReq:变体;
开始
WinHttpRequest:=CreateOleObject('WinHttp.WinHttpRequest.5.1');
WinHttpReq.Open('POST','http://localhost:1024/WebService1/Service.asmx?op=ValidateMe",假),;
WinHttpReq.Send('123456');
如果WinHttpReq.状态为200,则
开始
结果:=假;
结束
其他的
开始
结果:=真;
结束;
结束;
函数NextButtonClick(CurPageID:Integer):布尔值;
开始
结果:=真;
如果CurPageID=SerialPage.ID,则
开始
结果:=ValidateSerialNumber;
结束;
结束;
在这里,我想在用户单击“下一步”按钮时停止安装如果服务返回false,如果服务返回true,则他可以继续安装,我哪里出错了?您需要从事件方法验证序列号。如果验证失败,请将
False
值指定给结果
变量,以保持在自定义页面上。如果要让向导继续,请将True
指定给该事件方法的结果
。大概是这样的:
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;
是的,谢谢…这很好,但有一些小问题,当它是错误的时候,首先我想在屏幕上显示一条消息,而不是给用户一个有效的序列号,还有我怎样才能得到用户输入的序列号并将其存储在一个变量中?…我用修改编辑了我的问题。我正确的做法是问另一个问题。这个问题问如果服务返回False,当用户单击next按钮时如何停止,我已经回答了,您已经接受了。这次我将扩展我的答案,但请不要这样做。每个帖子应该有一个问题。此外,接受答案意味着帖子解决了你的问题,这也意味着你以后不会改变问题。谢谢您希望序列号采用哪种格式?获取输入字符串的
GetSerialNumber
支持分隔符字符。或者您有什么不同的要求吗?我做了一个更新,它显示了如何从我不久前编写代码的页面中获取并存储由-
字符分隔的序列号。无论如何,当用户输入无效的序列号时,您是否认为web服务返回的状态与200不同?它不是返回状态200,而是回复文本中的答案?无论如何,这将是另一个问题的主题…非常感谢您抽出时间…现在一切都很好