Tabela ServiceInstall

A tabela ServiceInstall é usada para instalar um serviço e tem as colunas a seguir.

Coluna Tipo Chave Nullable
ServiceInstall Identificador S N
Nome Formatted N N
DisplayName Formatted N S
ServiceType DoubleInteger N N
StartType DoubleInteger N N
ErrorControl DoubleInteger N N
LoadOrderGroup Formatted N S
Dependências Formatted N S
StartName Formatted N S
Senha Formatted N S
Argumentos Formatted N S
Component_ Identificador N N
Descrição Formatted N S

 

Colunas

ServiceInstall

Essa é a chave primária da tabela.

Name

Essa coluna é a cadeia de caracteres que fornece o nome do serviço a ser instalado. A cadeia de caracteres tem um tamanho máximo de 256 caracteres. O banco de dados do gerenciador de controle de serviço preserva as maiúsculas e minúsculas dos caracteres no nome do serviço, mas as comparações de nomes de serviço não diferenciam maiúsculas de minúsculas. Barra (/) e barra invertida (\) são caracteres de nome de serviço inválidos.

DisplayName

Essa coluna é a cadeia de caracteres localizável que os programas de interface do usuário usam para identificar o serviço. A cadeia de caracteres tem um tamanho máximo de 256 caracteres. O gerenciador de controle de serviço preserva as maiúsculas e minúsculas do nome de exibição, mas as comparações de nome de exibição não diferenciam maiúsculas de minúsculas.

ServiceType

Essa coluna é um conjunto de sinalizadores de bits que especificam o tipo de serviço. Um dos tipos de serviço abaixo precisa ser especificado nesta coluna.

Tipo de serviço Valor Descrição
SERVICE_WIN32_OWN_PROCESS 0x00000010 Um serviço Microsoft Win32 que executa seu próprio processo.
SERVICE_WIN32_SHARE_PROCESS 0x00000020 Um serviço Win32 que compartilha um processo.
SERVICE_INTERACTIVE_PROCESS 0x00000100 Um serviço Win32 que interage com a área de trabalho. Esse valor não pode ser usado sozinho e precisa ser adicionado a um dos dois tipos anteriores. A coluna StartName precisa ser definida como LocalSystem ou null ao usar esse sinalizador.

 

Os tipos de serviço a seguir não têm suporte.

Tipo de serviço Valor Descrição
SERVICE_KERNEL_DRIVER 0x00000001 Um serviço de driver.
SERVICE_FILE_SYSTEM_DRIVER 0x00000002 Um serviço de driver do sistema de arquivos.

 

StartType

Essa coluna é um conjunto de sinalizadores de bits que especificam quando iniciar o serviço. Um dos tipos de início de serviço a seguir precisa ser especificado nesta coluna.

Tipo de início do serviço Valor Descrição
SERVICE_AUTO_START 0x00000002 Um início de serviço durante a inicialização do sistema.
SERVICE_DEMAND_START 0x00000003 Um serviço é iniciado quando o gerenciador de controle de serviço chama a função StartService.
SERVICE_DISABLED 0x00000004 Especifica um serviço que não pode mais ser iniciado.

 

O Windows Installer não pode usar as opções SERVICE_BOOT_START e SERVICE_SYSTEM_START.

ErrorControl

Essa coluna especificará a ação executada pelo programa de inicialização se o serviço não for iniciado durante a inicialização. Esses valores afetam os eventos ServiceControl StartService em serviços instalados. Um dos sinalizadores de controle de erro a seguir deve ser especificado nessa coluna.

A adição da constante msidbServiceInstallErrorControlVital (valor = 0x08000) aos sinalizadores na tabela a seguir especifica que a instalação geral deverá falhar se o serviço não puder ser instalado no sistema.

Sinalizador de controle de erro Valor Ação do programa de inicialização
SERVICE_ERROR_IGNORE 0x00000000 Registra o erro e continua com a operação de inicialização.
SERVICE_ERROR_NORMAL 0x00000001 Registra o erro, exibe uma caixa de mensagem e continua a operação de inicialização.
SERVICE_ERROR_CRITICAL 0x00000003 Registra o erro, se possível, e o sistema é reiniciado com a última configuração conhecida como boa. Se a última configuração conhecida como boa estiver sendo iniciada, a operação de inicialização falhará.

 

LoadOrderGroup

Essa coluna contém a cadeia de caracteres que nomeia o grupo de ordenação de carga do qual esse serviço é membro. Especifique uma cadeia de caracteres nula ou vazia se o serviço não pertencer a um grupo.

Dependências

