20/09/15 23:23
Roby94
Buonanotte a tutto il forum, vi propongo un quesito che non mi blocca completamente ma mi aiuterebbe a rendere piu professionale un servizio.
Ho questo parte di classe per installare un servizio
Richiamo questi metodi dal Main dello stesso servizio
Ora come potete notare il servizio viene avviato mediante argomento "-s" vorrei installare il servizio con questo paramento di avvio. Immagino che dovrò andare ad aggiungere un parametro ad InstallContext ma non riesco a trovare un elenco di questi parametri, mi sapreste aiutare?
Grazie mille.
PS non riesco piu a trovare il modo per ottenere il nome dell'eseguibile del programma senza path, Location delle informazioni assembly ritorna tutta la path. Vi ricordate come si fa?
Ho questo parte di classe per installare un servizio
partial class Service { protected static TransactedInstaller InitializeInstall() { ServiceProcessInstaller serviceProcessInstaller = new ServiceProcessInstaller(); ServiceInstaller serviceInstaller = new ServiceInstaller(); TransactedInstaller transactedInstaller = new TransactedInstaller(); serviceProcessInstaller.Account = ServiceAccount.LocalSystem; serviceProcessInstaller.Password = null; serviceProcessInstaller.Username = null; serviceInstaller.Description = "aaaaa"; serviceInstaller.DisplayName = "bbbbb"; serviceInstaller.ServiceName = "ccccc"; serviceInstaller.StartType = ServiceStartMode.Automatic; transactedInstaller.Context = new InstallContext("", new String[] { "/assemblypath=" + Assembly.GetExecutingAssembly().Location }); transactedInstaller.Installers.AddRange(new Installer[] { serviceProcessInstaller, serviceInstaller }); return transactedInstaller; } protected static void Install() { Service.InitializeInstall().Install(new Hashtable()); } protected static void Unistall() { Service.InitializeInstall().Uninstall(null); } }
Richiamo questi metodi dal Main dello stesso servizio
public static void Main(string[] args)//Punto di ingresso del programma { if (args.Length != 0)//Verifico la presenza di argomenti { switch (args[0]) { case "-i": try { Service.Install();//Installo il servizio } catch (Exception ex) { Service.WriteLog("Error: " + ex.ToString()); } break; case "-u": try { Service.Unistall();//Disinstallo il servizio } catch (Exception ex) { Service.WriteLog("Error: " + ex.ToString()); } break; case "-s": ServiceBase.Run(new Service());//Avvio il servizio break; } } else { //In caso non vi siano argomenti di avvio ne fornisco una lista Console.WriteLine("You need to start the executable with arguments."); Console.WriteLine("Usage: Service.exe [options]"); Console.WriteLine("Options:"); Console.WriteLine(" -i\tinstall the service"); Console.WriteLine(" -u\tunistall the service"); } }
Ora come potete notare il servizio viene avviato mediante argomento "-s" vorrei installare il servizio con questo paramento di avvio. Immagino che dovrò andare ad aggiungere un parametro ad InstallContext ma non riesco a trovare un elenco di questi parametri, mi sapreste aiutare?
Grazie mille.
PS non riesco piu a trovare il modo per ottenere il nome dell'eseguibile del programma senza path, Location delle informazioni assembly ritorna tutta la path. Vi ricordate come si fa?
Ultima modifica effettuata da Roby94 20/09/15 23:24
aaa