What is the difference between MSI (C) and MSI (S)?
I understand that C stands for client and S stands for server.
I need to know what these processes are doing, where is this affecting.
What is the difference between them? When do they come into picture?
Answers (1)
From Phil Wilson's book, which you may have seen me mention from time to time [side-eye...]
At the end of the InstallUISequence there are entries:
MSI (c) (E8:64): Doing action: ExecuteAction
Action start 15:08:56: ExecuteAction.
MSI (c) (E8:64): Grabbed execution mutex.
MSI (c) (E8:64): Incrementing counter to disable shutdown. Counter after increment: 0
MSI (c) (E8:64): Switching to server: TARGETDIR="C:\Program Files\Phil\TryNotepad\"
As the log says, this is the point at which the installation switches from the UI mode to the Service mode (called server here, denoting a client/server architecture). In this particular log where the install transitions from the UI to the execute sequence, ExecuteAction is the action that makes this switch to the server. Note that line about grabbing an execution mutex. It's a characteristic of Windows Installer that only one installation is allowed to be in the server mode (running on the Service) at once. As a programmer you're probably aware that a mutex is a mutual exclusion object that blocks subsequent callers after the first one.Another installation that tries to enter server mode won't proceed beyond this point.