instalacja usługi windows z SC.exe lub InstallUtil.exe - jest różnica ale który?

SC.exe i InstallUtil obie usługi instalowania/odinstalowywania systemu windows. Ale wygląda na to, że nie działają w ten sam sposób.

Jaka jest różnica?


Na przykład InstallUtil nie powiedzie się (błąd nie znaleziono pliku lub zależności), podczas gdy Sc create szczęśliwie instaluje usługę. Zbyt dodać do dziwności; usługa nie pojawia się, jeśli uruchomić net start w konsoli. Ale pojawia się w GUI usług. Warianty tego zdarzenia kiedy próbuję odinstalować.

Sam napisałem serwis i wcześniejsze wersje działają. Dotnet3. 5

Author: LosManos, 2011-01-14

5 answers

Tak, instalacja usługi nie jest szczególnie skomplikowana. Wystarczy napisać garść kluczy rejestru. Możesz spojrzeć-zobacz z Regedit.exe, przejdź do HKEY_LOCAL_MACHINE \ SYSTEM\CurrentControlSet \ services.

Sc.exe moĹźe teĹź zapisywać, uĹźywajÄ ... C podanych argumentów wiersza poleceĺ". Niemniej jednak nie jest to właściwy sposób. Punkt InstallUtil.exe jest to, że może aktywować niestandardowy kod instalacyjny. Kod, który napisał autor serwisu. Które nie jest to rzadkość, usługi mają tendencję do umieszczania informacji konfiguracyjnych w swoich kluczach rejestracyjnych na własny użytek. Zobaczysz na to mnóstwo dowodów, gdy spojrzysz z Regedit.

 27
Author: Hans Passant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-14 17:52:39

Wolę sc.exe nad installutil.exe milion razy.

InstallUtil zmusza do dodania strasznej klasy ProjectInstaller (jak sądzę) i hardcode tam nazwę usługi i opis usługi.

To sprawia, że bardzo trudno jest umieścić dwie wersje tej samej usługi działające na tej samej maszynie w tym samym czasie.

Dlatego po prostu nie używam InstallUtil.w ogóle exe. Również z powodu wcześniejszych odpowiedzi: musisz go mieć w pakiecie wdrażania. sc.exe jest już w każdym Windows Xp i wyżej (chyba).

 13
Author: Kat Lim Ruiz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-28 16:27:17

Główna różnica polega na tym, że InstallUtil nie jest narzędziem przeznaczonym do instalacji serwisowej, ale jako ogólne Narzędzie instalatora. Ze stron MSDN widać, że:

" Narzędzie instalatora jest narzędziem wiersza poleceń, które pozwala na zainstaluj i odinstaluj zasoby serwera, wykonując instalator komponenty w określonych zespołach. To narzędzie działa w połączeniu z klasami w systemie.Konfiguracja.Zainstaluj przestrzeń nazw."

Więc może zainstalować serwis, ale to ma wiele, wiele innych korzyści. Tworzenie plików wykonywalnych w oparciu o klasę Instalatora daje Ci programową kontrolę nad całą procedurą instalacji/deinstalacji. Na przykład do instalacji usługi używane są ServiceInstaller i ServiceProcessInstaller.

Narzędzie' Sc 'służy do kontroli usług, a polecenie 'create' utworzy usługę na podstawie wybranego pliku wykonywalnego.

W twoim przykładzie
1. Nie jest przeznaczony do instalacji z InstallUtil i odpowiedź na błąd powinna być dość jasna.
2. InstallUtil nie powiedzie się z powodu błędu w kodzie instalacyjnym i używaniu sc create prawdopodobnie stworzy dla Ciebie wadliwą usługę. Sprawdź w {exe_name}.InstallLog dla szczegółów.

 5
Author: Bizniztime,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-24 11:08:26

Z doświadczenia dezinstalacji użycia: sc.exe pod windows 7 usuwa wpis z listy natychmiast, podczas gdy po odinstalowaniu za pomocą installutil istnieje potrzeba restartu

 2
Author: Cyryl Płotnicki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-25 09:14:15

Chociaż InstallUtil jest preferowanym sposobem korzystania z usług. NET, jedną z jego wad jest to, że nie odbierze wiążących przekierowań z Twojej aplikacji.config, który w pewnych okolicznościach może spowodować niepowodzenie instalacji. W tym przypadku korzystanie z SC może przynieść pewne korzyści, kosztem braku możliwości uruchomienia kodu w czasie instalacji.

Niestety dla OP, TopShelf nie istniał w momencie jego pytania. Działa wokół wad zarówno SC jak i InstallUtil oraz umożliwia uruchomienie usługi z dołączonym debugerem podczas uruchamiania w Visual Studio. Poza tym o wiele łatwiej jest wpisać myservice install, niż zajrzeć do określonego folderu dla InstallUtil lub wpisać mnóstwo parametrów dla SC.
 1
Author: Joe The Coder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-08 22:51:39