2011-02-02 19 views
11

में HTTP POST अनुरोध मैं POO के माध्यम से हमारे सर्वर पर इनो सेटअप स्थापना के दौरान उपयोगकर्ता से एकत्र की गई कुछ जानकारी सबमिट करना चाहता हूं।इनो सेटअप स्क्रिप्ट

स्पष्ट समाधान एक .exe फ़ाइल को शामिल करना होगा जो सेटअप अस्थायी स्थान में निकालेगा और पैरामीटर के साथ लॉन्च होगा। हालांकि, मैं सोच रहा हूं - क्या कोई आसान/बेहतर तरीका है?

+0

कस्टम .exe के साथ हमारे प्रोजेक्ट दृष्टिकोण में ठीक काम करता है। – Sasha

उत्तर

18

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 विधि लेता है, यूआरएल और async अनुरोध करने के लिए है कि क्या और ऐसा लगता है कि हम 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 कोड के साथ कोड को घेरना एक अच्छा विचार है।

+0

इंटरनेट ऑफ़लाइन (या सर्वर) है या नहीं, तो कैसे संभालें? WinHttpReq.Send throiws और इसे छोड़कर/अंत में पकड़ नहीं किया जा सकता है = ( – DuckQueen

3

आप हमेशा अपने संस्थापक उपयोग curl http पोस्ट करने के लिए हो सकता था ...

आप सही InnoSetup में एक पास्कल स्क्रिप्ट लिखने कॉल winhttp library

का उपयोग करने के लिए कर सकता है या फिर आप सिर्फ एक VBScript लिखने और निष्पादित कि cscript इंजन के साथ winhttp पुस्तकालय के माध्यम से एक ही http कॉल करने के लिए कर सकता है।

आपको जो चाहिए उसे करने के लिए आपको कम से कम 3 अलग-अलग विकल्पों को इंगित करना चाहिए।

मुझे लगता है कि वहां एक्सई डालने से कम से कम त्रुटि प्रवण होगी लेकिन पास्कल स्क्रिप्ट (innosetup द्वारा उपयोग किया जाता है) के साथ Winhttp लाइब्रेरी का उपयोग करना सबसे आसान होगा।

संबंधित मुद्दे