Creé un servicio de ventana y para instalarlo creé su proyecto de implementación e instalé eso. Después de la instalación, lo miré. Comenzó con éxito.al instalar el servicio de ventana System.Security.SecurityException
Al día siguiente hice algunas modificaciones, reconstruí y reinstalé pero ahora no se está instalando.
Luego pensé que era un problema con el instalador, permite crear un instalador personalizado para el servicio para que siempre que pueda actualizar mi código.
Lo creé así en caso de que alguien necesite esto para el futuro.
public class MyInstaller : Installer
{
ServiceProcessInstaller spi;
ServiceInstaller si;
public MyInstaller()
{
spi = new ServiceProcessInstaller();
spi.Account = ServiceAccount.LocalSystem;
si = new ServiceInstaller();
si.StartType = ServiceStartMode.Manual;
si.ServiceName = "MyService";
si.DisplayName = "My Service";
si.Description = "service installed from command line";
this.Installers.Add(spi);
this.Installers.Add(si);
}
}
Lo llamé desde el método principal mediante la comprobación del parámetro args.
case "-i":
case "-install":
ti = new TransactedInstaller();
mi = new MyInstaller();
ti.Installers.Add(mi);
string logPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\install.log";
ctx = new InstallContext(logPath, cmdline);
ti.Context = ctx; //.Context (ctx);
ti.Install(new Hashtable());
break;
Ahora cuando intento instalarlo. Recibí el error System.Security.SecurityException: no se encontró el origen, pero algunos o todos los registros de eventos no se pudieron buscar. Registros inaccesibles: seguridad.
Lo busco en google, y me doy cuenta de que el servicio intentará acceder al registro de la aplicación mientras instala y escribe allí.
No estoy escribiendo ningún registro de eventos. Tengo mi log4net para iniciar sesión. Pero aún así su comportamiento predeterminado.
¿Cómo superar este problema ahora? No se está instalando incluso tengo todos los permisos.
Gracias
Lo hice usando cntrl + shift + enter in run.Entonces, de nuevo, hice clic derecho y me puse a funcionar como administrador y funcionó el hombre. gracias qué tontos errores estoy haciendo. pero me gustaría saber cómo mejorar el rendimiento de inicio/detención del servicio de ventanas. – sunder
@sunder: el rendimiento de inicio/detención tendrá un * lote * que ver con lo que está haciendo su servicio. 'Inicio' debería estar bien, ya que normalmente harías girar un nuevo hilo que hace el trabajo. Para detenerlo, necesitaría una forma rápida de detener lo que está haciendo el hilo. Entonces, no hay una manera genérica de mejorar el rendimiento. –
Creé un archivo por lotes (.BAT) para instalar el servicio y estaba ejecutando el lote como administrador, pero no funcionaba. Luego, ejecuto el símbolo del sistema como administrador e instalé el servicio sin el archivo BAT, simplemente escribiendo el nombre del archivo EXE -install. No estoy seguro de por qué sucedió esto, pero tal vez podría ayudar a otros. Creo que podría estar relacionado con el hecho de que ejecutar un archivo BAT como administrador no está ejecutando el código que escribes allí como administrador, solo el archivo BAT. –