c# - Using ManagedInstallerClass.InstallHelper to install multiple services -
मैं वर्तमान में ManagedInstallerClass.InstallHelper का उपयोग कर एकाधिक सेवाओं को स्थापित करने का प्रयास कर रहा हूं।
जब मैं पहली सेवा स्थापित करता हूं, तो कोड निष्पादन आसानी से हो जाता है, फिर एक त्रुटि बताती है कि एक ही नाम वाली सेवा पहले से मौजूद है। हालांकि, अगर मैं प्रोग्राम से बाहर निकलता हूं तो दूसरी सेवा से शुरू होने वाली एक ही प्रक्रिया को निष्पादित करता हूं, सबकुछ ठीक हो जाता है।
मैं जो फ़ंक्शन उपयोग करता हूं वह यह है।
ManagedInstallerClass.InstallHelper (arguments.ToArray ());
मैं 100% यकीन है कि तर्क सही हैं।
अपवाद मेरे पास यह है:
System.InvalidOperationException : "स्थापना विफल रही, और रोलबैक किया गया है।" आंतरिक अपवाद: "निर्दिष्ट सेवा पहले से ही मौजूद है"
मेरी आंत की भावना यह है कि ManagedInstallerClass उसके पेट में कुछ रखता है और इसी प्रकार दूसरी प्रक्रिया को उसी प्रक्रिया में निष्पादित करते समय कुछ गलत हो जाता है।
बहुत सारे परीक्षण के बाद, मैं अब भी इस समस्या को प्रबंधित इंस्टालर क्लास के साथ हल नहीं कर पा रहा था।
मुझे इसके बजाय समस्या का हल मिल गया है।
इसलिए, कॉल करने के बजाय:
<कोड> ManagedInstallerClass.InstallHelper (arguments.ToArray ());
अब मैं कॉल
callInstallUtil (arguments.ToArray ());
फ़ंक्शन परिभाषित है:
सार्वजनिक स्थिर स्ट्रिंग InstallUtilPath = System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory (); निजी bool callInstallUtil (स्ट्रिंग [] installUtilArguments) {प्रक्रिया proc = नई प्रक्रिया (); Proc.StartInfo.FileName = पथ। कोबाइन (InstallUtilPath, "installutil.exe"); Proc.StartInfo.Arguments = String.Join ("", installUtilArguments); Proc.StartInfo.WindowStyle = प्रक्रिया WindowStyle.Hidden; Proc.StartInfo.RedirectStandardOutput = सच; Proc.StartInfo.UseShellExecute = false; proc.Start (); स्ट्रिंग आउटपुट रिजल्ट = proc.StandardOutput.ReadToEnd (); proc.WaitForExit (); // --- जांच परिणाम --- यदि (proc.ExitCode! = 0) {त्रुटियाँ.अद्यतन (स्ट्रिंग.फोर्मेट ("InstallUtil त्रुटि - कोड {0}", proc.ExitCode)); विवरण झूठा है; } वापस सच; }
विभिन्न सेवाओं के लिए इस फ़ंक्शन के कई कॉल कोई त्रुटि नहीं उत्पन्न करते हैं, इसलिए मुझे लगता है कि यह मेरे लिए काम करता है :) - यह प्रबंधित इंस्टालर क्लास कॉल के रूप में शानदार नहीं है, लेकिन यह काम पूरा हो जाता है
Comments
Post a Comment