Tabla ServiceInstall

La tabla ServiceInstall se usa para instalar un servicio y tiene las columnas siguientes.

Columna Tipo Clave Nullable
ServiceInstall Identificador Y No
Nombre Con formato No No
DisplayName Con formato No Y
ServiceType DoubleInteger No No
StartType DoubleInteger No No
ErrorControl DoubleInteger No No
LoadOrderGroup Con formato No Y
Dependencias Con formato No Y
StartName Con formato No Y
Contraseña Con formato No Y
Argumentos Con formato No Y
Component_ Identificador No No
Descripción Con formato No Y

 

Columnas

ServiceInstall

Esta es la clave principal de la tabla.

Nombre

Esta columna es la cadena que proporciona el nombre del servicio que se va a instalar. Esta cadena tiene una longitud máxima de 256 caracteres. La base de datos del administrador de control de servicios conserva las mayúsculas y minúsculas de los caracteres del nombre del servicio, pero las comparaciones de nombres de servicio no distinguen mayúsculas de minúsculas. La barra diagonal (/) y la barra diagonal inversa (\) no son caracteres de nombre de servicio válidos.

DisplayName

Esta columna es la cadena localizable que usan los programas de interfaz de usuario para identificar el servicio. Esta cadena tiene una longitud máxima de 256 caracteres. El administrador de controles de servicio conserva las mayúsculas y minúsculas del nombre para mostrar, pero las comparaciones de nombres para mostrar no distinguen mayúsculas de minúsculas.

ServiceType

Esta columna es un conjunto de marcas de bits que especifican el tipo de servicio. Se debe especificar uno de los siguientes tipos de servicio en esta columna.

Tipo de servicio Value Descripción
SERVICE_WIN32_OWN_PROCESS 0x00000010 Un servicio de Microsoft Win32 que ejecuta su propio proceso.
SERVICE_WIN32_SHARE_PROCESS 0x00000020 Un servicio Win32 que comparte un proceso.
SERVICE_INTERACTIVE_PROCESS 0x00000100 Un servicio Win32 que interactúa con el escritorio. Este valor no se puede usar solo y se debe agregar a uno de los dos tipos anteriores. La columna StartName debe establecerse en LocalSystem o nulo al usar esta marca.

 

No se admiten los siguientes tipos de servicio.

Tipo de servicio Value Descripción
SERVICE_KERNEL_DRIVER 0x00000001 Un servicio de controlador.
SERVICE_FILE_SYSTEM_DRIVER 0x00000002 Un servicio de controlador del sistema de archivos.

 

StartType

Esta columna es un conjunto de marcas de bits que especifican cuándo iniciar el servicio. Se debe especificar uno de los siguientes tipos de inicio de servicio en esta columna.

Tipo de inicio del servicio Value Descripción
SERVICE_AUTO_START 0x00000002 Se inicia un servicio durante el inicio del sistema.
SERVICE_DEMAND_START 0x00000003 Un servicio se inicia cuando el administrador de control de servicios recurre a la función StartService.
SERVICE_DISABLED 0x00000004 Especifica un servicio que ya no se puede iniciar.

 

Windows Installer no puede usar las opciones de SERVICE_BOOT_START y SERVICE_SYSTEM_START.

ErrorControl

Esta columna especifica la acción realizada por el programa de inicio si el servicio no se inicia durante el inicio. Estos valores afectan a los eventos StartService de ServiceControl para los servicios instalados. En esta columna se debe especificar una de las siguientes marcas de control de error.

Al agregar la constante msidbServiceInstallErrorControlVital (valor = 0x08000) a las marcas de la tabla siguiente se especifica que la instalación general debe producir un error si el servicio no se puede instalar en el sistema.

Marca de control de errores Value Acción del programa de inicio
SERVICE_ERROR_IGNORE 0x00000000 Registra el error y continúa con la operación de inicio.
SERVICE_ERROR_NORMAL 0x00000001 Registra el error, muestra un cuadro de mensaje y continúa la operación de inicio.
SERVICE_ERROR_CRITICAL 0x00000003 Registra el error si es posible y el sistema se reinicia con la última configuración conocida como buena. Si se está iniciando la última configuración correcta conocida, se produce un error en la operación de inicio.

 

LoadOrderGroup

Esta columna contiene la cadena que asigna un nombre al grupo de ordenación de carga del que este servicio es miembro. Especifique nulo o una cadena vacía si el servicio no pertenece a un grupo.

Dependencies

