2013-08-28 14 views
33

Quando provo ad installare un servizio di Windows:servizio di Windows Installare finisce in Rollback

c: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ installutil

ho, quello che sembra essere, alcuni messaggi di successo e alcuni messaggi di errore. Parte fino in fondo:

An exception occurred during the Install phase. 
System.ComponentModel.Win32Exception: The specified service has been marked for deletion 

Alla fine:

The Rollback phase completed successfully. 

The transacted install has completed. 
The installation failed, and the rollback has been performed. 

Il servizio è dato una voce nel applet Servizi, ma è contrassegnato come "Disabled". Quando tento di cambiarlo in un altro stato, viene visualizzato un messaggio di errore "contrassegnato per l'eliminazione".

Non ci sono messaggi nel registro eventi. Non c'è nulla di utile nel file di registro creato da installutil.exe (credo che sia scritto nella directory di lavoro corrente).

Non ho alcuna direzione da seguire. Cosa faccio?

+0

possibile duplicato di [Come forzare la disinstallazione del servizio Windows] (http://stackoverflow.com/questions/225275/how-to-force-uninstallation-of-windows-service) – participant

risposta

77

Si scopre che l'installazione potrebbe, o probabilmente avrà esito negativo se tale servizio è evidenziato nell'applet Servizi. È più sicuro chiudere l'applet Servizi, installare il servizio e quindi riaprire l'applet Servizi. È veramente stupido.

Inoltre, assicurarsi di eseguire la console come amministratore.

+0

Quella maledetta applet è davvero fastidiosa come sempre. – ProfK

+2

Mi ha salvato un mal di testa leggendo questo commento! Grazie! –

+0

Nel mio caso l'applet non ha evidenziato il servizio e non era nemmeno focalizzato sulla scheda Servizi - era nel Visualizzatore eventi. Benvenuto nel meraviglioso mondo dei messaggi di errore fuorvianti e confusi di Microsoft, immagino? – ajeh

7

Ho sperimentato lo stesso e il problema per me era che un servizio con lo stesso nome era già installato. Quindi per installare il nuovo servizio ho dovuto disinstallare i vecchi servizi. Sto imparando come creare e configurare i servizi di Windows e quindi i nomi in conflitto. Provato a disinstallare il servizio di prima attraverso:

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil -u servicename.exe 

Una volta che questa istruzione viene eseguita con successo, installare il vostro servizio e dovrebbe riuscire senza alcun rollback.

+0

Se ricordo correttamente, avevo già disinstallato il servizio, ma era rimasto evidenziato nell'applet Servizi. –

+0

@DustinOprea se il servizio è stato disinstallato con successo, non dovrebbe apparire nell'elenco dei servizi che vedi attraverso la finestra "services.msc" – Sarah

+0

C'è una azione di "aggiornamento" disponibile in quella finestra, per un motivo. Tuttavia, non era così semplice. Come ho già detto, è stato abbastanza a lungo che non posso più fornire ulteriori informazioni su di esso. –

0

Aggiunta di altri controlli e punti per risolvere questo problema precedente.

  1. Build Service in modalità di rilascio e prendere rilasciare i file della cartella e tenute in strada diversa
  2. Copia questa strada e andare alla finestra del prompt dei comandi di Visual Studio ed eseguire il comando di esempio a soffietto per installare il servizio.
  3. Chiudere la finestra services.msc se è aperta, quindi eseguire C: Programmi (x86) \ Microsoft Visual Studio 11.0> InstallUtil.exe C: \ RunLocationServices \ TestService.exe
  4. Andare services.msc e selezionare quel servizio e fai clic su start, se è stato modificato in "started", quindi il servizio è in esecuzione.

Ancora se esiste problema allora un altro checkpoint & SOLUZIONE Quando un servizio viene avviato, il servizio comunica alla Gestione controllo servizi per quanto tempo il servizio deve avere per iniziare (il periodo di time-out per il servizio) . Se la Gestione controllo servizi non riceve una notifica "servizio avviato" dal servizio entro questo periodo di timeout, , Gestione controllo servizi termina il processo che ospita il servizio. Questo periodo di timeout è in genere inferiore a 30 secondi. Se non si regola questo periodo di timeout, Gestione controllo servizi termina il processo. Per regolare questo periodo di timeout, attenersi alla seguente procedura: 1.Per avviare> Esegui> e digitare regedit 2.Caricare su: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control Con la cartella di controllo selezionata, fare clic con il tasto destro del mouse nel riquadro a destra e selezionare nuovo valore DWORD 3.Name il nuovo valore DWORD: ServicesPipeTimeout 4.Right clic ServicesPipeTimeout, e quindi fare clic su Modifica scegliere decimale, digitare '180000', e quindi fare clic su OK 5.Riavviare computer

Tuttavia, se il problema persiste, è possibile che si verifichi un problema nel codice di servizio, a causa dei metodi/classi di chiamate di servizio potrebbe verificarsi un ciclo infinito. Esamina il codice di ogni riga.

1

Alcune volte questo accade a causa di problemi di autorizzazione. Eseguire il "Prompt dei comandi di sviluppo per VS 2012" come amministratore. Quindi funzionerà.

+0

Non ha fatto la differenza. Qualcosa che si rompe semplicemente perché qualcos'altro è evidenziato è un bug di un'applicazione, non un problema di autorizzazioni. –

0

Questo problema è dovuto alla sicurezza, faresti prompt dei comandi sviluppatore migliore aperto per VS 2012:

Esegui come amministratore

e installare il servizio. Risolverà sicuramente il tuo problema.

Ho provato e il problema è stato risolto.

0

Fare clic destro su Prompt dei comandi e scegliere Esegui come amministratore
quindi copiare e incollare in: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe C:\TestService\bin\Debug\TestService.exe

Risultato in TestService.InstallLog è:

Installing service TestService... 
Service TestService has been successfully installed. 
Problemi correlati