msiexec: Convert DoRegServer to Unicode.

oldstable
Hans Leidekker 2013-02-12 14:33:23 +01:00 committed by Alexandre Julliard
parent 6cd2ffae02
commit 0800f29b25
1 changed files with 13 additions and 14 deletions

View File

@ -344,26 +344,25 @@ static DWORD DoDllUnregisterServer(LPCWSTR DllName)
static DWORD DoRegServer(void) static DWORD DoRegServer(void)
{ {
static const WCHAR msiserverW[] = {'M','S','I','S','e','r','v','e','r',0};
static const WCHAR msiexecW[] = {'\\','m','s','i','e','x','e','c',' ','/','V',0};
SC_HANDLE scm, service; SC_HANDLE scm, service;
CHAR path[MAX_PATH+12]; WCHAR path[MAX_PATH+12];
DWORD ret = 0; DWORD len, ret = 0;
scm = OpenSCManagerA(NULL, SERVICES_ACTIVE_DATABASEA, SC_MANAGER_CREATE_SERVICE); if (!(scm = OpenSCManagerW(NULL, SERVICES_ACTIVE_DATABASEW, SC_MANAGER_CREATE_SERVICE)))
if (!scm)
{ {
fprintf(stderr, "Failed to open the service control manager.\n"); fprintf(stderr, "Failed to open the service control manager.\n");
return 1; return 1;
} }
len = GetSystemDirectoryW(path, MAX_PATH);
GetSystemDirectoryA(path, MAX_PATH); lstrcpyW(path + len, msiexecW);
lstrcatA(path, "\\msiexec.exe /V"); if ((service = CreateServiceW(scm, msiserverW, msiserverW, GENERIC_ALL,
SERVICE_WIN32_SHARE_PROCESS, SERVICE_DEMAND_START,
service = CreateServiceA(scm, "MSIServer", "MSIServer", GENERIC_ALL, SERVICE_ERROR_NORMAL, path, NULL, NULL, NULL, NULL, NULL)))
SERVICE_WIN32_SHARE_PROCESS, SERVICE_DEMAND_START, {
SERVICE_ERROR_NORMAL, path, NULL, NULL, CloseServiceHandle(service);
NULL, NULL, NULL); }
if (service) CloseServiceHandle(service);
else if (GetLastError() != ERROR_SERVICE_EXISTS) else if (GetLastError() != ERROR_SERVICE_EXISTS)
{ {
fprintf(stderr, "Failed to create MSI service\n"); fprintf(stderr, "Failed to create MSI service\n");