Este tip no tiene mayor secreto, simplemente es un atajo al installutil.exe dentro del ejecutable de nuestro servicio.
Lo que haremos será ir a la clase Program.cs en C# o Módulo Main.vb eb VB y modificar el método main de la siguiente manera:
static class Program
{
///
/// The main entry point for the application.
///
static void Main(String[] args)
{
if (args.Length > 0)
{
switch (args[0])
{
case "/install":
install();
break;
case "/uninstall":
uninstall();
break;
}
}
else
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] { new SecurityProviderService() };
ServiceBase.Run(ServicesToRun);
}
}
}
Lo que hicimos fue agregarle a nuestro ejecutable la posibilidad de recibir parámetros, en éste caso /install o /uninstall, sólo nos resta crear los métodos para ejecutar éstas acciones y listo.
// Devuelve la ruta a installutil.exe
private static String installUtill()
{
return System.IO.Path.Combine(System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory(), "installutil.exe");
}
private static void uninstall()
{
if (System.IO.File.Exists(installUtill()))
{
System.Diagnostics.Process.Start(installUtill(), String.Format("/u \"{0}\"", System.Reflection.Assembly.GetExecutingAssembly().Location));
System.Diagnostics.Trace.WriteLine("Service uninstalled.");
}
else
throw new System.IO.FileNotFoundException("InstallUtil.exe not found");
}
private static void install()
{
if (System.IO.File.Exists(installUtill()))
{
System.Diagnostics.Process.Start(installUtill(), String.Format("\"{0}\"", System.Reflection.Assembly.GetExecutingAssembly().Location));
System.Diagnostics.Trace.WriteLine("Service installed.");
}
else
throw new System.IO.FileNotFoundException("InstallUtil.exe not found");
}
Muy simple, ahora cuando necesitemos instalar nuestro servicio simplemente lo haremos desde una consola ejecutando
NombreDelServicio.exe /install
Gracias. Este código lo tienes en vb?
ResponderEliminarLamento la demora de la respuesta, he estado alejado del blog desde hace bastante tiempo... no lo tengo en VB pero es muy fácil pasarlo de un lenguaje a otro.
Eliminar