2009-10-13 16 views
45

I utworzeniu usługi Windows w C#, Visual Studio 2008 ja dość dużo po to: http://www.codeproject.com/KB/dotnet/simplewindowsservice.aspxusługi Windows nie pojawia się na liście usług po zainstalowaniu

stworzyłem projekt instalacji, zgodnie z instrukcjami, aby w i uruchomił ... instaluje moją usługę do c: \ program files \ product etc .... jednak nie pojawia się na liście usług ..

Czego mi brakuje?

+0

Trudno odgadnąć bez dodatkowych informacji. Jeśli zrobiłeś wszystko zgodnie z opisem w artykule i zainstalowałeś usługę, powinna ona być dostępna. – Foxfire

+0

Czy próbowałeś odświeżyć konsolę usług? Lista w konsoli nie aktualizuje się automatycznie. Jeśli konsola była już otwarta podczas instalowania usługi, spróbuj ją odświeżyć (lub ponownie uruchomić). –

Odpowiedz

90

Najważniejszą część artykułu jesteś powiązany jest tutaj

Aby dodać akcję niestandardową do projektu instalacji

1.In Solution Explorer kliknij prawym przyciskiem myszy projekt instalacyjny, wskaż polecenie Widok, a następnie wybierz opcję Akcje niestandardowe, . Pojawi się Custom Custom Editor .

2.In w edytorze Działania niestandardowe, kliknij prawym przyciskiem myszy węzeł niestandardowy Actions i wybierz Dodaj akcję niestandardową. Pojawia się Wybierz element w oknie dialogowym Projektu .

3.Kliknij dwukrotnie folder aplikacji w polu listy, aby go otworzyć, wybierz pierwotne wyjście z MyNewService (Aktywne) i kliknij OK. Podstawowym wyjściowy jest dodawany do wszystkich czterech węzłów działania instalacji niestandardowej, commit, wycofania, i odinstalować.

4.Build projektu instalacyjnego.

Jeśli pominąć kroki, projekt instalacyjny będzie budować i skopiuj pliki do odpowiedniego katalogu; jednak nie będą rejestrować twojego binarnego jako usługi bez tych kroków.


Należy również zauważyć, że działa to dla starszych wersji Visual Studio, które ma/mają wbudowany szablon projektu instalacji/wdrażania. Nowsze wersje Visual Studio mają różne projekty setup/wdrażania (niektóre wymagające oprogramowania firm trzecich).

polecam patrząc WiX Toolset i sprawdzić tutaj WiX Installation of Windows Services.

+0

Czy istnieje sposób na rozpoczęcie usługi w ramach instalacji? Wiem, że możesz skonfigurować StartType na Automatic, ale to tylko uruchamia usługę po restarcie. –

+0

Dziękuję bardzo @Nate. Kiedy przechodziłem przez twoje instrukcje, wróciłem do mnie, że to jest to, co musiałem zrobić ostatnim razem. –

+0

Spot na! Dzięki, pomogło mi – Srini

4

I got owned w twarz przez ten jeden, więc umieszczam to tutaj, na wypadek, gdyby ktoś inny w to wszedł.

Jeśli postępowałeś zgodnie z instrukcjami w przewodniku, ale nadal masz problemy z instalacją, upewnij się, że klasa Instalatora jest publiczna. Usługa wewnętrzna nie będzie działać.

+0

Oh człowieku, dzięki. Myślę, że to po prostu szalone! Byłem zarozumiały i pomyślałem "no, to tylko instalator - po co zawracać sobie głowę opakowaniem klasowym?" i usunęli to bez myślenia - boom, pojawił się problem. – Alexandru

5

miałem ten sam problem i wtedy zdałem sobie sprawę, że nie mogę ustawić rodzica dla ServiceInstaller.

Kliknij dwukrotnie instalator projektu. Projektant powinien wyświetlić Instalatora usługi i Instalatora procesu. Po kliknięciu i wyświetleniu właściwości należy zwrócić uwagę na atrybut Parent, który musi być ustawiony na nazwę klasy Project Installer.

Lub, jeśli robisz to w kodzie, upewnij się, że zestaw:

serviceInstaller.Parent = this; 

i

serviceProcessInstaller.Parent = this; 
+0

Dzięki! ten bardzo mi pomógł – amaters

3

Podczas instalowania usług, chciałbym polecić korzystanie NSSM, który pracował dobrze dla mnie wszystkie moje potrzeby WinService. Może zainstalować dowolny plik wykonywalny (nawet jeśli .bat, .cmd) jako usługę i gwarantuje, że twoja usługa jest zawsze uruchomiona.

Aby użyć tego narzędzia:

  1. Pobierz z here

  2. i postępuj zgodnie z instrukcjami here

Następnie sprawdź listę usług, powinno być tam, w górę iw bieganie.

0

Oto dobry poradnik od tgeek001 z CodeProject.com, który pomógł mi. Zawiera kilka rzeczy, których nie widziałem w postach powyżej: 1. Kod obsługi zdarzenia, aby zatrzymać usługę przed odinstalowaniem 2. Określone warunki i właściwości w kodzie działań niestandardowych, aby ustawić, aby zapobiec awariom (te naprawiono błąd 1001, które przeżyłem podczas gdy postępując zgodnie z instrukcjami w przyjętym odpowiedzi powyżej) własności 3. Win życzenie „Usuń poprzedniej wersji” rozwijana wartość true

http://www.codeproject.com/Tips/575177/Window-Service-Deployment-using-VS

Poniżej jest z samouczka dla niestandardowych ustawień czynności (sprawa ma znaczenie):

  • zainstalować, ustawić właściwość warunek następujący: "NIE (zainstalowana lub PREVIOUSVERSIONSINSTALLED)"
  • Odinstaluj, należy ustawić właściwość Stan na: "NIE UPGRADINGPRODUCTCODE"
  • Commit: set "Niestandardowe Action danych" pole do:/OldProductCode = "[PREVIOUSVERSIONSINSTALLED]"

Wreszcie, w projekcie WinService, upewnij się, że menu rozwijane "Usuń poprzednie wersje" jest ustawione na true.

okrzyki

0

odkryłem, że twoja klasa instalator wiele się w tym samym projekcie jako Serwisu. Instalator nie może istnieć w projekcie bibliotecznym, do którego odnosi się Usługa.

Powiązane problemy