Blog
ServiceInstall Table: (MSI Service Tables)
What is a ServiceInstall table? (MSI Service Tables)
(MSI Service Tables )The ServiceInstall table lets the Installer add a new service to the user’s computer and has the following columns

ServiceInstall:
This is an arbitrary key for this table.
Name:
Column contains the name of the service—that is, the name we would see in the Services applet under Windows NT. string has a maximum length of 256 characters.
DisplayName:
String has a maximum length of 256 characters which is an alternative, user-friendly name for the service that can be retrieved from the user interface.
ServiceType:
This column is a set of bit flags that specify the type of service. And this column specifies one of the following service types:
Type Of Service | Details |
SERVICE_WIN32_OWN_PROCESS | A Microsoft Win32 service that runs its own process. |
SERVICE_WIN32_SHARE_PROCESS | A Win32 service that shares a process. |
SERVICE_INTERACTIVE_PROCESS | A Win32 service that interacts with the desktop. This value cannot be used alone and must be added to one of the two above types. |
The Windows Installer doesn’t support installing kernel drivers or file system drivers.
StartType:
This column is a set of bit flags that specify when to start the service. One of the following types of service start must be specified in this column.
Type Of Service Start | Details |
SERVICE_AUTO_START | Service that automatically starts when the system is started |
SERVICE_DEMAND_START | Service that is started manually |
SERVICE_DISABLED | Specifies a service that can no longer be started. |
SERVICE_BOOT_START | For a boot driver |
SERVICE_SYSTEM_START | For a driver that’s started during system startup. |
The Windows Installer cannot use the SERVICE_BOOT_START and SERVICE_SYSTEM_START options.
ErrorControl:
This column specifies the behavior if the service fails to start. It can be set to
SERVICE_ERROR_IGNORE | To just log any error |
SERVICE_ERROR_NORMAL | To log the error and display a message |
SERVICE_ERROR_CRITICAL | To restart the system using the Last Known Good configuration. |
LoadOrderGroup:
This column contains the name of the load ordering group to which this service belongs.
Dependencies:
This column lists any services that must be started before this service, separated by null characters, which we can represent with the [~] shortcut. The list must end with an extra null character. If there are no dependencies, we must explicitly put a null character into this column.
StartName:
This column specifies the account name, if any, that the service should log on as. Leave this column blank to use the default LocalSystem account.
Password:
This column specifies the password to use if an account name is supplied in the StartName column.
Arguments:
This column contains any command-line arguments or properties used to start the service.
Component_:
This column is a foreign key to the Component table; it specifies the component to which the service belongs.
Description:
This column contains the localizable description of the service.
The ServiceControl Table
What is a ServiceControl Table?
Asthe name itself specifies that this particular table is used to control the services. This table allows the Installer to start and stop services. These can be services that were already present on the user’s computer, or services listed in the ServiceInstall table. This table has these columns:

ServiceControl:
This is the primary key of this table
Name:
This column is the string naming the service. This column can be used to control a service that is not installed.
Event:
This column contains a combination of the flags shown in table below to control the effects of this entry.
Constant | Value | Description |
msidbServiceControlEventStart | 1 | Starts the service during the StartServices action |
msidbServiceControlEventStop | 2 | Stops the service during the StopServices action |
msidbServiceControlEventDelete | 8 | Deletes the service during the DeleteServices action |
msidbServiceControlEventUninstallStart | 16 | Starts the service during the StartServices action when an uninstall is being performed |
msidbServiceControlEventUninstallStop | 32 | Stops the service during the StopServices action when an uninstall is being performed |
msidbServiceControlEventUninstallDelete | 128 | Deletes the service during the DeleteServices action when an uninstall is being performed |
Arguments:
This is a null-separated list of arguments to use when starting the service.
Wait:
This column can be set to 0, to wait until the service is in a pending state, or to 1, to wait until the service is completely started.
Component_:
External key to column one of the Component Table.