2012-10-03 26 views
44

właśnie próbował uruchomić aplikację za pośrednictwem następujących czynności:Jak rozwiązać problem "" installutil "nie jest rozpoznawany jako wewnętrzne lub zewnętrzne polecenie, działający program lub plik wsadowy."?

enter image description here

ja przejrzysz do katalogu z aplikacją WindowsService1.exe w nim, a następnie próbował polecenia Installutil WindowsService1.exe ale uzyskałem następujący błąd ...

enter image description here

Ponieważ VS został zainstalowany tylko na dzień lub dwa Obawiam się, że coś może być nie tak z tą instalacją, ponieważ powinno rozpoznać installutil.

Czy istnieje pewna podstawowa diagnostyka, którą mogę wykonać, aby zapewnić, że VS Command Prompt znajduje wszystkie programy, które powinien?

EDIT

jeśli uruchomię PATH w wierszu polecenia widzę następujące:

enter image description here

+2

czy próbowałeś działać jako administrator? – Agent007

+0

Możesz spróbować naprawić za pomocą okna "Dodaj lub usuń programy". – Erwin

+0

Jeśli wpiszesz 'PATH' z wiersza poleceń VS, powinieneś zobaczyć spore liście zmiennych ścieżki (na moim komputerze widzę około 20 linii). Jeśli ta lista jest mała, może być coś nie tak z instalacją. Jeśli installutil znajduje się na komputerze, ale nie jest zlokalizowany, jest to problem ze zmienną ścieżką. Jeśli w ogóle go brakuje, to inny problem. –

Odpowiedz

107

To jest trochę nietypowy temat, ale przestałem używać InstallUtil do instalacji moich usług. Łatwo jest dodać go do samej usługi. Dodaj odniesienie do System.Configuration.Install (niedostępne w wersjach profilu klienta, jeśli dobrze pamiętam), a następnie zaktualizuj funkcję Main() w pliku Program.cs w ten sposób.

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); 
    } 
} 

Następnie można po prostu zadzwonić WindowsService1.exe z --install argument i będzie zainstalować usługę i można zapomnieć o InstallUtil.exe.

+8

Złap wyjątek InvalidOperationException dla błędów instalacji i InstallException dla niepowodzeń odinstalowywania [bezpieczeństwo i już (nie) zainstalowane]. – jdknight

+0

O wiele lepiej, chociaż nie dostaję interaktywnej części użytkownika. Jest to zawsze prawdziwe, gdy debuguję, więc moja usługa nigdy się nie uruchamia. – KingOfHypocrites

+8

'Środowisko.UserInteractive' jest prawdziwe, gdy uruchamia się bezpośrednio plik wykonywalny, tzn. Nie za pomocą servicemanager, ale za pomocą linii poleceń lub Visual Studio. Możesz również dodać opcję 'System.Diagnostics.Debugger.IsAttached', aby pominąć tę część podczas debugowania w Visual Studio. –

2

ile nie zostały zmodyfikowane swoją ścieżkę, następujące powinny być dostępne w wierszu polecenia dewelopera i nie cmd:

  • msbuild
  • MSTest (na ostateczny)
  • CSC
  • ilasm

... itd

Jeśli te nie są dostępne, może masz uszkodzony zainstalować.

+1

+1 Dawid - jak mogę przetestować jedną z nich, aby sprawdzić, czy wszystko działa poprawnie? – whytheq

25

InstallUtil.exe zwykle znajduje się w jednej z wersji wymienionych w C: \ Windows \ Microsoft.NET \ Framework.

W moim przypadku jest pod v4.0.30319.

Można tylko sprawdzić swoją ścieżkę:

echo% PATH%

powinny dać listę katalogów szukał wykonywalnych.

+0

Wiersz polecenia VisualStudio zawiera komendę installutil. http://msdn.microsoft.com/en-us/library/sd8zc8ha.aspx – margabit

+5

Wiersz polecenia w VS to w zasadzie cmd z inną ścieżką PATH. – Daniel

+0

yep - Mam 'InstallUtil.exe' w tej samej lokalizacji, co Ty, tj.' C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319' i jak widać na zrzucie ekranu dodałem do OP to nie jest domyślną ścieżką wiersza polecenia ... co sugerujesz, aby to naprawić? – whytheq

22

To co mam zrobić, aby odejść:

  1. Znaleziony gdzie installutil rezyduje na moim komputerze. W moim przypadku było to C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319

  2. Uruchomił wiersz polecenia jako Administrator i zmienił bieżący katalog na wyżej: 'cd C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319'

  3. Potem wszedł: 'installutil C: \ MyProgramName.exe'

Co ciekawe, przed powyższym roztworze próbowałem różne opcje, między innymi dodając C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 do zmiennej Ścieżka systemowa, ale nadal nie może jej znaleźć.

Życzę wszystkim sprawnej instalacji.

+0

+1 dzięki za dodatkowe informacje – whytheq

+2

To jest lepsza i praktyczna odpowiedź. Dzięki. –

+0

Ta odpowiedź jest najbardziej odpowiednia dla pytania OP i bardziej pragmatycznego rozwiązania grupy, imho. W każdym razie działało idealnie na moje wymagania (co odzwierciedlało to op). – nocarrier

0

Mogło tak się stać, ponieważ nie można otworzyć wiersza polecenia jako administrator lub z uprawnieniami administracyjnymi.

+1

dzięki ..... Agent007 skomentował to na 3 października 2012! – whytheq

2

znalazł rozwiązanie na bytes.com

Kodeksu zainstalować usługę:

@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 < ścieżki pliku .exe z usługą Windows>

Kod odinstalować usługę

@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 ścieżka do pliku z usługą Windows>

Zapisać 2 pliki jak service_install.bat i service_uninstall.bat

uruchomić plików jako administrator, za każdym razem trzeba zainstalować lub odinstalować usługę. enter image description here

0

otwarty wiersz polecenia visual studio w trybie administratora IE, kliknij prawym przyciskiem vs wierszu polecenia i uruchom jako administrator

0

mam to po tym, jak wróciła do 2015 od 2017 roku i wciąż używał komendy 2017 skłonić. Coś do sprawdzenia.

Powiązane problemy