Inno安装脚本中的HTTP POST请求

Inno安装脚本中的HTTP POST请求,http,inno-setup,http-post,Http,Inno Setup,Http Post,我想通过POST将Inno安装过程中从用户处收集的一些信息提交给我们的服务器 显而易见的解决方案是包含一个.exe文件,安装程序将该文件解压缩到临时位置并使用参数启动。但是,我想知道-有没有更简单/更好的方法?我没有尝试过,但是ISXKB有一个使用HTTP POST的卸载调查条目: 您可以随时让安装程序使用 要创建http post 您可以在innosetup中编写一个pascal脚本,利用 或者,您可以编写一个vbscript,并使用cscript引擎执行该脚本,以便通过winhttp库执行相

我想通过POST将Inno安装过程中从用户处收集的一些信息提交给我们的服务器


显而易见的解决方案是包含一个.exe文件,安装程序将该文件解压缩到临时位置并使用参数启动。但是,我想知道-有没有更简单/更好的方法?

我没有尝试过,但是ISXKB有一个使用HTTP POST的卸载调查条目:
您可以随时让安装程序使用 要创建http post

您可以在innosetup中编写一个pascal脚本,利用

或者,您可以编写一个vbscript,并使用cscript引擎执行该脚本,以便通过winhttp库执行相同的http调用

这应该指出你至少有3种不同的选择来做你需要的事情


我认为将exe放入其中最不容易出错,但将winhttp库与pascal脚本(由innosetup使用)结合使用将是最简单的。

根据jsobo的使用建议,我提供了一个非常简单的代码来实现这一点。比如说,您希望在实际安装开始之前发送序列号进行验证。在
code
部分,输入:

过程CurStepChanged(CurStep:TSetupStep);
变量
WinHttpReq:变体;
开始
如果CurStep=ssInstall,则
开始
如果AutoCheckRadioButton.Checked=True,则
开始
WinHttpRequest:=CreateOleObject('WinHttp.WinHttpRequest.5.1');
WinHttpReq.Open('POST','',false);
WinHttpReq.SetRequestHeader('Content-Type','application/x-www-form-urlencoded');
WinHttpReq.Send(“”);
{WinHttpReq.ResponseText将保存服务器响应}
结束;
结束;
结束;
Open
方法将HTTP方法、URL以及是否执行异步请求作为参数,似乎我们需要添加
SetRequestHeader
,以便将
内容类型
头设置为
application/x-www-form-urlencoded

WinHttpReq.Status
将保存响应代码,因此要检查服务器是否成功返回:

如果WinHttpReq.状态为200,则
开始
MsgBox('错误',mbError,MB_OK);
结束
其他的
开始
MsgBox('SUCCESS',mbInformation,MB_OK);
结束;
列出
WinHttpRequest
对象的所有方法和属性


此外,为了避免运行时错误(如果无法访问主机,可能会发生错误),最好在代码中使用
try
/
除了
代码以外的代码。

在我们的项目方法中,使用custom.exe可以很好地工作。