Essa coluna é uma lista de nomes de serviços ou grupos de ordenação de carga que o sistema precisa iniciar antes desse serviço. Nomes separados na lista por Nulos. Se o serviço não tiver dependências, especifique Null ou uma cadeia de caracteres vazia. Use a sintaxe [~] para inserir um Null. A dependência em um grupo significa que esse serviço poderá ser executado se pelo menos um membro do grupo estiver em execução após uma tentativa de iniciar todos os membros do grupo.

Por exemplo, para exigir que o sistema inicie service1 e service2, antes de iniciar o serviço listado na coluna ServiceInstall, insira service1[~]service2[~][~] na coluna Dependencies. Os identificadores service1 e service2 precisam ocorrer na chave primária da tabela ou ser o nome do serviço que já está instalado.

Você precisa prefixar nomes de grupo com + para que eles possam ser diferenciados de um nome de serviço. Para exigir que o sistema inicie o service1 e pelo menos um membro do grupo de ordenação MyGroup antes de iniciar o serviço listado na coluna ServiceInstall, insira service1[~]+MyGroup[~][~].

StartName

O serviço é conectado como o nome fornecido pela cadeia de caracteres nessa coluna. Se o tipo de serviço for SERVICE_WIN32_OWN_PROCESS, use um nome de conta no formulário: NomedeDomínio\NomedeUsuário. Se a conta pertencer ao domínio interno, será permitido especificar .\NomedeUsuário. A conta LocalSystem precisará ser usada se o tipo de serviço for SERVICE_WIN32_SHARE_PROCESS ou SERVICE_INTERACTIVE_PROCESS. A função CreateService usará a conta LocalSystem se StartName for especificado como nulo e, portanto, a maioria dos serviços deixar esta coluna em branco.

Senha

Essa cadeia de caracteres é a senha para o nome da conta especificado na coluna StartName. Observe que o usuário precisa ter permissões para fazer logon como um serviço. O serviço não terá senha se StartName for nulo ou uma cadeia de caracteres vazia. O Nome inicial do LocalSystem é nulo e, portanto, a senha nessa instância é nula, ou seja, a maioria dos serviços deixa essa coluna em branco.

Observe que depois de excluir um serviço que foi instalado com um nome de usuário e senha, o instalador não poderá reverter o serviço sem primeiro usar uma ação personalizada para obter a senha. O instalador pode adquirir todas as informações necessárias sobre o serviço, exceto a senha, que é armazenada em uma parte protegida do sistema. A ação personalizada adquire a senha solicitando ao usuário, lendo uma propriedade do banco de dados ou lendo um arquivo. Em seguida, a ação personalizada precisa chamar ChangeServiceConfig para fornecer a senha antes de reinstalar o serviço.

O Windows Installer não grava o valor inserido no campo Password no arquivo de log.

Arguments

Essa coluna contém eventuais argumentos de linha de comando ou propriedades necessárias para executar o serviço.

Component_

Chave externa da primeira coluna da tabela Component. Observe que para instalar esse serviço usando a tabela InstallService, o KeyPath para esse componente precisa ser o arquivo executável para o serviço.

Descrição

Essa coluna contém uma descrição localizável para o serviço que está sendo configurado. Se essa coluna for deixada em branco, o instalador usará a descrição existente do serviço, se houver uma. Para obter mais informações, confira SERVICE_DESCRIPTION no SDK (Microsoft Windows Software Development Kit). Para apagar uma descrição existente, insira "[~]" nessa coluna. Isso resulta em uma descrição em branco para um serviço novo ou existente.

Comentários

A ação InstallServices em tabelas de sequência processa as informações nesta tabela. Para obter mais informações sobre como usar as tabelas de sequência, confira Usando uma tabela de sequência.

Essa tabela tem a maioria dos parâmetros para a função CreateService do Win32.

Embora seja possível usar a interface do usuário para especificar que um serviço seja instalado como execução na origem, o instalador não dá suporte a esse tipo de instalação. Os serviços executados com o nível de privilégio do sistema local precisam estar instalados para serem executados no disco rígido local. Evite instalar serviços que representem os privilégios de um usuário específico, pois isso pode gravar dados de segurança em um log ou no Registro do sistema. Isso pode criar um problema de segurança, um conflito de senha ou a perda de dados de configuração quando o sistema é reiniciado.

Para excluir um serviço durante uma desinstalação, precisa haver um registro correspondente para o serviço na tabela ServiceControl e o sinalizador msidbServiceControlEventUninstallDelete precisa aparecer na coluna Event. O instalador não exclui um serviço na tabela ServiceInstall durante a desinstalação sem essa entrada na tabela ServiceControl.

Para obter informações sobre como proteger um serviço, confira a Tabela MsiLockPermissionsEx.

Validação

ICE03
ICE06
ICE32
ICE45
ICE46
ICE66
ICE69