2013-04-04 6 views
22

मैं दृश्य स्टूडियो 2010 में सी # का उपयोग कर एक खिड़कियों सेवा बनाया है मैं स्थापना की प्रक्रिया को स्वचालित के बारे में अनुसंधान के एक बहुत था। बहुत सारी सलाह मिली लेकिन किसी ने मेरे लिए काम नहीं किया। मैंने जो विंडोज सेवा बनाई है, उसकी कई निर्भरताएं हैं और मैं चाहता हूं कि क्लाइंट इंस्टॉलेशन के दौरान यूआई इंटरैक्शन न करे। मैंने इसके लिए एक सेटअप प्रोजेक्ट बनाया है जिसमें इंस्टॉलर के भीतर मेरी सभी निर्भरताएं शामिल हैं।Windows सेवा तैनाती को स्वचालित करने का सबसे अच्छा तरीका क्या है?

प्रक्रिया शामिल:

  • खिड़कियों सेवा
  • पुश सेटअप फ़ाइल (.msi) दूरस्थ स्थान होने के
  • कॉल .msi के लिए एक निर्माण बनाएँ और उपयोगकर्ता को बताए बिना चुपचाप सेवा स्थापित करें।

मैं अब तक क्या किया:

  • दूरस्थ स्थान के लिए फ़ाइलों को पुश करने के लिए
  • powershell स्क्रिप्ट निष्पादित और सेवा स्थापित एक powershell स्क्रिप्ट

कृपया ध्यान रखें कि powershell में रखने को बनाया गया स्क्रिप्ट

sc create "servicename" binpath="somepath" 

प्रोजेक्ट निर्देशिका से सेवा स्थापित करने के लिए प्रयोग किया जाता है न कि सेटअप प्रोजेक्ट का उपयोग करके बनाई गई .msi फ़ाइल को स्थापित करने के लिए, ये दो विशाल अलग-अलग चीजें हैं। यदि आप समझ में नहीं आते हैं तो कृपया उत्तर न दें।

संभावित समाधान:

अब मेरे सवाल है। मैं दूरस्थ स्थान पर विंडोज सेवा इंस्टॉलर कैसे धक्का दे सकता हूं? और कस्टम बिल्ड तर्क कैसे बना सकते हैं और एमएसबिल्ड एक्सटेंशन पैक या एक्ज़ैक टास्क का उपयोग कैसे कर सकते हैं और सेवा इंस्टॉल कर सकते हैं?

मैं इस लगता है कोई है जो (.msi) सेटअप परियोजना द्वारा बनाई का उपयोग कर सेवा स्थापित नहीं किया के लिए बेवकूफ और परेशान सवाल पता है। लेकिन यह मेरी आवश्यकताओं है जो मैं एंटरप्राइज़ पर्यावरण में हफ्तों से हल करने की कोशिश कर रहा हूं।

+0

आप Windows सेवा तैनाती को स्वचालित करने में सफलता प्राप्त किया था? – bhupinder

उत्तर

15

मैं powershell स्क्रिप्ट से काम के थोक करना होगा।

  1. msbuild Exec कार्य का उपयोग करें जैसा कि आपने इसे अपनी निर्माण प्रक्रिया में जोड़ने के लिए उल्लेख किया है। using the exec task to run your powershell script पर एक बहुत अच्छा लेख यहां दिया गया है।

  2. जब से तुम VS 2010 उपयोग कर रहे हैं, एक setup and deployment project बहुत आसान है। अपने समाधान में एक जोड़ें, और अपनी सेवा प्रोजेक्ट का आउटपुट इसमें जोड़ें। यहां adding the setup project for a windows service पर एक लेख दिया गया है।

  3. इंस्टॉलर .msi को रिमोट सर्वर पर कॉपी करने के लिए अपनी पावरहेल स्क्रिप्ट का उपयोग करें। आप बस copy-item [source] [destination] का उपयोग आप फ़ाइल साझा करने के लिए उपयोग किया है, तो कर सकते हैं।

  4. रिमोट मशीन पर सेवा को रोकें। आप उपयोग कर सकते हैं (get-service -ComputerName [destination] -Name [service-name]).Stop() (this question से)

  5. सेवा चुपचाप psexecpsexec \\remotecomputer "[msi-destination-path]" /qnHere's the rest of the command line options for the .msi.

  6. का उपयोग कर स्थापित करें

    (get-service -ComputerName [destination] -Name [service-name]).Start()

का उपयोग कर सेवा प्रारंभ मैं भी powershell के लिए मानकों का एक गुच्छा जोड़ा जाने वाला गंतव्य सर्वर, सेवा का नाम, आदि के लिए स्क्रिप्ट यह अपने निर्माण प्रक्रिया के इस हिस्से बहुत आसान बनाए रखने कर देगा। अपने निर्माण एजेंट सबसे अधिक संभावना गंतव्य मशीन पर एक प्रशासक के रूप में अच्छी तरह से होना जरूरी होगा।

अन्त में, स्रोत नियंत्रण में अपने powershell निर्माण स्क्रिप्ट डाल करने के लिए सुनिश्चित करें!

संपादित करें (जून 2014)
VS 2013 has installer projects again! (क्षमा करें, वी.एस. 2012)

इसके अलावा, अगर पाया this awesome answer कैसे एक सेटअप परियोजना का उपयोग किए बिना एक Windows सेवा स्थापित करने के लिए के बारे में।

+0

धन्यवाद जाकारी उम्मीद है कि इस स्थापित हो जाएगा –

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

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