2012-10-03 10 views
44

बस निम्नलिखित के माध्यम से एक आवेदन को चलाने के लिए करने की कोशिश की:"installutil 'को हल करने के लिए कैसे एक आंतरिक या बाहरी कमांड, ऑपरेट करने योग्य प्रोग्राम या बैच फ़ाइल के रूप में पहचाना नहीं जाता है।"

enter image description here

मैं इसे में एक ऐप्लिकेशन WindowsService1.exe साथ निर्देशिका को ब्राउज़ किया है, फिर कमांड Installutil WindowsService1.exe कोशिश की, लेकिन निम्न त्रुटि मिल गया ...

enter image description here

जैसा कि वीएस केवल एक या दो दिनों के लिए स्थापित किया गया है, मुझे चिंता है कि इंस्टॉल के साथ कुछ गलत हो सकता है क्योंकि इसे इंस्टॉलटिल को पहचानना चाहिए।

क्या कुछ बुनियादी निदान मैं यह सुनिश्चित करने के लिए कर सकता हूं कि वीएस कमांड प्रॉम्प्ट उन सभी कार्यक्रमों को ढूंढ रहा है जो इसे करना चाहिए?

संपादित

तो मैं कमांड प्रॉम्प्ट मैं निम्न देखें में PATH चलाएँ:

enter image description here

+2

क्या आपने इसे व्यवस्थापक के रूप में चलाने का प्रयास किया? – Agent007

+0

आप "प्रोग्राम जोड़ें या निकालें" विंडो से मरम्मत करने का प्रयास कर सकते हैं। – Erwin

+0

यदि आप वीएस कमांड प्रॉम्प्ट से 'पथ' टाइप करते हैं तो आपको पथ चर के एक बड़े सूची को देखना चाहिए (मेरी मशीन पर, मुझे लगभग 20 लाइनों के लायक दिखाई देते हैं)। यदि यह सूची छोटा है तो इंस्टॉल के साथ कुछ गलत हो सकता है। यदि installutil मशीन पर है लेकिन स्थित नहीं है, तो यह एक पथ परिवर्तनीय समस्या है। यदि यह पूरी तरह से गायब है, तो यह एक अलग समस्या है। –

उत्तर

107

यह एक छोटा सा विषय है लेकिन मैंने अपनी सेवाओं को स्थापित करने के लिए InstallUtil का उपयोग करना बंद कर दिया है। इसे केवल सेवा में जोड़ना वाकई आसान है। System.Configuration.Install का संदर्भ जोड़ें (यदि मुझे सही याद है तो क्लाइंट प्रोफ़ाइल संस्करणों में उपलब्ध नहीं है) और उसके बाद प्रोग्राम.cs में अपना मुख्य() - फ़ंक्शन अपडेट करें।

static void Main(string[] args) 
{ 
    if (Environment.UserInteractive) 
    { 
     string parameter = string.Concat(args); 
     switch (parameter) 
     { 
      case "--install": 
      ManagedInstallerClass.InstallHelper(new[] { Assembly.GetExecutingAssembly().Location }); 
      break; 
      case "--uninstall": 
      ManagedInstallerClass.InstallHelper(new[] { "/u", Assembly.GetExecutingAssembly().Location }); 
      break; 
     } 
    } 
    else 
    { 
     ServiceBase[] servicesToRun = new ServiceBase[] 
          { 
           new Service1() 
          }; 
     ServiceBase.Run(servicesToRun); 
    } 
} 

तो फिर तुम सिर्फ --install तर्क के साथ WindowsService1.exe कॉल कर सकते हैं और यह सेवा स्थापित हो जाएगा और आप InstallUtil.exe के बारे में भूल कर सकते हैं।

+8

अनइंस्टॉलेशन विफलताओं के लिए स्थापना विफलताओं और InstallException के लिए अवैधऑपरेशन अपवाद पकड़ें [सुरक्षा और पहले से ही (un) स्थापित]। – jdknight

+0

इतना बेहतर है, हालांकि मुझे उपयोगकर्ता इंटरैक्टिव हिस्सा नहीं मिलता है। यह हमेशा सत्य होता है जब मैं डिबगिंग कर रहा हूं इसलिए मेरी सेवा कभी शुरू नहीं होती है। – KingOfHypocrites

+8

'Environment.UserInteractive' निष्पादन योग्य सीधे शुरू करते समय सत्य है, यानी servicemanager के माध्यम से नहीं बल्कि कमांडलाइन या विजुअल स्टूडियो के माध्यम से। विजुअल स्टूडियो में डिबगिंग करते समय आप उस सिस्टम को 'System.Diagnostics.Debugger.IsAttached' की जांच भी जोड़ सकते हैं। –

2

जब तक आप अपने पथ संशोधित कर लिया है, तो निम्न डेवलपर कमांड प्रॉम्प्ट में उपलब्ध होना चाहिए और cmd नहीं:

  • msbuild
  • MSTest (परम के लिए)
  • सीएससी
  • ilasm

... आदि

तो उन उपलब्ध नहीं हैं आप एक भ्रष्ट स्थापित हो सकता है।

