mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-14 21:25:43 +00:00
msiexec: MSI service should report SERVICE_STOPPED when appropriate.
This commit is contained in:
parent
957f7013d2
commit
955de31fad
|
@ -81,6 +81,8 @@ static BOOL UpdateSCMStatus(DWORD dwCurrentState, DWORD dwWin32ExitCode,
|
||||||
|
|
||||||
static void WINAPI ServiceCtrlHandler(DWORD code)
|
static void WINAPI ServiceCtrlHandler(DWORD code)
|
||||||
{
|
{
|
||||||
|
DWORD state = SERVICE_RUNNING;
|
||||||
|
|
||||||
WINE_TRACE("%d\n", code);
|
WINE_TRACE("%d\n", code);
|
||||||
|
|
||||||
switch (code)
|
switch (code)
|
||||||
|
@ -89,13 +91,14 @@ static void WINAPI ServiceCtrlHandler(DWORD code)
|
||||||
case SERVICE_CONTROL_STOP:
|
case SERVICE_CONTROL_STOP:
|
||||||
UpdateSCMStatus(SERVICE_STOP_PENDING, NO_ERROR, 0);
|
UpdateSCMStatus(SERVICE_STOP_PENDING, NO_ERROR, 0);
|
||||||
KillService();
|
KillService();
|
||||||
|
state = SERVICE_STOPPED;
|
||||||
return;
|
return;
|
||||||
default:
|
default:
|
||||||
fprintf(stderr, "Unhandled service control code: %d\n", code);
|
fprintf(stderr, "Unhandled service control code: %d\n", code);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateSCMStatus(SERVICE_RUNNING, NO_ERROR, 0);
|
UpdateSCMStatus(state, NO_ERROR, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static DWORD WINAPI ServiceExecutionThread(LPVOID param)
|
static DWORD WINAPI ServiceExecutionThread(LPVOID param)
|
||||||
|
@ -135,12 +138,14 @@ static void WINAPI ServiceMain(DWORD argc, LPSTR *argv)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Failed to create event\n");
|
fprintf(stderr, "Failed to create event\n");
|
||||||
KillService();
|
KillService();
|
||||||
|
UpdateSCMStatus(SERVICE_STOPPED, NO_ERROR, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!StartServiceThread())
|
if (!StartServiceThread())
|
||||||
{
|
{
|
||||||
KillService();
|
KillService();
|
||||||
|
UpdateSCMStatus(SERVICE_STOPPED, NO_ERROR, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,6 +153,8 @@ static void WINAPI ServiceMain(DWORD argc, LPSTR *argv)
|
||||||
|
|
||||||
WaitForSingleObject(kill_event, INFINITE);
|
WaitForSingleObject(kill_event, INFINITE);
|
||||||
KillService();
|
KillService();
|
||||||
|
|
||||||
|
UpdateSCMStatus(SERVICE_STOPPED, NO_ERROR, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD DoService(void)
|
DWORD DoService(void)
|
||||||
|
|
Loading…
Reference in a new issue