की स्थापना के दौरान कस्टम इवेंट लॉग और इवेंट स्रोत बनाने का सबसे विश्वसनीय तरीका क्या है। मुझे अपने .Net Windows सेवा की स्थापना के दौरान ईवेंट स्रोतों को विश्वसनीय रूप से बनाने/निकालने में कठिनाई हो रही है।.NET सेवा
यहाँ मेरी ProjectInstaller वर्ग से कोड है:
// Create Process Installer
ServiceProcessInstaller spi = new ServiceProcessInstaller();
spi.Account = ServiceAccount.LocalSystem;
// Create Service
ServiceInstaller si = new ServiceInstaller();
si.ServiceName = Facade.GetServiceName();
si.Description = "Processes ...";
si.DisplayName = "Auto Checkout";
si.StartType = ServiceStartMode.Automatic;
// Remove Event Source if already there
if (EventLog.SourceExists("AutoCheckout"))
EventLog.DeleteEventSource("AutoCheckout");
// Create Event Source and Event Log
EventLogInstaller log = new EventLogInstaller();
log.Source = "AutoCheckout";
log.Log = "AutoCheckoutLog";
Installers.AddRange(new Installer[] { spi, si, log });
मुखौटा तरीकों सिर्फ लॉग सेवा के नाम पर लिए सूत्र संदर्भित, आदि
इस कोड को समय के सबसे अधिक काम करता है , लेकिन हाल ही में स्थापित करने के बाद मैंने कस्टम लॉग की बजाय एप्लिकेशन लॉग में अपनी लॉग प्रविष्टियां दिखाना शुरू कर दिया। और निम्न त्रुटियां लॉग में भी हैं:
स्रोत (ऑटोकेकआउट) में इवेंट आईडी (0) के लिए विवरण नहीं मिल सकता है। स्थानीय कंप्यूटर में रिमोट कंप्यूटर से संदेश प्रदर्शित करने के लिए आवश्यक रजिस्ट्री जानकारी या संदेश DLL फ़ाइलें नहीं हो सकती हैं। आप इस विवरण को पुनः प्राप्त करने के लिए/AUXSOURCE = ध्वज का उपयोग करने में सक्षम हो सकते हैं; विवरण के लिए सहायता और सहायता देखें।
किसी कारण से यह अनइंस्टॉल के दौरान स्रोत को ठीक तरह से हटा नहीं रहा है या यह इंस्टॉल के दौरान इसे नहीं बना रहा है।
यहां सर्वोत्तम प्रथाओं के साथ कोई मदद की सराहना की जाती है।
धन्यवाद!
// Write to Log
EventLog.WriteEntry(Facade.GetEventLogSource(), errorDetails, EventLogEntryType.Error, 99);
stephbu के जवाब के बारे में::
इसके अलावा, यहां मैं कैसे लॉग के लिए अपवाद लिख रहा हूँ का एक नमूना है सिफारिश पथ एक इंस्टॉलर स्क्रिप्ट और InstallUtil, या एक Windows सेटअप दिनचर्या है।
मैं एक सेटअप प्रोजेक्ट का उपयोग कर रहा हूं, जो सेवा की स्थापना करता है और लॉग सेट करता है। चाहे मैं installutil.exe या विंडोज सेटअप प्रोजेक्ट का उपयोग करता हूं, मेरा मानना है कि वे दोनों ऊपर दिखाए गए प्रोजेक्ट इंस्टालर क्लास को कॉल करते हैं।
मैं देखता हूं कि अगर मेरी रीबूटिंग तक लॉग वास्तव में हटाया नहीं जाता है तो मेरी टेस्ट मशीन की स्थिति त्रुटि कैसे उत्पन्न कर सकती है। मैं यह देखने के लिए और अधिक प्रयोग करूंगा कि क्या यह समस्या हल करती है।
संपादित करें: मुझे सेवा की स्थापना के दौरान स्रोत और लॉग नाम पंजीकृत करने के लिए एक निश्चित अग्नि मार्ग में रूचि है। इसलिए यदि सेवा पहले स्थापित की गई थी, तो यह स्रोत को हटा देगी, या बाद के इंस्टॉलेशन के दौरान स्रोत का पुन: उपयोग करेगी।
मुझे अभी तक उस मार्ग को आजमाने के लिए WiX सीखने का अवसर नहीं मिला है। चीजों की
FYI: मैं अभी भी इस समस्या के लिए एक विश्वसनीय समाधान की तलाश में हूं। –
जेसन, इवेंटलॉग स्रोत को हटाने के बजाय यदि यह मौजूद है तो क्यों न केवल इंस्टॉलेशन निष्पादित करता है यदि लॉग स्रोत और लॉग मौजूद नहीं है? मैंने अभी तक यह कोशिश नहीं की है क्योंकि मुझे अपनी खोज के जवाब में आपका प्रश्न मिला है। मेरे पास एक सरल सेवा है जो मैं एक अलग सेवा स्थापित परियोजना के साथ स्थापित कर रहा हूं। बेस्ट, जेसन – Tinidian