[MSIEXEC]

* Sync with Wine 1.7.27.
CORE-8540

svn path=/trunk/; revision=64655
This commit is contained in:
Amine Khaldi 2014-10-10 11:41:31 +00:00
parent fd993b97d5
commit 8b43551c8c
3 changed files with 27 additions and 16 deletions

View file

@ -418,11 +418,12 @@ static int chomp( WCHAR *str )
{ {
enum chomp_state state = cs_token; enum chomp_state state = cs_token;
WCHAR *p, *out; WCHAR *p, *out;
int count = 1, ignore; int count = 1;
BOOL ignore;
for( p = str, out = str; *p; p++ ) for( p = str, out = str; *p; p++ )
{ {
ignore = 1; ignore = TRUE;
switch( state ) switch( state )
{ {
case cs_whitespace: case cs_whitespace:
@ -436,7 +437,7 @@ static int chomp( WCHAR *str )
break; break;
default: default:
count++; count++;
ignore = 0; ignore = FALSE;
state = cs_token; state = cs_token;
} }
break; break;
@ -452,7 +453,7 @@ static int chomp( WCHAR *str )
*out++ = 0; *out++ = 0;
break; break;
default: default:
ignore = 0; ignore = FALSE;
} }
break; break;
@ -463,7 +464,7 @@ static int chomp( WCHAR *str )
state = cs_token; state = cs_token;
break; break;
default: default:
ignore = 0; ignore = FALSE;
} }
break; break;
} }
@ -626,6 +627,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
WINE_TRACE("argvW[%d] = %s\n", i, wine_dbgstr_w(argvW[i])); WINE_TRACE("argvW[%d] = %s\n", i, wine_dbgstr_w(argvW[i]));
PackageName = argvW[i]; PackageName = argvW[i];
StringListAppend(&property_list, ActionAdmin); StringListAppend(&property_list, ActionAdmin);
WINE_FIXME("Administrative installs are not currently supported\n");
} }
else if(msi_option_prefix(argvW[i], "f")) else if(msi_option_prefix(argvW[i], "f"))
{ {
@ -906,13 +908,18 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
} }
else if(msi_strequal(argvW[i]+2, "b+!")) else if(msi_strequal(argvW[i]+2, "b+!"))
{ {
InstallUILevel = INSTALLUILEVEL_BASIC|INSTALLUILEVEL_ENDDIALOG; WINE_FIXME("Unhandled modifier: !\n");
WINE_FIXME("Unknown modifier: !\n"); InstallUILevel = INSTALLUILEVEL_BASIC|INSTALLUILEVEL_ENDDIALOG|INSTALLUILEVEL_HIDECANCEL;
}
else if(msi_strequal(argvW[i]+2, "b-!"))
{
WINE_FIXME("Unhandled modifier: !\n");
InstallUILevel = INSTALLUILEVEL_BASIC|INSTALLUILEVEL_PROGRESSONLY|INSTALLUILEVEL_HIDECANCEL;
} }
else if(msi_strequal(argvW[i]+2, "b!")) else if(msi_strequal(argvW[i]+2, "b!"))
{ {
InstallUILevel = INSTALLUILEVEL_BASIC; WINE_FIXME("Unhandled modifier: !\n");
WINE_FIXME("Unknown modifier: !\n"); InstallUILevel = INSTALLUILEVEL_BASIC|INSTALLUILEVEL_HIDECANCEL;
} }
else else
{ {

View file

@ -73,6 +73,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("%u\n", code); WINE_TRACE("%u\n", code);
switch (code) switch (code)
@ -81,21 +83,19 @@ 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();
return; state = SERVICE_STOPPED;
break;
default: default:
fprintf(stderr, "Unhandled service control code: %u\n", code); fprintf(stderr, "Unhandled service control code: %u\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)
{ {
while (TRUE) WaitForSingleObject(kill_event, INFINITE);
{
/* do nothing */
}
return 0; return 0;
} }
@ -130,12 +130,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;
} }
@ -143,6 +145,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)

View file

@ -246,7 +246,7 @@ reactos/base/applications/winhlp32 # Synced to Wine-1.7.27
reactos/base/applications/wordpad # Synced to Wine-1.7.9 reactos/base/applications/wordpad # Synced to Wine-1.7.9
reactos/base/services/rpcss # Synced to Wine-1.7.27 reactos/base/services/rpcss # Synced to Wine-1.7.27
reactos/base/system/expand # Synced to Wine-1.7.1 reactos/base/system/expand # Synced to Wine-1.7.1
reactos/base/system/msiexec # Synced to Wine-1.7.1 reactos/base/system/msiexec # Synced to Wine-1.7.27
reactos/modules/rosapps/winfile # Autosync reactos/modules/rosapps/winfile # Autosync
In addition the following libs, dlls and source files are mostly based on code ported In addition the following libs, dlls and source files are mostly based on code ported