Esta columna es una lista de nombres de servicios o grupos de pedidos de carga que el sistema debe iniciar antes de este servicio. Separa los nombres de la lista por nulos. Si el servicio no tiene dependencias, marque nulo o una cadena vacía. Use la sintaxis [~] para insertar un valor Nulo. La dependencia de un grupo significa que este servicio se puede ejecutar si al menos un miembro del grupo se está ejecutando después de un intento de iniciar todos los miembros del grupo.

Por ejemplo, para requerir que el sistema inicie service1 y service2, antes de iniciar el servicio que aparece en la columna ServiceInstall, escriba service1[~]service2[~][~] en la columna Dependencias. Los identificadores service1 y service2 deben producirse en la clave principal de la tabla o ser el nombre del servicio que ya está instalado.

Debe prefijar los nombres de grupo con + para que se puedan distinguir de un nombre de servicio. Para requerir que el sistema inicie service1 y al menos un miembro del grupo de pedidos MyGroup antes de iniciar el servicio que aparece en la columna ServiceInstall, escriba service1[~]+MyGroup[~][~].

StartName

El servicio se registra como el nombre proporcionado por la cadena de esta columna. Si el tipo de servicio es SERVICE_WIN32_OWN_PROCESS use un nombre de cuenta con el formato: DomainName\UserName. Si la cuenta pertenece al dominio integrado, puede especificar .\UserName. La cuenta LocalSystem debe usarse si el tipo de servicio es SERVICE_WIN32_SHARE_PROCESS o SERVICE_INTERACTIVE_PROCESS. La función CreateService usa la cuenta LocalSystem si se especifica StartName como nulo y la mayoría de los servicios dejan esta columna en blanco.

Password

Esta cadena es la contraseña para el nombre de cuenta especificado en la columna StartName. Tenga en cuenta que el usuario debe tener permisos para iniciar sesión como servicio. El servicio no tiene contraseña si StartName es nulo o una cadena vacía. El nombre de inicio de LocalSystem es nulo y, por lo tanto, la contraseña de esta instancia es nula, por lo que la mayoría de los servicios dejan esta columna en blanco.

Tenga en cuenta que después de eliminar un servicio que se instaló con un nombre de usuario y una contraseña, el instalador no puede revertir el servicio sin usar primero una acción personalizada para obtener la contraseña. El instalador puede adquirir toda la información necesaria sobre el servicio, excepto la contraseña, que se almacena en una parte protegida del sistema. La acción personalizada adquiere la contraseña al solicitar al usuario, leer una propiedad de la base de datos o leer un archivo. A continuación, la acción personalizada debe recurrir a ChangeServiceConfig para proporcionar la contraseña antes de volver a instalar el servicio.

Windows Installer no escribe el valor especificado en el campo Password en el archivo de registro.

Arguments

Esta columna contiene los argumentos o propiedades de la línea de comandos necesarios para ejecutar el servicio.

Component_

Clave externa para la columna uno de la tabla Component. Tenga en cuenta que para instalar este servicio mediante la tabla InstallService, KeyPath para este componente debe ser el archivo ejecutable para el servicio.

Description

Esta columna contiene una descripción localizable para el servicio que se está configurando. Si esta columna se deja en blanco, el instalador usa la descripción existente del servicio si existe. Para obtener más información, vea SERVICE_DESCRIPTION en el kit de desarrollo de software (SDK) de Microsoft Windows. Para borrar una descripción existente, escriba "[~]" en esta columna. Esto da como resultado una descripción en blanco para un servicio nuevo o existente.

Comentarios

La acción InstallServices en las tablas de secuencia procesa la información de esta tabla. Para obtener información sobre el uso de tablas de secuencia, visite Usar una tabla de secuencia.

Esta tabla tiene la mayoría de los parámetros de la función CreateService de Win32.

Aunque es posible usar la interfaz de usuario para especificar que un servicio se instale como ejecutar de la fuente, el instalador no admite realmente este tipo de instalación. Los servicios que se ejecutan con el nivel de privilegio del sistema local deben instalarse para ejecutarse desde el disco duro local. Evite instalar servicios que suplantan los privilegios de un usuario determinado, ya que esto puede escribir datos de seguridad en un registro o en el registro del sistema. Esto puede crear potencialmente un problema de seguridad, un conflicto de contraseñas o la pérdida de datos de configuración cuando se reinicia el sistema.

Para eliminar un servicio durante una desinstalación, debe haber un registro correspondiente para el servicio en la tabla ServiceControl y la marca msidbServiceControlEventUninstallDelete debe aparecer en la columna Event. El instalador no elimina un servicio en la tabla ServiceInstall durante la desinstalación sin esta entrada en la tabla ServiceControl.

Para obtener información sobre cómo proteger un servicio, consulte la tabla MsiLockPermissionsEx.

Validación

ICE03
ICE06
ICE32
ICE45
ICE46
ICE66
ICE69