Servizio Windows non visualizzato nell’elenco dei servizi dopo l’installazione

Ho creato un servizio di Windows in C #, utilizzando Visual Studio 2008 ho praticamente seguito questo: http://www.codeproject.com/KB/dotnet/simplewindowsservice.aspx

Ho creato un progetto di installazione, come indicato nell’articolo, e l’ho eseguito … installa il mio servizio su c: \ program files \ product etc …. tuttavia, non compare nell’elenco dei servizi ..

Cosa mi manca?

La parte più importante dell’articolo che hai linkato è qui

Per aggiungere un’azione personalizzata al progetto di installazione

1. In Esplora soluzioni, fare clic con il tasto destro del mouse sul progetto di installazione, puntare su Visualizza, quindi selezionare Azioni personalizzate. Viene visualizzato l’editor Azioni personalizzate.

2. Nell’editor Azioni personalizzate, fare clic con il pulsante destro del mouse sul nodo Azioni personalizzate e scegliere Aggiungi azione personalizzata. Viene visualizzata la finestra di dialogo Seleziona elemento nel progetto.

3.Fare doppio clic sulla cartella dell’applicazione nella casella di riepilogo per aprirla, selezionare l’output principale da MyNewService (attivo) e fare clic su OK. L’output principale viene aggiunto a tutti e quattro i nodes delle azioni personalizzate Installa, Conferma, Ripristina e Disinstalla.

4. Costruire il progetto di installazione.

Se salti questi passaggi, il tuo progetto di installazione creerà e copierà i tuoi file nella directory corretta; tuttavia, non registreranno il tuo binario come servizio senza questi passaggi.


Dovrei anche notare che questo funziona per le versioni precedenti di Visual Studio che avevano / hanno il modello di progetto di installazione / distribuzione integrato. Le versioni più recenti di Visual Studio hanno diversi progetti di installazione / distribuzione (alcuni richiedono software di terze parti).

Ti consiglio di guardare in WiX Toolset e controllare qui per l’ installazione di WiX di Windows Services.

Sono stato posseduto in faccia da questo, quindi lo metto qui solo nel caso in cui qualcuno vi si imbattesse.

Se hai seguito le istruzioni nelle guide ma hai ancora problemi di installazione, assicurati che la tua class di Installer sia pubblica. Interno non funzionerà.

Ho avuto questo stesso problema e poi ho capito che non ho mai impostato il genitore per il ServiceInstaller.

Fare doppio clic sul programma di installazione del progetto. Il progettista dovrebbe mostrare un programma di installazione del servizio e un programma di installazione dei processi. Quando si fa clic su entrambi e si visualizzano le proprietà, è necessario notare l’attributo Parent che deve essere impostato sul nome della class del programma di installazione del progetto.

Oppure, se lo fai nel codice, assicurati di impostare:

 serviceInstaller.Parent = this; 

e

 serviceProcessInstaller.Parent = this; 

Quando installo i servizi, raccomando vivamente di utilizzare NSSM , che ha funzionato bene per tutte le mie esigenze di WinService. Può installare qualsiasi eseguibile (anche se .bat, .cmd) come servizio e garantisce che il servizio sia sempre attivo e funzionante.

Per utilizzare questo strumento:

  1. Scarica da qui

  2. E segui le istruzioni qui

Quindi controlla l’elenco dei servizi, dovrebbe essere lì, in alto e in esecuzione.

Segui queste istruzioni, hanno funzionato per me. Per la configurazione specifica, quella parte si trova nella parte inferiore dell’articolo.

MSDN: Procedura dettagliata: creazione di un servizio Windows

In Visual Studio 2013 mi sono imbattuto nello stesso problema utilizzando il modello InstallShield per l’applicazione di servizio. Ma funziona come un fascino quando si usa il modello di Setup Project https://visualstudiogallery.msdn.microsoft.com/9abe329c-9bba-44a1-be59-0fbf6151054d

quindi scarica il modello di installazione del progetto chiudi il tuo studio, esegui questa installazione e avvia il tuo studio, questo funzionerà.

Dunn.

Ecco un buon tutorial di tgeek001 di CodeProject.com che mi ha aiutato. Comprende diverse cose che non ho visto nei post precedenti: 1. Codice del gestore eventi per arrestare il servizio prima di disinstallarlo 2. Condizioni e proprietà specifiche nel codice Azioni personalizzate da impostare per evitare errori (questi hanno risolto l’errore 1001 che ho riscontrato seguendo le istruzioni nella risposta accettata sopra). 3. Il menu a discesa “Rimuovi versione precedente” della proprietà del servizio Win è impostato su true

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

Quanto segue è tratto dal tutorial per le Impostazioni azioni personalizzate (caso pertinente):

  • Installa, imposta la proprietà Condition come segue: “NOT (Installed or PREVIOUSVERSIONSINSTALLED)”
  • Disinstallare, impostare la proprietà Condition su: “NOT UPGRADINGPRODUCTCODE”
  • Conferma: imposta il campo “Dati di azione personalizzati” su: / OldProductCode = “[PREVIOUSVERSIONSINSTALLED]”

Infine, nel progetto WinService, assicurati di impostare il menu a discesa “Rimuovi versioni precedenti” su true.

Saluti

Ho scoperto che la tua class di installazione si trova nello stesso progetto del servizio. Il programma di installazione non può esistere in un progetto di libreria a cui fa riferimento il servizio.