2012-08-02 15 views
8

मैं TopShelf का उपयोग कर विंडोज सेवा बनाने की कोशिश कर रहा हूं। सब कुछ सेवा के एक उदाहरण के साथ ठीक काम करता है। हालांकि, जब मैं पूरे सेवा फ़ोल्डर को एक अलग स्थान पर कॉपी करता हूं और फिर उस स्थान पर स्थापना चलाता हूं जो इसे "स्टार्टअप" पर लटकता है।TopShelf उसी मशीन पर एक ही सेवा के एकाधिक इंस्टॉल करें

मैं एक कॉन्फ़िगरेशन फ़ाइलों में मान के आधार पर servicename, वर्णन, displayaname असाइन करता हूं इसलिए कोई नामकरण संघर्ष नहीं है।

+0

इसके साथ मेलिंग सूची में शामिल हों, और यदि आप कर सकते हैं तो लॉग आउटपुट शामिल करें। https://groups.google.com/forum/#!forum/topshelf-discuss। एसओ में पता लगाना मुश्किल होगा; हालांकि, आप "इंस्टेंस" नाम सेट कर सकते हैं जो आपको दो सेवाओं को चलाने की अनुमति देनी चाहिए। – Travis

+0

क्या आप सुनिश्चित हैं कि servicename और displayname अद्वितीय हैं? अद्वितीय servicenames के साथ दो सेवाओं को स्थापित करने का प्रयास किया लेकिन उसी प्रदर्शन नाम का उपयोग करके और यह भी काम नहीं किया। – Bomberlt

उत्तर

22

यह सेवा instancename है जिसे आपको अलग करने की आवश्यकता है।

documentation से:

service.exe [क्रिया] [-option: मूल्य] [स्विच]

स्थापित सेवा

इंस्टॉल एक उदाहरण -instance नाम पंजीकरण करते समय कई बार

तो तुम इस्तेमाल कर सकते हैं:

service.exe install -instance:FirstInstanceOfMyService 

service.exe install -instance:SecondInstanceOfMyService 
5

आप क्या चाहते हैं कॉन्फ़िग फ़ाइल में सेवा उदाहरण के नाम स्थापित करने के लिए है, तो आप उदाहरण के नाम प्रोग्राम के इस तरह सेट कर सकते हैं:

var instanceName = ConfigurationManager.AppSettings["Instance"]; 
HostFactory.Run(hostConfigurator => 
{  
    ... 
    hostConfigurator.SetDisplayName("My service"); 
    hostConfigurator.SetDescription("My service that does something"); 
    hostConfigurator.SetServiceName("MyService"); 
    hostConfigurator.SetInstanceName(instanceName); 
} 

तो, के दौरान इंस्टॉलेशन जो आप केवल

MyService.exe install 
संबंधित मुद्दे