2012-01-30 4 views
5

के बिना .NET विंडोज सेवा को कैसे स्थापित करें मैंने vb.net में एक विंडोज़ सेवा बनाई है। क्या वैसे भी मैं इसके लिए एक इंस्टॉलेशन बना सकता हूं जिसके लिए इंस्टाल्यूट का उपयोग करने की आवश्यकता नहीं है?InstallUtil.exe vb.net

उत्तर

9

इंस्टॉलटिल आवश्यक है, लेकिन चीजों को आसान बनाने के लिए, आप एक सेटअप प्रोजेक्ट बना सकते हैं, ताकि आप सेवा को स्थापित करने के लिए बस एक .msi चला सकें। (यह हुड के नीचे InstallUtil का उपयोग करता है, लेकिन यह बहुत स्थापना सरल करता है।)

एक पूर्वाभ्यास यहाँ है: http://support.microsoft.com/kb/816169

और एक और यहाँ है: http://msdn.microsoft.com/en-us/library/zt39148a(VS.80).aspx

दोनों के बीच मुख्य अंतर यह कोड की राशि है नमूने में। वे दोनों एक ही प्रक्रिया को झुकाते हैं।

पुराने लेख जुड़े हुए पुराने हैं, लेकिन अभी भी वीएस -2010 में लागू होते हैं। मैंने पिछले सप्ताह एक वीएस -2010 सेवा के लिए प्रक्रिया के माध्यम से चलने के लिए दूसरे लेख का उपयोग किया था।

+0

walkthrough के लिए धन्यवाद। मैंने बड़ी सफलता के साथ दूसरे लेख का भी उपयोग किया। हालांकि मेरी सेवा के भीतर मेरे पास फ़ाइलपैथ नामक एक चर है, जो मेरी सेवा द्वारा बनाई गई फ़ाइलों के आउटपुट स्थान को निर्धारित करता है। क्या वैसे भी मैं उपयोगकर्ता को उस स्थान में टाइप करने में सक्षम होने के लिए प्राप्त कर सकता हूं? – Simon

+0

या मुझे एक .bat fle के माध्यम से सिंटल देखना चाहिए? – Simon

+1

यदि मान .config फ़ाइल में हैं तो आप इसे कर सकते हैं। यहां एक ट्यूटोरियल है जो दिखाता है कि सेटअप प्रोजेक्ट इंस्टॉल परिदृश्य में app.config मानों को कैसे संशोधित करें। मैंने इसका इस्तेमाल नहीं किया है, लेकिन यह spromising देखो। http://raquila.com/software/configure-app-config-plplication-settings-during-msi-install/ – David

4

आप इंस्टॉलटल्स से बचना क्यों चाहते हैं?

आप sc आदेश का उपयोग में sc create ...

संपादित के रूप में की कोशिश कर सकते: यहाँ इसके लिए एक MSDN पेज है: http://support.microsoft.com/?kbid=251192

DESCRIPTION: 
     Creates a service entry in the registry and Service Database. 
USAGE: 
     sc <server> create [service name] [binPath= ] <option1> <option2>... 

OPTIONS: 
NOTE: The option name includes the equal sign. 
     A space is required between the equal sign and the value. 
type= <own|share|interact|kernel|filesys|rec> 
     (default = own) 
start= <boot|system|auto|demand|disabled|delayed-auto> 
     (default = demand) 
error= <normal|severe|critical|ignore> 
     (default = normal) 
binPath= <BinaryPathName> 
group= <LoadOrderGroup> 
tag= <yes|no> 
depend= <Dependencies(separated by/(forward slash))> 
obj= <AccountName|ObjectName> 
     (default = LocalSystem) 
DisplayName= <display name> 
password= <password> 
+0

यह एक अच्छा है। मैं इसके बारे में भूल गया था। इससे पहले कि मैंने एमएसआई फाइलों पर मुकदमा कैसे किया, मैंने पहले अपनी सेवा पर इसका इस्तेमाल किया। यह आपको उन चीजों को करने की अनुमति देता है जिन्हें आप इंस्टॉल करने के लिए सेवा के लिए डिफ़ॉल्ट उपयोगकर्ता नाम और पासवर्ड सेट करने के साथ इंस्टॉल नहीं कर सकते हैं। +1। – David

+0

[binPath =] पर विशेष ध्यान देना = और आपके पथ की शुरुआत के बीच एक स्थान होना चाहिए। यह मुझे कई बार मिला है। – AndyM

2

आप रजिस्ट्री प्रविष्टियों के साथ यह हमेशा कर सकते हैं।
कुंजी HKLM\SYSTEM\CurrentControlSet\services

में पाए जाते हैं कुंजी नाम आपके द्वारा बनाए गए अपने सेवा हैंडलर पर सेवा के एम्बेडेड नाम है। निम्न मान प्रासंगिक हैं:

DisplayName = पाठ

ImagePath = सेवा निष्पादन

Start (DWORD) = स्टार्टअप प्रकार (3 = स्वत: प्रारंभ)

की FQ फ़ाइल का नाम सेवाओं प्रबंधक में प्रदर्शित किया जाता है कि

DelayedAutoStart (DWORD) = (1 = देरी)

WOW64 (DWORD) = (0 = 64-बिट अनुप्रयोग, 1 = 32-बिट अनुप्रयोग)

ErrorControl (DWORD) = 0

ObjectName = {username} (सिस्टम खाते के लिए स्थानीय सिस्टम)

अंतर्गत चलाने के लिए अन्य मूल्यों के बहुत सारे हैं, लेकिन जिससे आपको शुरू करने चाहिए।