2009-07-27 6 views
9

मैं एक विंडोज सेवा के लिए एक इंस्टॉलर का उपयोग करने की कोशिश कर रहा हूं, और InstallUtil.exe का उपयोग करने से बचाना चाहता हूं। इंस्टॉलर सही ढंग से काम करता प्रतीत होता है (निष्पादन योग्य और डीएलएस सही निर्देशिका में हैं), लेकिन सेवा कंप्यूटर प्रबंधन के तहत प्रकट नहीं होती है।सी # - विंडोज सेवा इंस्टॉलर सेवा पंजीकृत नहीं कर रहा है

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

सेवा वर्ग के नाम डिफ़ॉल्ट है - Service1।

प्रोजेक्ट इंस्टॉलर में, सेवा इंस्टॉलर का सर्विसनाम क्लास नाम - सेवा 1 से मेल खाता है।

कस्टम क्रियाओं के तहत, सेवा का प्राथमिक आउटपुट इंस्टॉल, कमिट, रोलबैक और अनइंस्टॉल करने के लिए जोड़ा गया था।

मैं संदर्भ के रूप में http://support.microsoft.com/kb/816169 का उपयोग कर रहा हूं।

कोई विचार?

उत्तर

15

क्या आपकी सेवा प्रोजेक्ट में इंस्टॉलर क्लास है? आपके पास ऐसा कुछ होना चाहिए जो इस तरह दिखता हो:

[RunInstaller(true)] 
public partial class Service1Installer : Installer 
{ 
    public Service1Installer() 
    { 
     InitializeComponent(); 
     ServiceProcessInstaller process = new ServiceProcessInstaller(); 
     process.Account = ServiceAccount.LocalSystem; 

     ServiceInstaller serviceAdmin = new ServiceInstaller(); 
     serviceAdmin.StartType = ServiceStartMode.Manual; 
     serviceAdmin.ServiceName = "Service1"; 
     serviceAdmin.DisplayName = "Service1"; 
     serviceAdmin.Description = "Service1"; 

     Installers.Add(serviceAdmin); 
    } 
} 
+0

यही वह था जो मैं याद कर रहा था। मैंने सोचा कि इंस्टॉलर्स। जोड़ें() भाग स्वतः उत्पन्न जेनरेटर कोड में शामिल किया जाएगा, लेकिन यह नहीं था। शायद वे इसे बदल दिया? –

+0

हां मैंने देखा कि आपने इसे पोस्ट किया था जैसा कि मैंने पोस्ट किया था – SpaceghostAli

3

सुनिश्चित करें कि आपने अपनी सेवा प्रोजेक्ट में एक ServiceInstaller और ServiceProcessInstaller क्लास बनाया है। (अधिक जानकारी के लिए this link देखें)।

कंप्यूटर प्रबंधन और सेवा विंडो बंद करें, अपने इंस्टॉलर को फिर से चलाएं, और सेवा विंडो को फिर से खोलें।

यदि यह काम नहीं करता है, तो अपने कंप्यूटर को पुनरारंभ करें। आपके पास कुछ फाइल लॉक हो सकती हैं।

यह कहने के बिना चला जाता है कि आपको उचित रूप से काम करने के लिए मशीन पर प्रशासनिक विशेषाधिकारों की आवश्यकता है।

+0

पोस्ट किए गए लिंक में उदाहरण कोड मुझे सही ट्रैक पर मिला, धन्यवाद एक गुच्छा। –

0

मुझे लगता है कि मैंने इसे समझ लिया है। यह डिज़ाइनर कोड के साथ एक बग हो सकता है, या शायद मैं एक कदम चूक गया।

मैं डिजाइनर कोड में लगता है, विधि InitializeComponent() में, इसे जोड़ने के लिए चाहिए था:

this.Installers.AddRange(new System.Configuration.Install.Installer[] {this.serviceProcessInstaller1, this.serviceInstaller1}); 

यह वहाँ नहीं था, इसलिए मैं ProjectInstaller निर्माता में यह कहा:

Installers.Add(serviceInstaller1); 
Installers.Add(serviceProcessInstaller1); 

अब स्थापना पर, यह कंप्यूटर प्रबंधन में एक सेवा के रूप में सूचीबद्ध है।