Basado en el consejo de jsobo de usar la biblioteca WinHttp, llegué con este muy código simple que hace el truco. Supongamos que desea enviar el número de serie para su verificación justo antes de que comience la instalación real. En la sección de código, poner:
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;
El método Open
toma como argumentos el método HTTP, la URL y la posibilidad de hacer la solicitud asíncrona y parece que tenemos que añadir SetRequestHeader
con el fin de establecer la cabecera Content-Type
a application/x-www-form-urlencoded
.
WinHttpReq.Status
contendrá el código de respuesta, por lo que para comprobar si el servidor ha mostrado:
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 listas de todos los métodos y propiedades del objeto WinHttpRequest
.
Además, para evitar errores en tiempo de ejecución (puede suceder si el host no está disponible), es una buena idea rodear el código con el código try/except
.
En nuestro enfoque de proyecto con .exe personalizado funciona bien. – Sasha