tutorial etiquetas encabezado código como agregar agrega installation wix windows-installer wix3

installation - etiquetas - meta tags wix



WiX: instalación del servicio como servicio local (10)

Has probado ...

NT AUTHORITY/LocalService

Por este documento ...

... pero el nombre de la cuenta debe ser NT AUTHORITY / LocalService al llamar a CreateService, independientemente de la configuración regional, o pueden producirse resultados inesperados.

Estoy intentando que mi aplicación sea un instalador a través de WiX 3.0. El código exacto es:

<File Id="ServiceComponentMain" Name="$(var.myProgramService.TargetFileName)" Source="$(var.myProgramService.TargetPath)" DiskId="1" Vital="yes"/> <!-- service will need to be installed under Local Service --> <ServiceInstall Id="MyProgramServiceInstaller" Type="ownProcess" Vital="yes" Name="MyProgramAddon" DisplayName="[removed]" Description="[removed]" Start="auto" Account="LocalService" ErrorControl="ignore" Interactive="no"/> <ServiceControl Id="StartDDService" Name="MyProgramServiceInstaller" Start="install" Wait="no" /> <ServiceControl Id="StopDDService" Name="MyProgramServiceInstaller" Stop="both" Wait="yes" Remove="uninstall" />

La cosa es que, por alguna razón, LocalService falla en el paso "Instalar servicios", y si lo cambio a "LocalSystem", el instalador expira cuando intenta iniciar el servicio.

El servicio comienza bien manualmente y al inicio del sistema, y ​​para todos los efectos funciona muy bien. He escuchado que hay problemas para hacer que los servicios funcionen directamente bajo LocalService, pero Google no está realmente ayudando ya que las respuestas de todos han sido "conseguidas para funcionar kthx".

Solo estoy buscando configurar este servicio y comenzarlo durante la instalación, eso es todo. ¿Alguna ayuda? ¡Gracias!


referencia: Tabla ServiceControl

La documentación de MSI para ServiceControl Table indica que ''Name'' es el nombre de la cadena del servicio. En su snipet de código, su ''Nombre'' de ServiceControl está configurado en ''ID'' para ServiceInstall y no su ''Nombre''. Entonces, sus elementos de ServiceControl deberían leer:

<ServiceControl Id="StartDDService" Name="MyProgramAddon" Start="install" Wait="no" /> <ServiceControl Id="StopDDService" Name="MyProgramAddon" Stop="both" Wait="yes" Remove="uninstall" />


Tuve el mismo problema pero con cuentas específicas, me aburrí y creé una CA para iniciar el servicio después de que la instalación se completara. Simplemente no se moleste en tratar de iniciarlo con MSI, simplemente déjelo en una CA, a menos que obtenga información de calidad de algún lado.

Por cierto, usar LocalSystem y un servicio iniciado manualmente funciona bien. Nunca tengo otras variaciones para trabajar.


Tenga en cuenta que en la documentación del elemento ServiceInstall se escribe sobre el atributo de la cuenta "La cuenta bajo la cual se inicia el servicio. Válido solo cuando ServiceType es ownProcess". En su ejemplo, no especificó el tipo de servicio ownProcess, que puede ser el problema.


Pasé un tiempo investigando esto y descubrí que era porque tenía el atributo keypath establecido en el componente que no estaba en el archivo. Mi archivo wix ahora se ve así:

<Component Id="comp_WF_HOST_18" DiskId="1" KeyPath="no" Guid="3343967A-7DF8-4464-90CA-7126C555A254"> <File Id="file_WF_HOST_18" Checksum="yes" Source="C:/Projects/GouldTechnology/Infrastructure/WorkflowHost/WorkflowHost/bin/Release/WorkflowHost.exe" KeyPath="yes"/> <ServiceInstall Id="workflowHostInstaller" Type="ownProcess" Vital="yes" Name="WorkflowHost" DisplayName="Workflow Host" Start="demand" Account="[WORKFLOW_HOST_USER_ACCOUNT]" Password="[WORKFLOW_HOST_USER_PASSWORD]" ErrorControl="critical" Interactive="no"/> <ServiceControl Id="StartWFService" Name="workflowHostInstaller" Start="install" Stop="both" Remove="both" Wait="no" /> </Component>

Ahora solo necesito averiguar cómo darle los permisos correctos ...


Yo tuve el mismo problema. Resultó que tenía un error tipográfico en el <ServiceControl Id="StartService" Name="MyServiceName" donde mi Name no coincidía con el nombre del servicio que especifiqué en el proyecto del servicio cuando lo creé.

Este también fue el problema con mi servicio no desinstalando.


Tuvimos el mismo problema solo en las máquinas con Windows XP donde no se pudo instalar el servicio. Al final encontramos que en XP se ignora la configuración del nombre del archivo WiX y en su lugar se usa el nombre del servicio establecido en el código C #. Por casualidad, teníamos un nombre en el código que contenía espacios en blanco, es decir, "Servicio Blah Blah", cuando esto se estableció con el mismo nombre que el archivo WiX utilizado en Windows 7 funcionó bien.


Me limitaré a repetir el consejo de aristippus303: no intente iniciar un servicio con Windows Installer, y no configure ninguna cuenta, simplemente acepte el valor predeterminado de LocalSystem durante la instalación. Intentar hacer cualquier otra cosa es demasiado problemático. Windows Installer espera a que el servicio indique que se ha iniciado, y hay demasiadas cosas que pueden salir mal, con permisos y derechos y configuraciones de firewall y archivos perdidos, y así sucesivamente, entonces Windows Installer termina congelado o terminando con un error y su instalación ha fallado

Lo que quiere hacer es especificar en su documentación que el usuario debe cambiar manualmente la cuenta del servicio (si es necesario) y poner en marcha el servicio manualmente después de la instalación, y solucionar los problemas que surjan en ese momento. O simplemente dile al usuario que se reinicie para que la opción de inicio automático comience el servicio si estás bastante seguro de que no habrá problemas.


Aquí hay otro caso en el que un servicio del sistema local puede no instalarse con el error 1923: si tiene otro servicio ya instalado con el mismo DisplayName (pero diferente nombre de servicio interno, ruta, etc.). Acabo de pasarme esto a mí.


Asegúrese de que la ventana services.msc esté cerrada cuando instale