Windows Inno设置-如何在线验证序列号

Windows Inno设置-如何在线验证序列号,windows,installation,inno-setup,licensing,Windows,Installation,Inno Setup,Licensing,使用Inno Setup,Setup.exe被提供给客户,根据合同,他只能使用2016年和2017年。但2018年1月1日,他将无法继续2017年的同一系列活动 如何将innosetup的setup.exe限制为起始日期和截止日期 [设置] #定义序号“2017” UserInfoPage=yes [守则] 函数CheckSerial(Serial:String):布尔值; 开始 结果:=Serial='{#SerialNumber}'; 结束; 执行setup.exe 插入许可证密钥 提交

使用Inno Setup,
Setup.exe
被提供给客户,根据合同,他只能使用2016年和2017年。但2018年1月1日,他将无法继续2017年的同一系列活动

如何将innosetup的setup.exe限制为起始日期和截止日期

[设置]
#定义序号“2017”
UserInfoPage=yes
[守则]
函数CheckSerial(Serial:String):布尔值;
开始
结果:=Serial='{#SerialNumber}';
结束;
  • 执行setup.exe
  • 插入许可证密钥
  • 提交后,我想检查URL
    https://www.stackoverflow.com/query/license?id=2017
  • 如果在此基础上的结果为ok或nok,则继续安装

从以下代码开始,您将得到如下结果:

[设置]
UserInfoPage=yes
[守则]
{CheckSerial事件函数的存在将显示序列号框。}
{但这里我们接受任何非空序列。}
{我们将只在下一个按钮单击中验证它,}
{因为在线验证可能需要很长时间。}
函数CheckSerial(Serial:String):布尔值;
开始
结果:=(序列号“”);
结束;
函数NextButtonClick(CurPageID:Integer):布尔值;
变量
WinHttpReq:变体;
Url:string;
开始
结果:=真;
如果CurPageID=wpUserInfo,则
开始
WinHttpRequest:=CreateOleObject('WinHttp.WinHttpRequest.5.1');
网址:='https://www.example.com/serial.php?serial=' +
WizardForm.UserInfoSerialEdit.Text;
WinHttpReq.Open('GET',Url,False);
WinHttpReq.Send(“”);
{根据服务器的实现,使用wither HTTP状态代码(.status)}
{或返回的“页面”(.ResponseText)的内容]
{这里我们使用HTTP状态代码:}
{200=序列号有效,其他任何=序列号无效,}
{如果无效,则显示.ResponseText}
结果:=(WinHttpReq.Status=200);
如果没有结果的话
MsgBox(WinHttpReq.ResponseText,mbError,MB_OK);
结束;
结束;
一个简单的服务器端验证PHP脚本(
serial.PHP
)如下所示:


从以下代码开始,您将得到如下结果:

[设置]
UserInfoPage=yes
[守则]
{CheckSerial事件函数的存在将显示序列号框。}
{但这里我们接受任何非空序列。}
{我们将只在下一个按钮单击中验证它,}
{因为在线验证可能需要很长时间。}
函数CheckSerial(Serial:String):布尔值;
开始
结果:=(序列号“”);
结束;
函数NextButtonClick(CurPageID:Integer):布尔值;
变量
WinHttpReq:变体;
Url:string;
开始
结果:=真;
如果CurPageID=wpUserInfo,则
开始
WinHttpRequest:=CreateOleObject('WinHttp.WinHttpRequest.5.1');
网址:='https://www.example.com/serial.php?serial=' +
WizardForm.UserInfoSerialEdit.Text;
WinHttpReq.Open('GET',Url,False);
WinHttpReq.Send(“”);
{根据服务器的实现,使用wither HTTP状态代码(.status)}
{或返回的“页面”(.ResponseText)的内容]
{这里我们使用HTTP状态代码:}
{200=序列号有效,其他任何=序列号无效,}
{如果无效,则显示.ResponseText}
结果:=(WinHttpReq.Status=200);
如果没有结果的话
MsgBox(WinHttpReq.ResponseText,mbError,MB_OK);
结束;
结束;
一个简单的服务器端验证PHP脚本(
serial.PHP
)如下所示: