2012-01-30 15 views

risposta

9

L'installazione è necessaria, ma per semplificare le cose, è possibile creare un progetto di installazione, in modo da eseguire semplicemente un .msi per installare il servizio. (Questo utilizza installutil sotto il cofano, ma semplifica notevolmente l'installazione.)

Una procedura dettagliata è qui: http://support.microsoft.com/kb/816169

E un'altra è qui: http://msdn.microsoft.com/en-us/library/zt39148a(VS.80).aspx

La differenza principale tra i due è la quantità di codice nei campioni. Entrambi ti accompagnano attraverso lo stesso processo.

Gli articoli collegati sono vecchi ma si applicano ancora in VS2010. Ho utilizzato il secondo articolo per illustrare il processo per un servizio VS2010 la scorsa settimana.

+0

Grazie per la procedura dettagliata. Ho anche usato il secondo articolo con grande successo. Tuttavia all'interno del mio servizio ho una variabile chiamata filepath, che determina il percorso di uscita dei file creati dal mio servizio. C'è comunque che posso convincere l'utente a digitare la posizione che desidera? – Simon

+0

o dovrei cercare di sintall via un file .bat fle? – Simon

+1

È possibile farlo se i valori si trovano nel file .config. C'è un tutorial qui che mostra come modificare i valori di app.config in uno scenario di installazione del progetto di installazione. Non l'ho usato, ma sembra spromising. http://raquila.com/software/configure-app-config-application-settings-during-msi-install/ – David

4

Perché vuoi evitare installutils?

Si potrebbe provare a utilizzare il comando sc, come in sc create ...

EDIT: Ecco una pagina di MSDN per esso: http://support.microsoft.com/?kbid=251192

DESCRIPTION: 
     Creates a service entry in the registry and Service Database. 
USAGE: 
     sc <server> create [service name] [binPath= ] <option1> <option2>... 

OPTIONS: 
NOTE: The option name includes the equal sign. 
     A space is required between the equal sign and the value. 
type= <own|share|interact|kernel|filesys|rec> 
     (default = own) 
start= <boot|system|auto|demand|disabled|delayed-auto> 
     (default = demand) 
error= <normal|severe|critical|ignore> 
     (default = normal) 
binPath= <BinaryPathName> 
group= <LoadOrderGroup> 
tag= <yes|no> 
depend= <Dependencies(separated by/(forward slash))> 
obj= <AccountName|ObjectName> 
     (default = LocalSystem) 
DisplayName= <display name> 
password= <password> 
+0

Questo è buono. Me ne ero dimenticato. L'ho usato al mio primo servizio prima di scoprire come denunciare i file MSI. Questo ti permette di fare cose che non puoi fare con InstallUtil come impostare il nome utente e la password di default per il servizio da eseguire. +1. – David

+0

presta particolare attenzione al [binPath =] deve esserci uno spazio tra il = e l'inizio del tuo percorso. Questo mi ha fatto numerose volte. – AndyM

2

È sempre possibile farlo con le voci di registro.
Le chiavi si trovano in HKLM\SYSTEM\CurrentControlSet\services

Il nome della chiave creato è il nome incorporato del servizio sul gestore del servizio. I seguenti valori sono rilevanti:

DisplayName = testo che viene visualizzato nel gestore dei servizi

ImagePath = FQ Nome del servizio eseguibile

Start (DWORD) = tipo di avvio (3 = autostart)

DelayedAutoStart (DWORD) = (1 = ritardato)

WOW64 (DWORD) = (0 = 64 bit app, 1 = 32 bit app)

ErrorControl (DWORD) = 0

ObjectName = {username} a correre sotto (LocalSystem per conto del sistema)

Ci sono un sacco di altri valori, ma che dovrebbe iniziare.

Problemi correlati