Inno 설치 중에 사용자로부터 수집 한 일부 정보를 POST를 통해 Google 서버에 제출하고 싶습니다.Inno 설치 스크립트에서 HTTP POST 요청
명백한 해결책은 설치 프로그램이 임시 위치로 추출하고 매개 변수를 사용하여 실행하는 .exe 파일을 포함하는 것입니다. 그러나 궁금한 점이 있습니다. 더 쉽고/좋은 방법이 있습니까?
Inno 설치 중에 사용자로부터 수집 한 일부 정보를 POST를 통해 Google 서버에 제출하고 싶습니다.Inno 설치 스크립트에서 HTTP POST 요청
명백한 해결책은 설치 프로그램이 임시 위치로 추출하고 매개 변수를 사용하여 실행하는 .exe 파일을 포함하는 것입니다. 그러나 궁금한 점이 있습니다. 더 쉽고/좋은 방법이 있습니까?
WinHttp 라이브러리 사용에 대한 jsobo 조언을 바탕으로,이 은 매우 트릭을 수행하는 간단한 코드와 함께 제공됩니다. 예를 들어, 실제 설치가 시작되기 바로 전에 확인을 위해 일련 번호를 보내려합니다. ,
procedure CurStepChanged(CurStep: TSetupStep);
var
WinHttpReq: Variant;
begin
if CurStep = ssInstall then
begin
if AutoCheckRadioButton.Checked = True then
begin
WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1');
WinHttpReq.Open('POST', '<your_web_server>', false);
WinHttpReq.SetRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
WinHttpReq.Send('<your_data>');
// WinHttpReq.ResponseText will hold the server response
end;
end;
end;
Open
방법은 인수로 HTTP 방식을 취하는 URL 및 비동기 요청을 할 수 있는지 그리고 우리가 application/x-www-form-urlencoded
에 Content-Type
헤더를 설정하기 위해 SetRequestHeader
를 추가해야 할 것 같다 : 코드 섹션에서 넣어 .
WinHttpReq.Status
는 서버가 성공적으로 반환하면 이렇게 확인, 응답 코드를 개최한다 :
if WinHttpReq.Status <> 200 then
begin
MsgBox('ERROR', mbError, MB_OK);
end
else
begin
MsgBox('SUCCESS', mbInformation, MB_OK);
end;
http://msdn.microsoft.com/en-us/library/aa384106.aspx 목록 모든 방법과 WinHttpRequest
개체의 속성을.
또한 런타임 오류 (호스트에 도달 할 수없는 경우)가 발생하지 않도록하려면 try/except
코드로 코드를 묶는 것이 좋습니다.
인터넷이 오프라인 (또는 서버) 인 경우 어떻게 처리합니까? WinHttpReq.Send throiws를 제외하고는/finally = ( – DuckQueen
: 당신은 항상 HTTP 포스트를 만들기 위해 당신의 설치 사용 curl 을 가질 수 http://www.vincenzo.net/isxkb/index.php?title=Uninstall_Survey
을 ...
당신은 winhttp library
를 사용하는 호출을 할 권리 innosetup에 파스칼 스크립트를 작성할 수 있습니다 또는 당신은 단지 VBScript를을 작성하고 WinHTTP에 라이브러리를 통해 같은 HTTP 호출을 수행 할에서 cscript 엔진이를 실행할 수 있습니다.
최소한 3 가지 옵션이 필요합니다.
나는 exe를 넣는 것이 가장 오류가 발생하기 쉽지만 파스칼 스크립트 (innosetup이 사용하는)와 winhttp 라이브러리를 이용하는 것이 가장 간단하다고 생각한다.
사용자 지정 .exe를 사용한 프로젝트 접근 방식에서 문제가 없습니다. – Sasha