+1

+1 डेविड - मैं उन लोगों में से एक का परीक्षण कैसे कर सकता हूं यह देखने के लिए कि चीजें ठीक काम कर रही हैं या नहीं? – whytheq

25

InstallUtil.exe आमतौर पर C: \ Windows \ Microsoft.NET \ Framework के अंतर्गत सूचीबद्ध संस्करणों में से एक के अंतर्गत पाया जाता है।

मेरे मामले में यह v4.0.30319 के तहत है।

तुम सिर्फ अपने पथ की जांच कर सकता:

गूंज% पथ%

आप निर्देशिका की एक सूची देना चाहिए निष्पादनयोग्य लिए खोज की।

+0

VisualStudio कमांड प्रॉम्प्ट में installutil कमांड है। http://msdn.microsoft.com/en-us/library/sd8zc8ha.aspx – margabit

+5

वीएस में कमांड प्रॉम्प्ट मूल रूप से एक अलग पथ के साथ एक cmd है। – Daniel

+0

हाँ - मेरे पास उसी स्थान पर 'InstallUtil.exe' है जैसा कि आप डैनियल अर्थात् 'सी: \ विंडोज \ माइक्रोसॉफ्ट.NET \ Framework \ v4.0.30319' और जैसा कि आप स्क्रीनशॉट से देख सकते हैं मैंने ओपी में जोड़ा है कमांड प्रॉम्प्ट का डिफ़ॉल्ट मार्ग नहीं है ... आप इसे ठीक करने के लिए क्या सुझाव देते हैं? – whytheq

22

यह वही है मैं इसे दूर जाना बनाने के लिए किया है:

  1. मिले जहां InstallUtil मेरा पीसी पर रहता है। \ Windows \ Microsoft.NET \ फ्रेमवर्क \ v4.0.30319

  2. एक कमांड प्रॉम्प्ट व्यवस्थापक के रूप में खोला गया और इसके बाद के संस्करण के लिए वर्तमान निर्देशिका बदल: 'cd c: मेरे मामले में यह C था \ Windows \ Microsoft.NET \ फ्रेमवर्क \ v4.0.30319 '

  3. तब दर्ज किया गया: ' सी InstallUtil: \ MyProgramName.exe '

दिलचस्प है, मैं विभिन्न विकल्पों की कोशिश की ऊपर समाधान करने से पहले उन के बीच में जोड़ने C: \ Windows \ सिस्टम पथ चर के लिए Microsoft.NET \ Framework \ v4.0.30319, लेकिन यह अभी भी इसे नहीं मिला।

आप सभी चिकनी स्थापना की कामना करते हैं।

+0

+1 अतिरिक्त जानकारी – whytheq

+2

के लिए धन्यवाद यह बेहतर और व्यावहारिक उत्तर है। धन्यवाद। –

+0

यह उत्तर ओपीएस प्रश्न और गुच्छा के अधिक व्यावहारिक समाधान, इम्हो के लिए सबसे अधिक लागू है। किसी भी दर पर, यह मेरी आवश्यकता के लिए पूरी तरह से काम किया (जो सेशन के प्रतिबिंबित)। – nocarrier

0

ऐसा इसलिए हो सकता है क्योंकि आपने व्यवस्थापक के रूप में या प्रशासनिक विशेषाधिकारों के रूप में कमांड प्रॉम्प्ट खोला नहीं होता।

+1

धन्यवाद ..... एजेंट 007 ने इस टिप्पणी को 3 अक्टूबर 2012 को बनाया! – whytheq

2

मिले bytes.com

कोड पर एक समाधान के लिए एक सेवा स्थापित करने के लिए:>

कोड

@ECHO Installing Service... 
@SET PATH=%PATH%;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ 
@InstallUtil C:\Unlock_4_Service\bin\Debug\Unlock_4_Service.exe 
@ECHO Install Done. 
@pause 

@InstallUtil अपने खिड़कियों सेवा के < exe ​​फ़ाइल पथ सेवा की स्थापना रद्द करने

@ECHO Installing Service... 
@SET PATH=%PATH%;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ 
@InstallUtil /u C:\Unlock_4_Service\bin\Debug\Unlock_4_Service.exe 
@ECHO Uninstall Done. 
@pause 

@InstallUtil/u < अपने खिड़कियों सेवा के exe फ़ाइल पथ>

सहेजें 2 service_install.bat और service_uninstall.bat

व्यवस्थापक के रूप में

भागो फ़ाइलें, हर बार जब आप स्थापित या सेवा की स्थापना रद्द करने के लिए है के रूप में फाइल। enter image description here

0

व्यवस्थापक मोड यानी में खुला दृश्य स्टूडियो कमांड प्रॉम्प्ट, सही बनाम कमांड प्रॉम्प्ट पर क्लिक करें और व्यवस्थापक

0

मैं यह मिल गया के बाद मैं 2017 से 2015 तक वापस चला गया था और मैं अभी भी 2017 आदेश का उपयोग किया गया था के रूप में चलाने शीघ्र। कुछ जांचने के लिए।