2009-08-31 25 views
6

Mam prostą usługę Windows opracowaną w VS.net 2008 i VB.net. Kiedy instaluję usługę za pomocą programu Installutil.exe z wiersza polecenia, działa ona jak zawieszka.Usługa Windows nie wyświetla się po zainstalowaniu z projektem instalacji

Kiedy próbuję dodać projekt konfiguracji i ustawić wyjście oraz skompilować i zainstalować, chociaż jest napisane, że zostało pomyślnie zainstalowane, nie pojawia się w usługach.

Dziennik zdarzeń pokazuje, że został pomyślnie zainstalowany. Właśnie sprawdziłem rejestr, umieściłem złożeń w HKEY_CURRENT_USER \ Software \ Microsoft \ installer \ assemblies.

Ale nie rozumiem, dlaczego nie pojawia się w wykazie usług. Odświeżyłem i zrestartowałem.

Jakieś myśli?

Dzięki

Odpowiedz

1

Kilka pomysłów:

Czy instalujesz na tych samych Konto Windows, który próbujesz uruchomić go pod? Czy masz ustawioną właściwość "InstallAllUsers" Instalatora projektu na wartość True?

Czy jesteś pewien, że masz prawidłowo ustawioną właściwość ProductName i tytuł w projekcie konfiguracji? Może usługa jest wyświetlana na liście pod inną nazwą, np. "SetupProject1" lub coś podobnego.

Podobnie, w klasie ProjectInstaller usługi, w widoku projektu, spójrz na właściwości ServiceInstaller i upewnij się, że właściwości ServiceName i DisplayName są ustawione na to, co chcesz.

+0

Dzięki. Sprawdziłem, czy InstallAllUsers jest prawdziwe, a nazwa produktu i tytuł są poprawne. Nawet w serviceinstaller jest poprawny. Nawet zrestartowałem komputer. Dziennik zdarzeń pokazuje, że usługa została pomyślnie zainstalowana. –

+1

Ten krok naprawdę nie pomógł mi rozwiązać problemu, rozwiązanie zamieszczone przez wiersz poniżej było brakującym krokiem w moim przypadku – Sanket

11

Znalezione rozwiązanie Musisz dodać niestandardową akcję w swoim projekcie MSI. W przypadku działań niestandardowych dodaj dane wyjściowe usługi do sekcji Instaluj. Spowoduje to uruchomienie wymaganego kodu instalacyjnego dla twojej usługi. czyli tak samo jak to, co robi installutil.exe

Dzięki za wszelką pomoc

+1

Nie zapomnij zrobić tego samego w sekcji "Odinstaluj", w przeciwnym razie odinstalowanie oprogramowania pozwoli na "ducha" "Obsługa tam. – andrecarlucci

+0

Zrobiłem to też. Oprogramowanie jest kopiowane do odpowiednich miejsc, ale usługa nie jest wyświetlana na liście. –

+0

Pominąłem krok, w którym utworzyłeś instalator usługi wewnątrz samego projektu usługi. http://msdn.microsoft.com/en-us/library/zt39148a(v=VS.100).aspx –

6

miałem ten sam problem i nie zwracać uwagę na części przed utworzeniem projektu instalacji. http://msdn.microsoft.com/en-us/library/zt39148a(v=VS.100).aspx

Aby tworzyć instalatory dla usługi

W Solution Explorer, kliknij prawym przyciskiem Service1.vb lub Service1.cs i wybierz View Designer.

Kliknij tło projektanta, aby wybrać samą usługę, zamiast jakiejkolwiek jej zawartości.

Po ustawieniu dla projektanta kliknij prawym przyciskiem myszy, a następnie kliknij polecenie Dodaj instalator.

Domyślnie do projektu dodawana jest klasa komponentów, która zawiera dwa instalatory. Komponent ma nazwę ProjectInstaller, a instalatory, które zawiera, są instalatorem dla usługi i instalatorem dla procesu związanego z usługą.

W widoku Projekt dla ProjectInstaller kliknij pozycję ServiceInstaller1 lub serviceInstaller1.

W oknie Właściwości upewnij się, że właściwość ServiceName jest ustawiona na MyNewService.

Ustaw właściwość StartType na Automatyczny.

W projektancie kliknij opcję ServiceProcessInstaller1 (dla projektu Visual Basic) lub serviceProcessInstaller1 (dla projektu Visual C#). Ustaw właściwość Konto na LocalSystem. Spowoduje to, że usługa zostanie zainstalowana i uruchomiona na lokalnym koncie usługi.

+0

To w końcu rozwiązało to dla mnie (aby uzyskać poprawną nazwę usługi), ale także musiałem dodać niestandardową akcję opisaną przez rowmark, w przeciwnym razie nie pojawiła się żadna usługa –

+0

Świetna odpowiedź. Rozwiązał to również dla mnie –

Powiązane problemy