2013-03-04 5 views
9

मैंने इनो सेटअप के साथ बनाई गई मेरी स्थापना के बाद निष्पादित करने के लिए बैच स्क्रिप्ट लिखी।इनो सेटअप के साथ विंडोज सेवा कैसे स्थापित करें?

sc create MySQL start= auto DisplayName= MySQL binPath= "C:\A Nova Solução Informática\MySQL 5.5\bin\mysqld" --defaults-file="C:\A Nova Solução Informática\MySQL 5.5\my.ini" 

लहजे के साथ पत्र, इस कोड की समस्या हैं मैं इसे अमल नहीं कर सकते हैं अगर मैं cmd ​​में बल्लेबाजी फ़ाइल को खोलने, लेकिन जब: समस्या यह है कि मैं अपने सेवा सृजन के लिए निम्न आदेश पंक्ति है मैं टाइप करता हूं कि सेवा सामान्य रूप से बनाई जाती है। मैं कैसे इसे ठीक कर सकता हूं?

+1

आप 'आफ्टरस्टॉल' और फिर 'एक्ज़ेक' फ़ंक्शन या '[रन]' 'फ़ाइल नाम: "{cmd}" का उपयोग कर सकते हैं; पैरामीटर्स: "एससी MySQL प्रारंभ = ऑटो डिस्प्लेनाम = MySQL binPath =" "सी: \ ए नोवा सोलुकाओ इनफॉर्मेटिका \ MySQL 5.5 \ bin \ mysqld" "--defaults-file =" "सी: \ ए नोवा सोलुकाओ इनफॉर्मेटिका \ MySQL 5.5 \ my.ini "" "; ध्वज: runhidden' – RobeN

+1

अपनी बैच फ़ाइल की शुरुआत में 'CHCP 65001' जोड़ने का प्रयास करें और इसे बिना बीओएम के यूटीएफ -8 के रूप में सहेजें। @ रोबेन, या बस '[रन]' खंड। – TLama

+0

@RobeN, आपके समाधान ने आंशिक रूप से मेरी मदद की, समस्या यह है कि सेवा के इंस्टालेशन के बाद, cmd प्रक्रिया खोली जाती है और इंस्टालेशन स्वयं को अंतिम रूप नहीं देता है। – juniorgarcia

उत्तर

3

आप इस आदेश को [RUN] अनुभाग (TLama सुझाए गए अनुसार) में जोड़ने का प्रयास कर सकते हैं या [CODE] अनुभाग में AfterInstall फ़ंक्शन बना सकते हैं।

[Run] 
Filename: "{cmd}"; Parameters: "sc create MySQL start= auto DisplayName= MySQL 
binPath= ""C:\A Nova Solução Informática\MySQL 5.5\bin\mysqld"" 
--defaults-file=""C:\A Nova Solução Informática\MySQL 5.5\my.ini"""; 
Flags: runhidden 
+1

क्या किसी ने इस कोड का परीक्षण किया है? मैं इस कोड का उपयोग करने की कोशिश कर रहा हूं लेकिन यह काम नहीं करता है। Cmd विंडो बस पॉप अप और कुछ भी नहीं करेगा। – Newbee

+0

@Govs ने 'पैरामीटर '(' cmd/c sc ...') की शुरुआत में '/ c' के साथ प्रयास किया था, या बस 'फ़ाइल नाम:" एससी "; पैरामीटर: "बनाएं ..." ' – Matthieu

+0

'फ़ाइल नाम:" एससी "; पैरामीटर्स: "service_name start = auto displayName = display_name binPath =" "{sys} \ service_name.exe" "बनाएँ; ध्वज: runascurrentuser runhidden' मेरे लिए काम करता है –

11

अनुसूचित जाति सीधे कॉल के बजाय, यह क्लीनर (और किसी भी त्रुटि या सेवा निर्भरता से निपटने के लिए आसान) use the API है। ध्यान दें कि यह उदाहरण मानता है कि आप एएनएसआई इनो का उपयोग कर रहे हैं, लेकिन यह यूनिकोड के लिए इसे संशोधित करने के लिए काफी सरल है।

व्यक्तिगत रूप से, हालांकि, मैं सेवा निष्पादन योग्य स्वयं को इंस्टॉल/स्टार्ट/स्टॉप/अनइंस्टॉल कमांड बनाना चाहता हूं, इसे स्वयं पंजीकरण कर रहा हूं। जाहिर है कि किसी तीसरे पक्ष की सेवा के लिए खुद को करना संभव नहीं है, लेकिन आप यह देखने के लिए जांच सकते हैं कि यह पहले से ही इस तरह का समर्थन करता है या नहीं।

एक अंतिम बिंदु यह है कि आपको सी: फ़ोल्डर के पथ को हार्ड-कोड नहीं करना चाहिए। आपको इसके बजाय {app} का उपयोग करना चाहिए।

+0

क्या आपके पास पहले से ही एपीआई का यूनिकोड संस्करण है? मुझे इसकी बहुत आवश्यकता होगी। धन्यवाद! –

+2

@MaikenRoskilde आप यूनिकोड Inno सेटअप का उपयोग कर रहे हैं तो बस 'A' प्रत्यय सिर्फ' @ '' external' प्रविष्टियों में हस्ताक्षर करने से पहले एक 'W' के बजाय बदल जाते हैं। कोई अन्य बदलाव की आवश्यकता नहीं है। – Miral

+0

सिल्वियो Iaccarino द्वारा लिंक्ड स्क्रिप्ट मेरे लिए काम नहीं किया। मैं यूनिकोड Inno सेटअप उपयोग कर रहा था और के रूप में सुझाव दिया है लेकिन अभी भी यह काम करने के लिए नहीं मिला प्रत्यय को बदलने की कोशिश की। मुझे एक त्रुटि मिल रही है: "servicemanager उपलब्ध नहीं है" या इसी तरह। एक विकल्प के स्क्रिप्ट/पुस्तकालय कि ** मेरे लिए काम किया है ** के लिए [इस उत्तर] (https://stackoverflow.com/a/5416744/207981) देखें। – bszom