2011-07-19 22 views
5

Widziałem kilka powiązanych pytań dotyczących stackoverflow, które odnoszą się do tego, ale żaden z nich nie wydaje się odpowiadać na konkretne zachowanie, które obserwuję.Usługa Windows nie zatrzymuje się i nie jest usuwana podczas deinstalacji (Wix)

Mam usługę Windows zdefiniowaną w następujący sposób w pliku Wix 3.0 Wix.

<Component Id='Service' Guid='3c658a54-b236-11e0-bbf6-039615e482ae' > 

    <File Id='ServiceEXE' Name='m_agent_service.exe' 
      Vital='yes' Source='..\m_agent_service.exe' 
      KeyPath='yes' /> 

    <ServiceInstall Id='MerakiServiceInstall' 
     Vital='yes' 
     Name='MerakiPCCAgent' DisplayName='Meraki Client Insight Agent $(env.VERSION)' Description="Meraki Client Insight Monitoring and Management Service" 
     Type='ownProcess' Interactive='no' Start='auto' ErrorControl='normal'> 
    </ServiceInstall> 

    <ServiceControl Id='MerakiServiceControl' 
     Name='MerakiPCCAgent' 
     Start='install' Stop='both' Remove='uninstall' 
     Wait='yes' /> 
</Component> 

Po zainstalowaniu .MSI usługa jest instalowana i uruchomiona. Wspaniały.

Po odinstalowaniu (przez uruchomienie msiexec/x lub użycie Dodaj/Usuń oprogramowanie z Panelu sterowania), usługa nadal działa i nie jest usuwana. W rzeczywistości dziennik tej usługi informuje mnie, że żaden z kodów zamknięcia usługi nie został wywołany. (Kiedy używam "stop SC", na przykład, ja zrobić zobaczyć kod wyłączanie usługi uruchomione czysto.)

Oto najistotniejsze części z msiexec/x Uninstall log:

MSI (s) (14:04) [11:33:54:692]: 1 application(s) had been reported to have files 
in use. 
Info 1603. The file C:\Program Files\Meraki\PCC Agent 1.0.67\m_agent_service.exe 
is being held in use by the following process: Name: m_agent_service, Id: 3120, 
Window Title: '(not determined yet)'. Close that application and retry. 
MSI (c) (40:78) [11:33:54:692]: File In Use: -m_agent_service- Window could not 
be found. Process ID: 3120 
MSI (c) (40:78) [11:33:54:692]: No window with title could be found for FilesInUse 

[...] 

Action start 11:33:57: UnpublishFeatures. 
MSI (s) (14:04) [11:33:57:379]: Doing action: StopServices 
MSI (s) (14:04) [11:33:57:379]: Note: 1: 2205 2: 3: ActionText 
Action ended 11:33:57: UnpublishFeatures. Return value 1. 
Action start 11:33:57: StopServices. 
MSI (s) (14:04) [11:33:57:379]: Doing action: DeleteServices 
MSI (s) (14:04) [11:33:57:379]: Note: 1: 2205 2: 3: ActionText 
Action ended 11:33:57: StopServices. Return value 1. 
Action start 11:33:57: DeleteServices. 
MSI (s) (14:04) [11:33:57:379]: Doing action: RemoveFiles 

[...] 

MSI (s) (14:04) [11:33:57:645]: Product: Meraki Client Insight Agent -- Removal 
completed successfully. 

MSI (s) (14:04) [11:33:57:645]: Windows Installer removed the product. Product N 
ame: Meraki Client Insight Agent. Product Version: 1.0.67. Product Language: 103 
3. Removal success or error status: 0. 
+0

Czy usługa, którą tworzysz, zależy od innych plików lub złożeń? Jeśli tak, to musisz uzyskać identyfikator procesu usługi, a następnie zabić proces. wtedy możesz odinstalować usługę –

Odpowiedz

0

Sprawdź pełny plik dziennika i upewnij się, że komponent jest zmieniany. Jest możliwe, że funkcja jest wyłączona lub składnik/warunek powoduje pominięcie komponentu.

5

Och kochanie, podczas gdy na toalecie miałem falę mózgową i myślę, że naprawiłem ją sam - przepraszam za post! Myślę, że wyjaśnię, co to naprawiło, na wypadek gdyby inni początkujący po tej samej książce Wix, co ja, wpadli na ten sam problem.

Zasadniczo zmieniłem Guid na moim komponencie, ponownie zainstalowałem, odinstalowałem i wszystko znowu działało. (Biorę na siebie, że zmiana Guida może nie być najlepszą praktyką, ale to zadziałało dla mnie.)

Do opracowania, myślę, że nie było żadnego problemu z moim instalatorem - problem był na komputerze, z którego korzystałem przetestować instalację. Moja pierwsza próba instalacji tej usługi Windows została wykonana bez elementu ServiceControl, tylko element ServiceInstall. Następnie przetestowałem instalację i działało, ale usługa oczywiście nie usunęła się po odinstalowaniu. Następnie ręcznie zatrzymałem i odinstalowałem usługę z mojego komputera przy użyciu Services.msc.

Potem czytałem następną sekcję mojej książki, zdałem sobie sprawę, że potrzebowałem również elementu ServiceControl, stworzyłem go i ponownie wypróbowałem instalatora - ale używałem tego samego Guida. Deinstalacja nadal nie działała poprawnie i założyłem, że zrobiłem coś źle w moim instalatorze, stąd powyższy post.

Podejrzewałem, że poprzednia instalacja, wykorzystująca ten sam Guid, ale bez elementu ServiceControl, spowodowała, że ​​mój komputer został w jakiś sposób uszkodzony i uniemożliwił prawidłowe działanie nowego deinstalatora.

Niech to będzie dla mnie lekcja - nigdy nie testuj swojego instalatora na własnym komputerze! Jedna z tych zasad, którą w pełni rozumiem i z radością zignoruję, aż mnie ugryzie :)

+0

Dokładnie to, czego doświadczam teraz. 10x :) – mynkow

+0

To samo tutaj, spróbuj tego, jeśli masz ten problem! – joepetrakovich