c# - studio - No se puede instalar el servicio de Windows
llamar un servicio windows desde c# (11)
Cuando copiamos el ejecutable desde otra computadora, Windows marca una bandera en ellos para protección. Haga clic con el botón derecho en el ejecutable y en las propiedades Haga clic en Desbloquear . Despejaría la bandera y el ejecutable del servicio sería Instalar.
Creé un servicio de ventana muy simple usando visual studio 2010 y .N ET 4.0.
Este servicio no tiene ninguna funcionalidad agregada del proyecto de servicio de Windows predeterminado, aparte de que se ha agregado un instalador.
Si ejecuto "installutil.exe appName.exe" en mi cuadro de desarrollo u otras máquinas de Windows 2008 R2 en nuestro dominio, el servicio de Windows se instala sin problemas.
Cuando intento hacer lo mismo en el sitio de nuestro cliente, no se instala con el siguiente error.
Microsoft (R) .NET Framework Installation utility Version 4.0.30319.1
Copyright (c) Microsoft Corporation. All rights reserved.
Exception occurred while initializing the installation:
System.IO.FileLoadException: Could not load file or assembly ''file:///C:/TestService/WindowsService1.exe'' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515).
Esta solución solo tiene 1 proyecto y no se agregaron dependencias.
Lo he probado en varias máquinas en nuestro entorno y dos en nuestros clientes. Las máquinas son todas Windows 2008 R2, ambas instalaciones nuevas. Una máquina tiene solo .net 2.0 y .net 4.0. Los otros .net 2, 3, 3.5 y 4.
Soy un administrador local en cada una de las máquinas.
También probé el instalador de 64 bits pero recibí el siguiente error, así que creo que el de 32 bits es el que se debe usar. System.BadImageFormatException
Cualquier orientación sería apreciada. Gracias.
En mi caso, este error fue causado al pasar accidentalmente el directorio que contiene el servicio a InstallUtil en lugar de pasar el servicio exe.
Obviamente, error humano pero encontré el mensaje de error bastante engañoso.
Este problema surgió porque estaba intentando instalar el servicio desde una ubicación de red. Al copiar el servicio.exe a la máquina local antes de usar installutil, solucionó mi problema y el servicio se instaló correctamente.
Otro motivo de este error podría ser que copió su programa de una fuente que Windows considera que no es de confianza. Puede desbloquear el conjunto haciendo clic en "desbloquear" después de hacer clic derecho y seleccionar propiedades en el archivo.
Puede intentar crear un Proyecto de instalación para su servicio y ejecutar el archivo MSI en ese servidor.
Según la respuesta de @ doublehelix anterior, esta respuesta me puso en camino para mi problema particular que se relaciona con un problema de servicio que se ejecuta en Windows XP (Desbloquear no es una opción en la pestaña de seguridad que pude encontrar). En mi caso, estaba intentando ejecutar un servicio desde una unidad separada (es decir, no en la misma unidad que Windows y no debajo de los archivos de programa), aunque el disco físico real era el mismo. Trasladar mi servicio a la carpeta Archivos de programa resolvió mi problema subyacente. (Tenía la intención de ''comentar'' contra la respuesta de @ doublehelix, pero parece que no puedo en mi estado actual).
También me enfrenté al mismo problema. En mi caso, estaba implementando una nueva versión de utilidades, copié el nuevo exe, installogé archivos y luego intenté desinstalar los utils.
Copié la versión anterior, desinstalé las utilidades, copié la nueva versión y la volví a instalar. De todos modos, es la secuencia lógica que debería haber seguido en primer lugar.
Tengo este problema y para diferentes entre .net versión de util y mi servicio
utilizo util para .net 2 y mi creación de servicio con .net4
no te olvides de votar ... Prueba el SC de la siguiente manera: 1. abre la línea de comando 2. escribe el siguiente- sc create ServiceName BinPath = "ExePath". informar sobre los resultados ...
puedes usar este comando en el administrador del sistema de comandos ejecutar administrador
installutil C:/.../MyService/bin/Debug/MyService.exe
Necesidad de desbloquear archivos o al menos eso es lo que solucionó el mío.
Para desbloquear ''a granel'' en Powershell
get-childitem *.* | Unblock-File
o en DOS:
FOR %a in (*.*) do (echo.>%a:Zone.Identifier)