2012-05-04 14 views
5

Sto cercando di installare un servizio di Windows che ho fatto con il seguente comando:per l'installazione di Windows applicazione di servizio creata con C#

C: \ $ (MyFiles) \ Projects \ Win Service \ C# \ filechecker \ filechecker \ bin \ Debug> InstallU til.exe filechecker.exe

ma sto ottenendo il seguente messaggio:

Esecuzione di un'installazione transazionale.

Inizio della fase di installazione dell'installazione. Vedere i contenuti del file di registro per l'avanzamento del gruppo C: \ $ (MyFiles) \ Projects \ Win Service \ C# \ filechecker \ filechecker \ bin \ Debug \ filechecker.exe. Il file si trova in C: \ $ (MyFiles) \ Projects \ Win Service \ C# \ filechecker \ filechecker \ bin \ Debug \ filechecker.InstallLog.

Si è verificata un'eccezione durante la fase di installazione. System.ArgumentException: deve specificare il valore per l'origine.

La fase di rollback dell'installazione sta iniziando. Vedere i contenuti del file di registro per l'avanzamento del gruppo C: \ $ (MyFiles) \ Projects \ Win Service \ C# \ filechecker \ filechecker \ bin \ Debug \ filechecker.exe. Il file si trova in C: \ $ (MyFiles) \ Projects \ Win Service \ C# \ filechecker \ filechecker \ bin \ Debug \ filechecker.InstallLog.

La fase di rollback è stata completata correttamente.

L'installazione transazionale è stata completata.

Esecuzione di un'installazione transazionale.

Inizio della fase di installazione dell'installazione. Vedere i contenuti del file di registro per l'avanzamento del gruppo C: \ $ (MyFiles) \ Projects \ Win Service \ C# \ filechecker \ filechecker \ bin \ Debug \ filechecker.exe. Il file si trova in C: \ $ (MyFiles) \ Projects \ Win Service \ C# \ filechecker \ filechecker \ bin \ Debug \ filechecker.InstallLog.

Si è verificata un'eccezione durante la fase di installazione. System.ArgumentException: deve specificare il valore per l'origine.

La fase di rollback dell'installazione sta iniziando. Vedere i contenuti del file di registro per l'avanzamento del gruppo C: \ $ (MyFiles) \ Projects \ Win Service \ C# \ filechecker \ filechecker \ bin \ Debug \ filechecker.exe. Il file si trova in C: \ $ (MyFiles) \ Projects \ Win Service \ C# \ filechecker \ filechecker \ bin \ Debug \ filechecker.InstallLog.

La fase di rollback è stata completata correttamente.

L'installazione transazionale è stata completata.

Come posso risolvere questo problema?

+0

cosa dice il file di registro? – Matt

+0

questo è il file di registro in realtà – themis

+3

Ho avuto i problemi molte volte in passato e ho scoperto che il motivo è il più delle volte a fare errori/eccezioni nel codice. Di gran lunga il modo più semplice per risolvere questo problema è quello di creare un altro progetto con lo stesso codice esatto che hai nel tuo servizio di Windows e rendere questo progetto un'applicazione di console o qualcosa del genere. Quindi esegui questo codice e vedrai immediatamente dove si trova l'errore. Fidati di me ti farà risparmiare ore di dolore. –

risposta

9

Un ServiceInstaller sempre crea una fonte di registro eventi e imposta il nome Source al ServiceName.L'errore mi suggerisce che non stai impostando l'ServiceName nell'istanza ServiceInstaller (anche se avrei sperato in un errore migliore).


A meno che non si itera manualmente la sua collezione installatori e rimuoverlo, dopo che è un'istanza. Dovresti anche assicurarti di disattivare tutta la registrazione automatica e/o aggiungere manualmente il tuo EventLogInstaller usando lo stesso nome di origine - questo può essere utile se desideri che tutti i log del servizio (inclusa la registrazione automatica) per andare a da qualche parte altro rispetto al registro eventi dell'applicazione.

Problemi correlati