windows-services - servicio - joulemeter error 1001
Error 1001 al instalar el servicio personalizado de Windows (8)
Escribí un servicio de Windows que se ejecuta en Framework 4.0 y se ejecuta en VS 2015. También creé un proyecto de instalación (versión gratuita de Installshield).
Mi servicio no se mostró en services.msc después de que lo instalé, por lo que, de acuerdo con algunas otras publicaciones, tuve que marcar la Salida principal en InstallShield como ''Clase de instalador'', pero cuando lo hago, obtengo el Error 1001 cuando ejecuto la configuración. exe.
Esta post indica que "El código de error 1001 SIEMPRE significa una falla en la acción personalizada de la clase del Instalador". y que no debería usar Acciones Personalizadas. No estoy usando ninguna acción personalizada en este momento.
La mayoría de las soluciones en este sitio tienen instrucciones para Installshield 2010, y los pasos no funcionan para 2015.
El error aparece tanto en mi máquina dev como en todas las máquinas cliente. ¿Alguna sugerencia?
EDITAR:
El visor de eventos muestra "Error al crear el punto de restauración (Proceso = C: / Windows / system32 / msiexec.exe / V; Descripción = Nombre de mi aplicación instalada; Error = 0x80070422).
Después de algunas excavaciones, descubrí que el instalador falla con ese error cuando intenta eliminar el servicio (asociado con lo que esté instalando) - Y (el servicio) ya no está allí. Escenario de mi caso de uso: inicie la instalación desde MVS2015 de una solución compleja que comprenda también un servicio de Windows. Cuando cambia la versión de la solución, el instalador deja de rastrear la búsqueda de que su aplicación se instaló anteriormente y no puede desinstalarla porque es una versión diferente. Aparece un cuadro de diálogo que indica esto y sale ... PERO HA DESINSTALADO el servicio. Ahora el intento de instalar o desinstalar falla con el error 1001 porque Windows no encuentra el servicio para desinstalarlo.
Si alguien tiene una solución mejor, publíquela, pero mi solución es usar la utilidad de línea de comandos sc. sc es una utilidad que se puede usar para manipular servicios desde la línea de comandos (escriba sc para obtener ayuda). Así que uso sc para agregar el servicio (por nombre), y luego puedo desinstalar o instalar como de costumbre. Es obligatorio tener una ruta de bin válida en el comando, pero se aceptará CUALQUIER ruta válida.
sc <server> create [service name] [binPath= ] <option1> <option2>...
Ejemplo:
sc create MyService binPath= C:/Windows/explorer.exe
[SC] CreateService SUCCESS
Encontré algo para deshacerme del problema, pero crea una nueva pregunta, aunque mucho más simple y menos crítica.
Lo que causó mi problema es que tuve que eliminar el siguiente código de mi ServiceInstaller''s AfterInstall:
new ServiceController(ServiceInstaller.ServiceName).Start();
Esto se agregó para iniciar automáticamente mi servicio una vez que se haya instalado. Por ahora solo iniciaré manualmente el servicio.
Esperamos que esto ayude a algunos de ustedes a encontrar el Error 1001 cuando intenten instalar un Servicio de Windows .NET utilizando el proyecto de instalación InstallShield 2015 LE con la Salida Primaria establecida como Instalador.
Es un error conocido cuando .NET 4.6 está instalado en Windows 10.
Este error se produce cuando el marco .NET de destino no está instalado.
Si está apuntando a la misma máquina de desarrollo, verifique si ese servicio (EXE) ya se está ejecutando en esa máquina o no (no debería estar funcionando).
Estoy usando VS 2012 con InstallShield LE 2015 que apunta a .NET 4.5 y tengo que desmarcar la "clase de instalador" para que funcione.
Si tiene .NET 4.6 instalado en su máquina de compilación, necesitará la versión 2015 de la edición limitada para evitar un error de versiones con el soporte de InstallShield para las clases de instaladores. (Hay muchas causas para un error 1001, por lo que no es una solución garantizada). Tenga en cuenta que InstallShield 2015 Limited Edition no es compatible con la edición comunitaria de Visual Studio.
Tuve exactamente el mismo problema. De repente, después de actualizar a VisualStudio 2013 y la versión más reciente de InstallShield LE y construir mis paquetes de instalación, fallarían con el error críptico 1001.
Respuesta definitiva
He encontrado la respuesta definitiva. Ya no puede tener la casilla de verificación para la "clase de instalador" seleccionada en InstallShieldLE. Debes desmarcar ese elemento .
Para abrir este cuadro de diálogo, vaya a Especificar datos de aplicación > Archivos, haga clic con el botón derecho en su Salida principal y seleccione Propiedades.
Anteriormente, tenía que seleccionarlo: ahora no debe seleccionarse
Anteriormente (Visual Studio 2012 y antes tenía que seleccionar ese elemento o la instalación del servicio fallaría. Esto es bastante terrible.
Ahora, debe ir al siguiente elemento del árbol en el proyecto InstallShield LE y hacer doble clic en el nodo Servicios:
Después de eso, el elemento Servicios aparece a la izquierda (¿he mencionado qué UX y UI tan terrible es todo esto?) Y haga clic derecho para que pueda agregar el servicio.
Elija el elemento del menú que aparece para agregar el servicio y obtendrá un formulario que le permite configurar los detalles del instalador.
Una vez que haga eso y reconstruya, su MSI funcionará y esto resolverá el error 1001.
Todo esto fue una terrible pérdida de tiempo que los InstallShield Devs originales podrían haber resuelto. Desgraciado.
Ya que no puedo comentar, solo responderé con una respuesta a su propia respuesta aceptada. Sé que ha pasado un tiempo desde que hiciste la pregunta, pero aquí va.
Si desea un inicio automático después de la instalación, puede ir al paso 3. Configurar el sistema de destino. Elija la pestaña Servicios. Haga clic derecho en Servicios y agregue Servicio. Debería poder ubicar cualquier servicio en su Salida Primaria. Una vez agregado, puede seleccionar diferentes configuraciones relacionadas con el inicio automático y así sucesivamente. Espero que te ayude.
En una nota al margen, todavía estoy buscando la respuesta a mi 1001.