From c4fc91f4bf0ffdc4a7dc2e582e5bd3fddca85222 Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Thu, 29 Oct 2020 11:47:14 +0100 Subject: [PATCH] msi: Use wide character string literals in the remaining files. Signed-off-by: Hans Leidekker Signed-off-by: Alexandre Julliard --- dlls/msi/appsearch.c | 101 +++++++---------------- dlls/msi/assembly.c | 100 ++++++---------------- dlls/msi/automation.c | 20 ++--- dlls/msi/cond.y | 75 ++++++++--------- dlls/msi/custom.c | 97 ++++++++-------------- dlls/msi/database.c | 187 +++++++++++++----------------------------- dlls/msi/delete.c | 2 +- dlls/msi/distinct.c | 2 +- dlls/msi/files.c | 51 +++++------- dlls/msi/font.c | 43 +++------- dlls/msi/format.c | 7 +- dlls/msi/install.c | 41 +++++---- dlls/msi/media.c | 23 ++---- dlls/msi/msi.c | 8 +- dlls/msi/msipriv.h | 105 ------------------------ dlls/msi/msiquery.c | 22 ++--- dlls/msi/patch.c | 107 ++++++++---------------- dlls/msi/record.c | 5 +- dlls/msi/script.c | 12 +-- dlls/msi/select.c | 8 +- dlls/msi/source.c | 72 +++++++--------- dlls/msi/sql.y | 3 +- dlls/msi/storages.c | 6 +- dlls/msi/streams.c | 8 +- dlls/msi/string.c | 18 ++-- dlls/msi/suminfo.c | 29 ++++--- dlls/msi/table.c | 111 +++++++++++-------------- dlls/msi/upgrade.c | 19 ++--- dlls/msi/where.c | 2 +- 29 files changed, 420 insertions(+), 864 deletions(-) diff --git a/dlls/msi/appsearch.c b/dlls/msi/appsearch.c index dd58ccad702..abd3c9d3fd9 100644 --- a/dlls/msi/appsearch.c +++ b/dlls/msi/appsearch.c @@ -82,13 +82,7 @@ void msi_parse_version_string(LPCWSTR verStr, PDWORD ms, PDWORD ls) */ static UINT get_signature( MSIPACKAGE *package, MSISIGNATURE *sig, const WCHAR *name ) { - static const WCHAR query[] = { - 's','e','l','e','c','t',' ','*',' ', - 'f','r','o','m',' ', - 'S','i','g','n','a','t','u','r','e',' ', - 'w','h','e','r','e',' ','S','i','g','n','a','t','u','r','e',' ','=',' ', - '\'','%','s','\'',0}; - LPWSTR minVersion, maxVersion, p; + WCHAR *minVersion, *maxVersion, *p; MSIRECORD *row; DWORD time; @@ -96,7 +90,7 @@ static UINT get_signature( MSIPACKAGE *package, MSISIGNATURE *sig, const WCHAR * memset(sig, 0, sizeof(*sig)); sig->Name = name; - row = MSI_QueryGetRecord( package->db, query, name ); + row = MSI_QueryGetRecord( package->db, L"SELECT * FROM `Signature` WHERE `Signature` = '%s'", name ); if (!row) { TRACE("failed to query signature for %s\n", debugstr_w(name)); @@ -195,7 +189,7 @@ static WCHAR *search_file( MSIPACKAGE *package, WCHAR *path, MSISIGNATURE *sig ) if (!size) goto done; - if (!VerQueryValueW(buffer, szBackSlash, (LPVOID)&info, &size) || !info) + if (!VerQueryValueW(buffer, L"\\", (LPVOID)&info, &size) || !info) goto done; if (sig->MinVersionLS || sig->MinVersionMS) @@ -227,17 +221,6 @@ done: static UINT search_components( MSIPACKAGE *package, WCHAR **appValue, MSISIGNATURE *sig ) { - static const WCHAR query[] = { - 'S','E','L','E','C','T',' ','*',' ', - 'F','R','O','M',' ', - '`','C','o','m','p','L','o','c','a','t','o','r','`',' ', - 'W','H','E','R','E',' ','`','S','i','g','n','a','t','u','r','e','_','`',' ','=',' ', - '\'','%','s','\'',0}; - static const WCHAR sigquery[] = { - 'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ', - '`','S','i','g','n','a','t','u','r','e','`',' ', - 'W','H','E','R','E',' ','`','S','i','g','n','a','t','u','r','e','`',' ','=',' ', - '\'','%','s','\'',0}; MSIRECORD *row, *rec; LPCWSTR signature, guid; BOOL sigpresent = TRUE; @@ -252,7 +235,7 @@ static UINT search_components( MSIPACKAGE *package, WCHAR **appValue, MSISIGNATU *appValue = NULL; - row = MSI_QueryGetRecord(package->db, query, sig->Name); + row = MSI_QueryGetRecord(package->db, L"SELECT * FROM `CompLocator` WHERE `Signature_` = '%s'", sig->Name); if (!row) { TRACE("failed to query CompLocator for %s\n", debugstr_w(sig->Name)); @@ -263,7 +246,7 @@ static UINT search_components( MSIPACKAGE *package, WCHAR **appValue, MSISIGNATU guid = MSI_RecordGetString(row, 2); type = MSI_RecordGetInteger(row, 3); - rec = MSI_QueryGetRecord(package->db, sigquery, signature); + rec = MSI_QueryGetRecord(package->db, L"SELECT * FROM `Signature` WHERE `Signature` = '%s'", signature); if (!rec) sigpresent = FALSE; @@ -312,9 +295,6 @@ done: static void convert_reg_value( DWORD regType, const BYTE *value, DWORD sz, WCHAR **appValue ) { - static const WCHAR dwordFmt[] = { '#','%','d','\0' }; - static const WCHAR binPre[] = { '#','x','\0' }; - static const WCHAR binFmt[] = { '%','0','2','X','\0' }; LPWSTR ptr; DWORD i; @@ -339,7 +319,7 @@ static void convert_reg_value( DWORD regType, const BYTE *value, DWORD sz, WCHAR * char if needed */ *appValue = msi_alloc(10 * sizeof(WCHAR)); - swprintf(*appValue, 10, dwordFmt, *(const DWORD *)value); + swprintf(*appValue, 10, L"#%d", *(const DWORD *)value); break; case REG_EXPAND_SZ: sz = ExpandEnvironmentStringsW((LPCWSTR)value, NULL, 0); @@ -349,10 +329,10 @@ static void convert_reg_value( DWORD regType, const BYTE *value, DWORD sz, WCHAR case REG_BINARY: /* #x\0 */ *appValue = msi_alloc((sz * 2 + 3) * sizeof(WCHAR)); - lstrcpyW(*appValue, binPre); - ptr = *appValue + lstrlenW(binPre); + lstrcpyW(*appValue, L"#x"); + ptr = *appValue + lstrlenW(L"#x"); for (i = 0; i < sz; i++, ptr += 2) - swprintf(ptr, 3, binFmt, value[i]); + swprintf(ptr, 3, L"%02X", value[i]); break; default: WARN("unimplemented for values of type %d\n", regType); @@ -364,10 +344,6 @@ static UINT search_directory( MSIPACKAGE *, MSISIGNATURE *, const WCHAR *, int, static UINT search_reg( MSIPACKAGE *package, WCHAR **appValue, MSISIGNATURE *sig ) { - static const WCHAR query[] = { - 'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ', - 'R','e','g','L','o','c','a','t','o','r',' ','W','H','E','R','E',' ', - 'S','i','g','n','a','t','u','r','e','_',' ','=',' ', '\'','%','s','\'',0}; const WCHAR *keyPath, *valueName; WCHAR *deformatted = NULL, *ptr = NULL, *end; int root, type; @@ -382,7 +358,7 @@ static UINT search_reg( MSIPACKAGE *package, WCHAR **appValue, MSISIGNATURE *sig *appValue = NULL; - row = MSI_QueryGetRecord( package->db, query, sig->Name ); + row = MSI_QueryGetRecord( package->db, L"SELECT * FROM `RegLocator` WHERE `Signature_` = '%s'", sig->Name ); if (!row) { TRACE("failed to query RegLocator for %s\n", debugstr_w(sig->Name)); @@ -519,12 +495,6 @@ static LPWSTR get_ini_field(LPWSTR buf, int field) static UINT search_ini( MSIPACKAGE *package, WCHAR **appValue, MSISIGNATURE *sig ) { - static const WCHAR query[] = { - 's','e','l','e','c','t',' ','*',' ', - 'f','r','o','m',' ', - 'I','n','i','L','o','c','a','t','o','r',' ', - 'w','h','e','r','e',' ', - 'S','i','g','n','a','t','u','r','e','_',' ','=',' ','\'','%','s','\'',0}; MSIRECORD *row; LPWSTR fileName, section, key; int field, type; @@ -534,7 +504,7 @@ static UINT search_ini( MSIPACKAGE *package, WCHAR **appValue, MSISIGNATURE *sig *appValue = NULL; - row = MSI_QueryGetRecord( package->db, query, sig->Name ); + row = MSI_QueryGetRecord( package->db, L"SELECT * FROM `IniLocator` WHERE `Signature_` = '%s'", sig->Name ); if (!row) { TRACE("failed to query IniLocator for %s\n", debugstr_w(sig->Name)); @@ -657,7 +627,7 @@ static BOOL match_languages( const void *version, const WCHAR *languages ) LANGID *ids; if (!languages || !languages[0]) return TRUE; - if (!VerQueryValueW( version, szLangResource, (void **)&lang, &len )) return FALSE; + if (!VerQueryValueW( version, L"\\VarFileInfo\\Translation", (void **)&lang, &len )) return FALSE; if (!(ids = parse_languages( languages, &num_ids ))) return FALSE; for (i = 0; i < num_ids; i++) @@ -694,7 +664,7 @@ static UINT file_version_matches( MSIPACKAGE *package, const MSISIGNATURE *sig, if (!(version = msi_alloc( size ))) return ERROR_OUTOFMEMORY; if (msi_get_file_version_info( package, filePath, size, version )) - VerQueryValueW( version, szBackSlash, (void **)&info, &len ); + VerQueryValueW( version, L"\\", (void **)&info, &len ); if (info) { @@ -788,7 +758,6 @@ static UINT file_matches_sig( MSIPACKAGE *package, const MSISIGNATURE *sig, cons static UINT recurse_search_directory( MSIPACKAGE *package, WCHAR **appValue, MSISIGNATURE *sig, const WCHAR *dir, int depth ) { - static const WCHAR starDotStarW[] = { '*','.','*',0 }; HANDLE hFind; WIN32_FIND_DATAW findData; UINT rc = ERROR_SUCCESS; @@ -807,7 +776,7 @@ static UINT recurse_search_directory( MSIPACKAGE *package, WCHAR **appValue, MSI * here. Add two because we might need to add a backslash if the dir name * isn't backslash-terminated. */ - len = dirLen + max(fileLen, lstrlenW(starDotStarW)) + 2; + len = dirLen + max(fileLen, lstrlenW(L"*.*")) + 2; buf = msi_alloc(len * sizeof(WCHAR)); if (!buf) return ERROR_OUTOFMEMORY; @@ -837,14 +806,14 @@ static UINT recurse_search_directory( MSIPACKAGE *package, WCHAR **appValue, MSI { lstrcpyW(buf, dir); PathAddBackslashW(buf); - lstrcatW(buf, starDotStarW); + lstrcatW(buf, L"*.*"); hFind = msi_find_first_file( package, buf, &findData ); if (hFind != INVALID_HANDLE_VALUE) { if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY && - wcscmp( findData.cFileName, szDot ) && - wcscmp( findData.cFileName, szDotDot )) + wcscmp( findData.cFileName, L"." ) && + wcscmp( findData.cFileName, L".." )) { lstrcpyW(subpath, dir); PathAppendW(subpath, findData.cFileName); @@ -853,8 +822,8 @@ static UINT recurse_search_directory( MSIPACKAGE *package, WCHAR **appValue, MSI while (rc == ERROR_SUCCESS && !*appValue && msi_find_next_file( package, hFind, &findData )) { - if (!wcscmp( findData.cFileName, szDot ) || - !wcscmp( findData.cFileName, szDotDot )) + if (!wcscmp( findData.cFileName, L"." ) || + !wcscmp( findData.cFileName, L".." )) continue; lstrcpyW(subpath, dir); @@ -966,12 +935,6 @@ static UINT search_sig_name( MSIPACKAGE *, const WCHAR *, MSISIGNATURE *, WCHAR static UINT search_dr( MSIPACKAGE *package, WCHAR **appValue, MSISIGNATURE *sig ) { - static const WCHAR query[] = { - 's','e','l','e','c','t',' ','*',' ', - 'f','r','o','m',' ', - 'D','r','L','o','c','a','t','o','r',' ', - 'w','h','e','r','e',' ', - 'S','i','g','n','a','t','u','r','e','_',' ','=',' ', '\'','%','s','\'',0}; LPWSTR parent = NULL; LPCWSTR parentName; WCHAR path[MAX_PATH]; @@ -985,7 +948,7 @@ static UINT search_dr( MSIPACKAGE *package, WCHAR **appValue, MSISIGNATURE *sig *appValue = NULL; - row = MSI_QueryGetRecord( package->db, query, sig->Name ); + row = MSI_QueryGetRecord( package->db, L"SELECT * FROM `DrLocator` WHERE `Signature_` = '%s'", sig->Name ); if (!row) { TRACE("failed to query DrLocator for %s\n", debugstr_w(sig->Name)); @@ -1087,7 +1050,7 @@ static UINT ITERATE_AppSearch(MSIRECORD *row, LPVOID param) if (value) { r = msi_set_property( package->db, propName, value, -1 ); - if (r == ERROR_SUCCESS && !wcscmp( propName, szSourceDir )) + if (r == ERROR_SUCCESS && !wcscmp( propName, L"SourceDir" )) msi_reset_source_folders( package ); msi_free(value); @@ -1105,21 +1068,18 @@ static UINT ITERATE_AppSearch(MSIRECORD *row, LPVOID param) UINT ACTION_AppSearch(MSIPACKAGE *package) { - static const WCHAR query[] = { - 'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ', - 'A','p','p','S','e','a','r','c','h',0}; MSIQUERY *view; UINT r; - if (msi_action_is_unique(package, szAppSearch)) + if (msi_action_is_unique(package, L"AppSearch")) { TRACE("Skipping AppSearch action: already done in UI sequence\n"); return ERROR_SUCCESS; } else - msi_register_unique_action(package, szAppSearch); + msi_register_unique_action(package, L"AppSearch"); - r = MSI_OpenQuery( package->db, &view, query ); + r = MSI_OpenQuery( package->db, &view, L"SELECT * FROM `AppSearch`" ); if (r != ERROR_SUCCESS) return ERROR_SUCCESS; @@ -1136,8 +1096,6 @@ static UINT ITERATE_CCPSearch(MSIRECORD *row, LPVOID param) MSISIGNATURE sig; UINT r = ERROR_SUCCESS; - static const WCHAR success[] = {'C','C','P','_','S','u','c','c','e','s','s',0}; - signature = MSI_RecordGetString(row, 1); TRACE("%s\n", debugstr_w(signature)); @@ -1146,7 +1104,7 @@ static UINT ITERATE_CCPSearch(MSIRECORD *row, LPVOID param) if (value) { TRACE("Found signature %s\n", debugstr_w(signature)); - msi_set_property( package->db, success, szOne, -1 ); + msi_set_property( package->db, L"CCP_Success", L"1", -1 ); msi_free(value); r = ERROR_NO_MORE_ITEMS; } @@ -1157,21 +1115,18 @@ static UINT ITERATE_CCPSearch(MSIRECORD *row, LPVOID param) UINT ACTION_CCPSearch(MSIPACKAGE *package) { - static const WCHAR query[] = { - 'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ', - 'C','C','P','S','e','a','r','c','h',0}; MSIQUERY *view; UINT r; - if (msi_action_is_unique(package, szCCPSearch)) + if (msi_action_is_unique(package, L"CCPSearch")) { TRACE("Skipping AppSearch action: already done in UI sequence\n"); return ERROR_SUCCESS; } else - msi_register_unique_action(package, szCCPSearch); + msi_register_unique_action(package, L"CCPSearch"); - r = MSI_OpenQuery(package->db, &view, query); + r = MSI_OpenQuery(package->db, &view, L"SELECT * FROM `CCPSearch`"); if (r != ERROR_SUCCESS) return ERROR_SUCCESS; diff --git a/dlls/msi/assembly.c b/dlls/msi/assembly.c index bd694333d2a..1007979827a 100644 --- a/dlls/msi/assembly.c +++ b/dlls/msi/assembly.c @@ -32,17 +32,11 @@ WINE_DEFAULT_DEBUG_CHANNEL(msi); static BOOL load_fusion_dlls( MSIPACKAGE *package ) { - static const WCHAR szFusion[] = {'f','u','s','i','o','n','.','d','l','l',0}; - static const WCHAR szMscoree[] = {'\\','m','s','c','o','r','e','e','.','d','l','l',0}; - static const WCHAR szVersion10[] = {'v','1','.','0','.','3','7','0','5',0}; - static const WCHAR szVersion11[] = {'v','1','.','1','.','4','3','2','2',0}; - static const WCHAR szVersion20[] = {'v','2','.','0','.','5','0','7','2','7',0}; - static const WCHAR szVersion40[] = {'v','4','.','0','.','3','0','3','1','9',0}; HRESULT (WINAPI *pLoadLibraryShim)( const WCHAR *, const WCHAR *, void *, HMODULE * ); WCHAR path[MAX_PATH]; DWORD len = GetSystemDirectoryW( path, MAX_PATH ); - lstrcpyW( path + len, szMscoree ); + lstrcpyW( path + len, L"\\mscoree.dll" ); if (package->hmscoree || !(package->hmscoree = LoadLibraryW( path ))) return TRUE; if (!(pLoadLibraryShim = (void *)GetProcAddress( package->hmscoree, "LoadLibraryShim" ))) { @@ -51,10 +45,10 @@ static BOOL load_fusion_dlls( MSIPACKAGE *package ) return TRUE; } - pLoadLibraryShim( szFusion, szVersion10, NULL, &package->hfusion10 ); - pLoadLibraryShim( szFusion, szVersion11, NULL, &package->hfusion11 ); - pLoadLibraryShim( szFusion, szVersion20, NULL, &package->hfusion20 ); - pLoadLibraryShim( szFusion, szVersion40, NULL, &package->hfusion40 ); + pLoadLibraryShim( L"fusion.dll", L"v1.0.3705", NULL, &package->hfusion10 ); + pLoadLibraryShim( L"fusion.dll", L"v1.1.4322", NULL, &package->hfusion11 ); + pLoadLibraryShim( L"fusion.dll", L"v2.0.50727", NULL, &package->hfusion20 ); + pLoadLibraryShim( L"fusion.dll", L"v4.0.30319", NULL, &package->hfusion40 ); return TRUE; } @@ -129,16 +123,11 @@ void msi_destroy_assembly_caches( MSIPACKAGE *package ) static MSIRECORD *get_assembly_record( MSIPACKAGE *package, const WCHAR *comp ) { - static const WCHAR query[] = { - 'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ', - '`','M','s','i','A','s','s','e','m','b','l','y','`',' ', - 'W','H','E','R','E',' ','`','C','o','m','p','o','n','e','n','t','_','`', - ' ','=',' ','\'','%','s','\'',0}; MSIQUERY *view; MSIRECORD *rec; UINT r; - r = MSI_OpenQuery( package->db, &view, query, comp ); + r = MSI_OpenQuery( package->db, &view, L"SELECT * FROM `MsiAssembly` WHERE `Component_` = '%s'", comp ); if (r != ERROR_SUCCESS) return NULL; @@ -170,36 +159,28 @@ struct assembly_name static UINT get_assembly_name_attribute( MSIRECORD *rec, LPVOID param ) { - static const WCHAR fmtW[] = {'%','s','=','"','%','s','"',0}; - static const WCHAR nameW[] = {'n','a','m','e',0}; struct assembly_name *name = param; const WCHAR *attr = MSI_RecordGetString( rec, 2 ); const WCHAR *value = MSI_RecordGetString( rec, 3 ); - int len = lstrlenW( fmtW ) + lstrlenW( attr ) + lstrlenW( value ); + int len = lstrlenW( L"%s=\"%s\"" ) + lstrlenW( attr ) + lstrlenW( value ); if (!(name->attrs[name->index] = msi_alloc( len * sizeof(WCHAR) ))) return ERROR_OUTOFMEMORY; - if (!wcsicmp( attr, nameW )) lstrcpyW( name->attrs[name->index++], value ); - else swprintf( name->attrs[name->index++], len, fmtW, attr, value ); + if (!wcsicmp( attr, L"name" )) lstrcpyW( name->attrs[name->index++], value ); + else swprintf( name->attrs[name->index++], len, L"%s=\"%s\"", attr, value ); return ERROR_SUCCESS; } static WCHAR *get_assembly_display_name( MSIDATABASE *db, const WCHAR *comp, MSIASSEMBLY *assembly ) { - static const WCHAR commaW[] = {',',0}; - static const WCHAR queryW[] = { - 'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ', - '`','M','s','i','A','s','s','e','m','b','l','y','N','a','m','e','`',' ', - 'W','H','E','R','E',' ','`','C','o','m','p','o','n','e','n','t','_','`', - ' ','=',' ','\'','%','s','\'',0}; struct assembly_name name; WCHAR *display_name = NULL; MSIQUERY *view; UINT i, r; int len; - r = MSI_OpenQuery( db, &view, queryW, comp ); + r = MSI_OpenQuery( db, &view, L"SELECT * FROM `MsiAssemblyName` WHERE `Component_` = '%s'", comp ); if (r != ERROR_SUCCESS) return NULL; @@ -224,7 +205,7 @@ static WCHAR *get_assembly_display_name( MSIDATABASE *db, const WCHAR *comp, MSI for (i = 0; i < name.count; i++) { lstrcatW( display_name, name.attrs[i] ); - if (i < name.count - 1) lstrcatW( display_name, commaW ); + if (i < name.count - 1) lstrcatW( display_name, L"," ); } } @@ -320,23 +301,17 @@ IAssemblyEnum *msi_create_assembly_enum( MSIPACKAGE *package, const WCHAR *displ return ret; } -static const WCHAR clr_version_v10[] = {'v','1','.','0','.','3','7','0','5',0}; -static const WCHAR clr_version_v11[] = {'v','1','.','1','.','4','3','2','2',0}; -static const WCHAR clr_version_v20[] = {'v','2','.','0','.','5','0','7','2','7',0}; -static const WCHAR clr_version_v40[] = {'v','4','.','0','.','3','0','3','1','9',0}; -static const WCHAR clr_version_unknown[] = {'u','n','k','n','o','w','n',0}; - static const WCHAR *clr_version[] = { - clr_version_v10, - clr_version_v11, - clr_version_v20, - clr_version_v40 + L"v1.0.3705", + L"v1.2.4322", + L"v2.0.50727", + L"v4.0.30319" }; static const WCHAR *get_clr_version_str( enum clr_version version ) { - if (version >= ARRAY_SIZE( clr_version )) return clr_version_unknown; + if (version >= ARRAY_SIZE( clr_version )) return L"unknown"; return clr_version[version]; } @@ -539,30 +514,20 @@ static WCHAR *build_local_assembly_path( const WCHAR *filename ) static LONG open_assemblies_key( UINT context, BOOL win32, HKEY *hkey ) { - static const WCHAR path_win32[] = - {'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\', - 'I','n','s','t','a','l','l','e','r','\\','W','i','n','3','2','A','s','s','e','m','b','l','i','e','s','\\',0}; - static const WCHAR path_dotnet[] = - {'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\', - 'I','n','s','t','a','l','l','e','r','\\','A','s','s','e','m','b','l','i','e','s','\\',0}; - static const WCHAR classes_path_win32[] = - {'I','n','s','t','a','l','l','e','r','\\','W','i','n','3','2','A','s','s','e','m','b','l','i','e','s','\\',0}; - static const WCHAR classes_path_dotnet[] = - {'I','n','s','t','a','l','l','e','r','\\','A','s','s','e','m','b','l','i','e','s','\\',0}; HKEY root; const WCHAR *path; if (context == MSIINSTALLCONTEXT_MACHINE) { root = HKEY_CLASSES_ROOT; - if (win32) path = classes_path_win32; - else path = classes_path_dotnet; + if (win32) path = L"Installer\\Win32Assemblies\\"; + else path = L"Installer\\Assemblies\\"; } else { root = HKEY_CURRENT_USER; - if (win32) path = path_win32; - else path = path_dotnet; + if (win32) path = L"Software\\Microsoft\\Installer\\Win32Assemblies\\"; + else path = L"Software\\Microsoft\\Installer\\Assemblies\\"; } return RegCreateKeyW( root, path, hkey ); } @@ -609,33 +574,20 @@ static LONG delete_local_assembly_key( UINT context, BOOL win32, const WCHAR *fi static LONG open_global_assembly_key( UINT context, BOOL win32, HKEY *hkey ) { - static const WCHAR path_win32[] = - {'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\', - 'I','n','s','t','a','l','l','e','r','\\','W','i','n','3','2','A','s','s','e','m','b','l','i','e','s','\\', - 'G','l','o','b','a','l',0}; - static const WCHAR path_dotnet[] = - {'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\', - 'I','n','s','t','a','l','l','e','r','\\','A','s','s','e','m','b','l','i','e','s','\\', - 'G','l','o','b','a','l',0}; - static const WCHAR classes_path_win32[] = - {'I','n','s','t','a','l','l','e','r','\\','W','i','n','3','2','A','s','s','e','m','b','l','i','e','s','\\', - 'G','l','o','b','a','l',0}; - static const WCHAR classes_path_dotnet[] = - {'I','n','s','t','a','l','l','e','r','\\','A','s','s','e','m','b','l','i','e','s','\\','G','l','o','b','a','l',0}; HKEY root; const WCHAR *path; if (context == MSIINSTALLCONTEXT_MACHINE) { root = HKEY_CLASSES_ROOT; - if (win32) path = classes_path_win32; - else path = classes_path_dotnet; + if (win32) path = L"Installer\\Win32Assemblies\\Global"; + else path = L"Installer\\Assemblies\\Global"; } else { root = HKEY_CURRENT_USER; - if (win32) path = path_win32; - else path = path_dotnet; + if (win32) path = L"Software\\Microsoft\\Installer\\Win32Assemblies\\Global"; + else path = L"Software\\Microsoft\\Installer\\Assemblies\\Global"; } return RegCreateKeyW( root, path, hkey ); } @@ -645,7 +597,7 @@ UINT ACTION_MsiPublishAssemblies( MSIPACKAGE *package ) MSICOMPONENT *comp; if (package->script == SCRIPT_NONE) - return msi_schedule_action(package, SCRIPT_INSTALL, szMsiPublishAssemblies); + return msi_schedule_action(package, SCRIPT_INSTALL, L"MsiPublishAssemblies"); LIST_FOR_EACH_ENTRY(comp, &package->components, MSICOMPONENT, entry) { @@ -718,7 +670,7 @@ UINT ACTION_MsiUnpublishAssemblies( MSIPACKAGE *package ) MSICOMPONENT *comp; if (package->script == SCRIPT_NONE) - return msi_schedule_action(package, SCRIPT_INSTALL, szMsiUnpublishAssemblies); + return msi_schedule_action(package, SCRIPT_INSTALL, L"MsiUnpublishAssemblies"); LIST_FOR_EACH_ENTRY(comp, &package->components, MSICOMPONENT, entry) { diff --git a/dlls/msi/automation.c b/dlls/msi/automation.c index 87c7815094a..dc38436e682 100644 --- a/dlls/msi/automation.c +++ b/dlls/msi/automation.c @@ -95,8 +95,7 @@ HRESULT get_typeinfo(tid_t tid, ITypeInfo **typeinfo) hr = LoadRegTypeLib(&LIBID_WindowsInstaller, 1, 0, LOCALE_NEUTRAL, &lib); if (FAILED(hr)) { - static const WCHAR msiserverW[] = {'m','s','i','s','e','r','v','e','r','.','t','l','b',0}; - hr = LoadTypeLib(msiserverW, &lib); + hr = LoadTypeLib(L"msiserver.tlb", &lib); if (FAILED(hr)) { ERR("Could not load msiserver.tlb\n"); return hr; @@ -376,8 +375,6 @@ static HRESULT WINAPI AutomationObject_Invoke( else if (pExcepInfo && (hr == DISP_E_PARAMNOTFOUND || hr == DISP_E_EXCEPTION)) { - static const WCHAR szComma[] = { ',',0 }; - static const WCHAR szExceptionSource[] = {'M','s','i',' ','A','P','I',' ','E','r','r','o','r',0}; WCHAR szExceptionDescription[MAX_PATH]; BSTR bstrParamNames[MAX_FUNC_PARAMS]; unsigned namesNo, i; @@ -395,7 +392,7 @@ static HRESULT WINAPI AutomationObject_Invoke( { if (bFirst) bFirst = FALSE; else { - lstrcpyW(&szExceptionDescription[lstrlenW(szExceptionDescription)], szComma); + lstrcpyW(&szExceptionDescription[lstrlenW(szExceptionDescription)], L","); } lstrcpyW(&szExceptionDescription[lstrlenW(szExceptionDescription)], bstrParamNames[i]); SysFreeString(bstrParamNames[i]); @@ -403,7 +400,7 @@ static HRESULT WINAPI AutomationObject_Invoke( memset(pExcepInfo, 0, sizeof(EXCEPINFO)); pExcepInfo->wCode = 1000; - pExcepInfo->bstrSource = SysAllocString(szExceptionSource); + pExcepInfo->bstrSource = SysAllocString(L"Msi API Error"); pExcepInfo->bstrDescription = SysAllocString(szExceptionDescription); hr = DISP_E_EXCEPTION; } @@ -1599,8 +1596,6 @@ static HRESULT session_invoke( * registry value type. Used by Installer::RegistryValue. */ static void variant_from_registry_value(VARIANT *pVarResult, DWORD dwType, LPBYTE lpData, DWORD dwSize) { - static const WCHAR szREG_BINARY[] = { '(','R','E','G','_','B','I','N','A','R','Y',')',0 }; - static const WCHAR szREG_[] = { '(','R','E','G','_','?','?',')',0 }; WCHAR *szString = (WCHAR *)lpData; LPWSTR szNewString = NULL; DWORD dwNewSize = 0; @@ -1642,12 +1637,12 @@ static void variant_from_registry_value(VARIANT *pVarResult, DWORD dwType, LPBYT case REG_QWORD: V_VT(pVarResult) = VT_BSTR; - V_BSTR(pVarResult) = SysAllocString(szREG_); /* Weird string, don't know why native returns it */ + V_BSTR(pVarResult) = SysAllocString(L"(REG_\?\?)"); /* Weird string, don't know why native returns it */ break; case REG_BINARY: V_VT(pVarResult) = VT_BSTR; - V_BSTR(pVarResult) = SysAllocString(szREG_BINARY); + V_BSTR(pVarResult) = SysAllocString(L"(REG_BINARY)"); break; case REG_NONE: @@ -1950,9 +1945,6 @@ static HRESULT InstallerImpl_Version(WORD wFlags, DLLVERSIONINFO verinfo; WCHAR version[MAX_PATH]; - static const WCHAR format[] = { - '%','d','.','%','d','.','%','d','.','%','d',0}; - if (!(wFlags & DISPATCH_PROPERTYGET)) return DISP_E_MEMBERNOTFOUND; @@ -1961,7 +1953,7 @@ static HRESULT InstallerImpl_Version(WORD wFlags, if (FAILED(hr)) return hr; - swprintf(version, ARRAY_SIZE(version), format, verinfo.dwMajorVersion, verinfo.dwMinorVersion, + swprintf(version, ARRAY_SIZE(version), L"%d.%d.%d.%d", verinfo.dwMajorVersion, verinfo.dwMinorVersion, verinfo.dwBuildNumber, verinfo.dwPlatformID); V_VT(pVarResult) = VT_BSTR; diff --git a/dlls/msi/cond.y b/dlls/msi/cond.y index 1a79de31bf8..636999a104f 100644 --- a/dlls/msi/cond.y +++ b/dlls/msi/cond.y @@ -144,7 +144,7 @@ static void value_free( struct value val ) %% condition: - expression + expression { COND_input* cond = (COND_input*) info; cond->result = $1; @@ -157,7 +157,7 @@ condition: ; expression: - boolean_term + boolean_term { $$ = $1; } @@ -318,7 +318,7 @@ value: { COND_input* cond = (COND_input*) info; INSTALLSTATE install = INSTALLSTATE_UNKNOWN, action = INSTALLSTATE_UNKNOWN; - + if(MSI_GetComponentStateW(cond->package, $2, &install, &action ) != ERROR_SUCCESS) { $$.type = VALUE_LITERAL; @@ -335,7 +335,7 @@ value: { COND_input* cond = (COND_input*) info; INSTALLSTATE install = INSTALLSTATE_UNKNOWN, action = INSTALLSTATE_UNKNOWN; - + if(MSI_GetComponentStateW(cond->package, $2, &install, &action ) != ERROR_SUCCESS) { $$.type = VALUE_LITERAL; @@ -352,7 +352,7 @@ value: { COND_input* cond = (COND_input*) info; INSTALLSTATE install, action; - + if (MSI_GetFeatureStateW(cond->package, $2, &install, &action ) != ERROR_SUCCESS) { $$.type = VALUE_LITERAL; @@ -369,7 +369,7 @@ value: { COND_input* cond = (COND_input*) info; INSTALLSTATE install = INSTALLSTATE_UNKNOWN, action = INSTALLSTATE_UNKNOWN; - + if(MSI_GetFeatureStateW(cond->package, $2, &install, &action ) != ERROR_SUCCESS) { $$.type = VALUE_LITERAL; @@ -501,8 +501,8 @@ static INT compare_string( LPCWSTR a, INT operator, LPCWSTR b, BOOL convert ) return compare_substring( a, operator, b ); /* null and empty string are equivalent */ - if (!a) a = szEmpty; - if (!b) b = szEmpty; + if (!a) a = L""; + if (!b) b = L""; if (convert && str_is_number(a) && str_is_number(b)) return compare_int( wcstol(a, NULL, 10), operator, wcstol(b, NULL, 10) ); @@ -581,7 +581,7 @@ static INT compare_int( INT a, INT operator, INT b ) static int COND_IsIdent( WCHAR x ) { - return( COND_IsAlpha( x ) || COND_IsNumber( x ) || ( x == '_' ) + return( COND_IsAlpha( x ) || COND_IsNumber( x ) || ( x == '_' ) || ( x == '#' ) || (x == '.') ); } @@ -591,24 +591,24 @@ static int COND_GetOperator( COND_input *cond ) const WCHAR str[4]; int id; } table[] = { - { {'~','<','=',0}, COND_ILE }, - { {'~','>','<',0}, COND_ISS }, - { {'~','>','>',0}, COND_IRHS }, - { {'~','<','>',0}, COND_INE }, - { {'~','>','=',0}, COND_IGE }, - { {'~','<','<',0}, COND_ILHS }, - { {'~','=',0}, COND_IEQ }, - { {'~','<',0}, COND_ILT }, - { {'~','>',0}, COND_IGT }, - { {'>','=',0}, COND_GE }, - { {'>','<',0}, COND_SS }, - { {'<','<',0}, COND_LHS }, - { {'<','>',0}, COND_NE }, - { {'<','=',0}, COND_LE }, - { {'>','>',0}, COND_RHS }, - { {'>',0}, COND_GT }, - { {'<',0}, COND_LT }, - { {0}, 0 } + { L"~<=", COND_ILE }, + { L"~><", COND_ISS }, + { L"~>>", COND_IRHS }, + { L"~<>", COND_INE }, + { L"~>=", COND_IGE }, + { L"~<<", COND_ILHS }, + { L"~=", COND_IEQ }, + { L"~<", COND_ILT }, + { L"~>", COND_IGT }, + { L">=", COND_GE }, + { L"><", COND_SS }, + { L"<<", COND_LHS }, + { L"<>", COND_NE }, + { L"<=", COND_LE }, + { L">>", COND_RHS }, + { L">", COND_GT }, + { L"<", COND_LT }, + { L"", 0 } }; LPCWSTR p = &cond->str[cond->n]; int i = 0, len; @@ -672,31 +672,24 @@ static int COND_GetOne( struct cond_str *str, COND_input *cond ) } else if( COND_IsAlpha( ch ) ) { - static const WCHAR szNot[] = {'N','O','T',0}; - static const WCHAR szAnd[] = {'A','N','D',0}; - static const WCHAR szXor[] = {'X','O','R',0}; - static const WCHAR szEqv[] = {'E','Q','V',0}; - static const WCHAR szImp[] = {'I','M','P',0}; - static const WCHAR szOr[] = {'O','R',0}; - while( COND_IsIdent( str->data[len] ) ) len++; rc = COND_IDENT; if ( len == 3 ) { - if ( !wcsnicmp( str->data, szNot, len ) ) + if ( !wcsnicmp( str->data, L"NOT", len ) ) rc = COND_NOT; - else if( !wcsnicmp( str->data, szAnd, len ) ) + else if( !wcsnicmp( str->data, L"AND", len ) ) rc = COND_AND; - else if( !wcsnicmp( str->data, szXor, len ) ) + else if( !wcsnicmp( str->data, L"XOR", len ) ) rc = COND_XOR; - else if( !wcsnicmp( str->data, szEqv, len ) ) + else if( !wcsnicmp( str->data, L"EQV", len ) ) rc = COND_EQV; - else if( !wcsnicmp( str->data, szImp, len ) ) + else if( !wcsnicmp( str->data, L"IMP", len ) ) rc = COND_IMP; } - else if( (len == 2) && !wcsnicmp( str->data, szOr, len ) ) + else if( (len == 2) && !wcsnicmp( str->data, L"OR", len ) ) rc = COND_OR; } else if( COND_IsNumber( ch ) ) @@ -725,7 +718,7 @@ static int cond_lex( void *COND_lval, COND_input *cond ) do { rc = COND_GetOne( str, cond ); } while (rc == COND_SPACE); - + return rc; } diff --git a/dlls/msi/custom.c b/dlls/msi/custom.c index e2379424878..508d2edb5cf 100644 --- a/dlls/msi/custom.c +++ b/dlls/msi/custom.c @@ -175,37 +175,32 @@ static LPWSTR msi_get_deferred_action(LPCWSTR action, LPCWSTR actiondata, LPWSTR deferred; DWORD len; - static const WCHAR format[] = { - '[','%','s','<','=','>','%','s','<','=','>','%','s',']','%','s',0 - }; - if (!actiondata) return strdupW(action); len = lstrlenW(action) + lstrlenW(actiondata) + lstrlenW(usersid) + lstrlenW(prodcode) + - lstrlenW(format) - 7; + lstrlenW(L"[%s<=>%s<=>%s]%s") - 7; deferred = msi_alloc(len * sizeof(WCHAR)); - swprintf(deferred, len, format, actiondata, usersid, prodcode, action); + swprintf(deferred, len, L"[%s<=>%s<=>%s]%s", actiondata, usersid, prodcode, action); return deferred; } static void set_deferred_action_props( MSIPACKAGE *package, const WCHAR *deferred_data ) { - static const WCHAR sep[] = {'<','=','>',0}; const WCHAR *end, *beg = deferred_data + 1; - end = wcsstr(beg, sep); - msi_set_property( package->db, szCustomActionData, beg, end - beg ); + end = wcsstr(beg, L"<=>"); + msi_set_property( package->db, L"CustomActionData", beg, end - beg ); beg = end + 3; - end = wcsstr(beg, sep); - msi_set_property( package->db, szUserSID, beg, end - beg ); + end = wcsstr(beg, L"<=>"); + msi_set_property( package->db, L"UserSID", beg, end - beg ); beg = end + 3; end = wcschr(beg, ']'); - msi_set_property( package->db, szProductCode, beg, end - beg ); + msi_set_property( package->db, L"ProductCode", beg, end - beg ); } WCHAR *msi_create_temp_file( MSIDATABASE *db ) @@ -217,7 +212,7 @@ WCHAR *msi_create_temp_file( MSIDATABASE *db ) WCHAR tmp[MAX_PATH]; UINT len = ARRAY_SIZE( tmp ); - if (msi_get_property( db, szTempFolder, tmp, &len ) || + if (msi_get_property( db, L"TempFolder", tmp, &len ) || GetFileAttributesW( tmp ) != FILE_ATTRIBUTE_DIRECTORY) { GetTempPathW( MAX_PATH, tmp ); @@ -227,7 +222,7 @@ WCHAR *msi_create_temp_file( MSIDATABASE *db ) if ((ret = msi_alloc( (lstrlenW( db->tempfolder ) + 20) * sizeof(WCHAR) ))) { - if (!GetTempFileNameW( db->tempfolder, szMsi, 0, ret )) + if (!GetTempFileNameW( db->tempfolder, L"msi", 0, ret )) { msi_free( ret ); return NULL; @@ -239,10 +234,6 @@ WCHAR *msi_create_temp_file( MSIDATABASE *db ) static MSIBINARY *create_temp_binary(MSIPACKAGE *package, LPCWSTR source) { - static const WCHAR query[] = { - 'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ', - '`','B','i' ,'n','a','r','y','`',' ','W','H','E','R','E',' ', - '`','N','a','m','e','`',' ','=',' ','\'','%','s','\'',0}; MSIRECORD *row; MSIBINARY *binary = NULL; HANDLE file; @@ -253,7 +244,7 @@ static MSIBINARY *create_temp_binary(MSIPACKAGE *package, LPCWSTR source) if (!(tmpfile = msi_create_temp_file( package->db ))) return NULL; - if (!(row = MSI_QueryGetRecord( package->db, query, source ))) goto error; + if (!(row = MSI_QueryGetRecord( package->db, L"SELECT * FROM `Binary` WHERE `Name` = '%s'", source ))) goto error; if (!(binary = msi_alloc_zero( sizeof(MSIBINARY) ))) goto error; file = CreateFileW( tmpfile, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); @@ -473,9 +464,6 @@ static void handle_msi_break(LPCSTR target) DebugBreak(); } -static WCHAR ncalrpcW[] = {'n','c','a','l','r','p','c',0}; -static WCHAR endpoint_fmtW[] = {'m','s','i','%','x',0}; - #ifdef __i386__ /* wrapper for apps that don't declare the thread function correctly */ extern UINT custom_proc_wrapper( MsiCustomActionEntryPoint entry, MSIHANDLE hinst ); @@ -518,8 +506,8 @@ UINT CDECL __wine_msi_call_dll_function(DWORD client_pid, const GUID *guid) { WCHAR endpoint[12]; - swprintf(endpoint, ARRAY_SIZE(endpoint), endpoint_fmtW, client_pid); - status = RpcStringBindingComposeW(NULL, ncalrpcW, NULL, endpoint, NULL, &binding_str); + swprintf(endpoint, ARRAY_SIZE(endpoint), L"msi%x", client_pid); + status = RpcStringBindingComposeW(NULL, (WCHAR *)L"ncalrpc", NULL, endpoint, NULL, &binding_str); if (status != RPC_S_OK) { ERR("RpcStringBindingCompose failed: %#x\n", status); @@ -588,10 +576,6 @@ UINT CDECL __wine_msi_call_dll_function(DWORD client_pid, const GUID *guid) static DWORD custom_start_server(MSIPACKAGE *package, DWORD arch) { - static const WCHAR pipe_name[] = {'\\','\\','.','\\','p','i','p','e','\\','m','s','i','c','a','_','%','x','_','%','d',0}; - static const WCHAR msiexecW[] = {'\\','m','s','i','e','x','e','c','.','e','x','e',0}; - static const WCHAR argsW[] = {'%','s',' ','-','E','m','b','e','d','d','i','n','g',' ','%','d',0}; - WCHAR path[MAX_PATH], cmdline[MAX_PATH + 23]; PROCESS_INFORMATION pi = {0}; STARTUPINFOW si = {0}; @@ -604,7 +588,7 @@ static DWORD custom_start_server(MSIPACKAGE *package, DWORD arch) (arch == SCS_64BIT_BINARY && package->custom_server_64_process)) return ERROR_SUCCESS; - swprintf(buffer, ARRAY_SIZE(buffer), pipe_name, + swprintf(buffer, ARRAY_SIZE(buffer), L"\\\\.\\pipe\\msica_%x_%d", GetCurrentProcessId(), arch == SCS_32BIT_BINARY ? 32 : 64); pipe = CreateNamedPipeW(buffer, PIPE_ACCESS_DUPLEX, 0, 1, sizeof(DWORD64), sizeof(GUID), 0, NULL); @@ -615,11 +599,11 @@ static DWORD custom_start_server(MSIPACKAGE *package, DWORD arch) wow64 = FALSE; if ((sizeof(void *) == 8 || wow64) && arch == SCS_32BIT_BINARY) - GetSystemWow64DirectoryW(path, MAX_PATH - ARRAY_SIZE(msiexecW)); + GetSystemWow64DirectoryW(path, MAX_PATH - ARRAY_SIZE(L"\\msiexec.exe")); else - GetSystemDirectoryW(path, MAX_PATH - ARRAY_SIZE(msiexecW)); - lstrcatW(path, msiexecW); - swprintf(cmdline, ARRAY_SIZE(cmdline), argsW, path, GetCurrentProcessId()); + GetSystemDirectoryW(path, MAX_PATH - ARRAY_SIZE(L"\\msiexec.exe")); + lstrcatW(path, L"\\msiexec.exe"); + swprintf(cmdline, ARRAY_SIZE(cmdline), L"%s -Embedding %d", path, GetCurrentProcessId()); if (wow64 && arch == SCS_64BIT_BINARY) { @@ -744,8 +728,8 @@ static msi_custom_action_info *do_msidbCustomActionTypeDll( { WCHAR endpoint[12]; - swprintf(endpoint, ARRAY_SIZE(endpoint), endpoint_fmtW, GetCurrentProcessId()); - status = RpcServerUseProtseqEpW(ncalrpcW, RPC_C_PROTSEQ_MAX_REQS_DEFAULT, + swprintf(endpoint, ARRAY_SIZE(endpoint), L"msi%x", GetCurrentProcessId()); + status = RpcServerUseProtseqEpW((WCHAR *)L"ncalrpc", RPC_C_PROTSEQ_MAX_REQS_DEFAULT, endpoint, NULL); if (status != RPC_S_OK) { @@ -797,7 +781,6 @@ static UINT HANDLE_CustomType1( MSIPACKAGE *package, const WCHAR *source, const static HANDLE execute_command( const WCHAR *app, WCHAR *arg, const WCHAR *dir ) { - static const WCHAR dotexeW[] = {'.','e','x','e',0}; STARTUPINFOW si; PROCESS_INFORMATION info; WCHAR *exe = NULL, *cmd = NULL, *p; @@ -809,12 +792,12 @@ static HANDLE execute_command( const WCHAR *app, WCHAR *arg, const WCHAR *dir ) DWORD len_exe; if (!(exe = msi_alloc( MAX_PATH * sizeof(WCHAR) ))) return INVALID_HANDLE_VALUE; - len_exe = SearchPathW( NULL, app, dotexeW, MAX_PATH, exe, NULL ); + len_exe = SearchPathW( NULL, app, L".exe", MAX_PATH, exe, NULL ); if (len_exe >= MAX_PATH) { msi_free( exe ); if (!(exe = msi_alloc( len_exe * sizeof(WCHAR) ))) return INVALID_HANDLE_VALUE; - len_exe = SearchPathW( NULL, app, dotexeW, len_exe, exe, NULL ); + len_exe = SearchPathW( NULL, app, L".exe", len_exe, exe, NULL ); } if (!len_exe) { @@ -876,7 +859,7 @@ static UINT HANDLE_CustomType2( MSIPACKAGE *package, const WCHAR *source, const deformat_string( package, target, &arg ); TRACE("exe %s arg %s\n", debugstr_w(binary->tmpfile), debugstr_w(arg)); - handle = execute_command( binary->tmpfile, arg, szCRoot ); + handle = execute_command( binary->tmpfile, arg, L"C:\\" ); msi_free( arg ); if (handle == INVALID_HANDLE_VALUE) return ERROR_SUCCESS; return wait_process_handle( package, type, handle, action ); @@ -913,7 +896,7 @@ static UINT HANDLE_CustomType18( MSIPACKAGE *package, const WCHAR *source, const deformat_string( package, target, &arg ); TRACE("exe %s arg %s\n", debugstr_w(file->TargetPath), debugstr_w(arg)); - handle = execute_command( file->TargetPath, arg, szCRoot ); + handle = execute_command( file->TargetPath, arg, L"C:\\" ); msi_free( arg ); if (handle == INVALID_HANDLE_VALUE) return ERROR_SUCCESS; return wait_process_handle( package, type, handle, action ); @@ -922,19 +905,13 @@ static UINT HANDLE_CustomType18( MSIPACKAGE *package, const WCHAR *source, const static UINT HANDLE_CustomType19( MSIPACKAGE *package, const WCHAR *source, const WCHAR *target, INT type, const WCHAR *action ) { - static const WCHAR query[] = { - 'S','E','L','E','C','T',' ','`','M','e','s','s','a','g','e','`',' ', - 'F','R','O','M',' ','`','E','r','r','o','r','`',' ', - 'W','H','E','R','E',' ','`','E','r','r','o','r','`',' ','=',' ', - '%','s',0 - }; MSIRECORD *row = 0; LPWSTR deformated = NULL; deformat_string( package, target, &deformated ); /* first try treat the error as a number */ - row = MSI_QueryGetRecord( package->db, query, deformated ); + row = MSI_QueryGetRecord( package->db, L"SELECT `Message` FROM `Error` WHERE `Error` = '%s'", deformated ); if( row ) { LPCWSTR error = MSI_RecordGetString( row, 1 ); @@ -974,7 +951,7 @@ static UINT HANDLE_CustomType23( MSIPACKAGE *package, const WCHAR *source, const UINT len_dir, len_source = lstrlenW( source ); HANDLE handle; - if (!(dir = msi_dup_property( package->db, szOriginalDatabase ))) return ERROR_OUTOFMEMORY; + if (!(dir = msi_dup_property( package->db, L"OriginalDatabase" ))) return ERROR_OUTOFMEMORY; if (!(p = wcsrchr( dir, '\\' )) && !(p = wcsrchr( dir, '/' ))) { msi_free( dir ); @@ -1091,7 +1068,7 @@ static UINT HANDLE_CustomType50( MSIPACKAGE *package, const WCHAR *source, const deformat_string( package, target, &arg ); TRACE("exe %s arg %s\n", debugstr_w(exe), debugstr_w(arg)); - handle = execute_command( exe, arg, szCRoot ); + handle = execute_command( exe, arg, L"C:\\" ); msi_free( exe ); msi_free( arg ); if (handle == INVALID_HANDLE_VALUE) return ERROR_SUCCESS; @@ -1209,10 +1186,6 @@ static UINT HANDLE_CustomType37_38( MSIPACKAGE *package, const WCHAR *source, co static UINT HANDLE_CustomType5_6( MSIPACKAGE *package, const WCHAR *source, const WCHAR *target, INT type, const WCHAR *action ) { - static const WCHAR query[] = { - 'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ', - '`','B','i' ,'n','a','r','y','`',' ','W','H','E','R','E',' ', - '`','N','a','m','e','`',' ','=',' ','\'','%','s','\'',0}; MSIRECORD *row = NULL; msi_custom_action_info *info; CHAR *buffer = NULL; @@ -1222,7 +1195,7 @@ static UINT HANDLE_CustomType5_6( MSIPACKAGE *package, const WCHAR *source, cons TRACE("%s %s\n", debugstr_w(source), debugstr_w(target)); - row = MSI_QueryGetRecord(package->db, query, source); + row = MSI_QueryGetRecord(package->db, L"SELECT * FROM `Binary` WHERE `Name` = '%s'", source); if (!row) return ERROR_FUNCTION_FAILED; @@ -1354,8 +1327,8 @@ static BOOL action_type_matches_script( UINT type, UINT script ) static UINT defer_custom_action( MSIPACKAGE *package, const WCHAR *action, UINT type ) { WCHAR *actiondata = msi_dup_property( package->db, action ); - WCHAR *usersid = msi_dup_property( package->db, szUserSID ); - WCHAR *prodcode = msi_dup_property( package->db, szProductCode ); + WCHAR *usersid = msi_dup_property( package->db, L"UserSID" ); + WCHAR *prodcode = msi_dup_property( package->db, L"ProductCode" ); WCHAR *deferred = msi_get_deferred_action( action, actiondata, usersid, prodcode ); if (!deferred) @@ -1390,10 +1363,6 @@ static UINT defer_custom_action( MSIPACKAGE *package, const WCHAR *action, UINT UINT ACTION_CustomAction(MSIPACKAGE *package, const WCHAR *action) { - static const WCHAR query[] = { - 'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ', - '`','C','u','s','t','o','m','A','c','t','i','o','n','`',' ','W','H','E','R','E',' ', - '`','A','c','t','i' ,'o','n','`',' ','=',' ','\'','%','s','\'',0}; UINT rc = ERROR_SUCCESS; MSIRECORD *row; UINT type; @@ -1408,7 +1377,7 @@ UINT ACTION_CustomAction(MSIPACKAGE *package, const WCHAR *action) action = ptr + 1; } - row = MSI_QueryGetRecord( package->db, query, action ); + row = MSI_QueryGetRecord( package->db, L"SELECT * FROM `CustomAction` WHERE `Action` = '%s'", action ); if (!row) return ERROR_FUNCTION_NOT_CALLED; @@ -1449,9 +1418,9 @@ UINT ACTION_CustomAction(MSIPACKAGE *package, const WCHAR *action) if (deferred_data) set_deferred_action_props(package, deferred_data); else if (actiondata) - msi_set_property( package->db, szCustomActionData, actiondata, -1 ); + msi_set_property( package->db, L"CustomActionData", actiondata, -1 ); else - msi_set_property( package->db, szCustomActionData, szEmpty, -1 ); + msi_set_property( package->db, L"CustomActionData", L"", -1 ); msi_free(actiondata); } @@ -1516,7 +1485,7 @@ UINT ACTION_CustomAction(MSIPACKAGE *package, const WCHAR *action) if (!source) break; len = deformat_string( package, target, &deformated ); rc = msi_set_property( package->db, source, deformated, len ); - if (rc == ERROR_SUCCESS && !wcscmp( source, szSourceDir )) msi_reset_source_folders( package ); + if (rc == ERROR_SUCCESS && !wcscmp( source, L"SourceDir" )) msi_reset_source_folders( package ); msi_free( deformated ); break; case 53: /* JScript/VBScript text specified by a property value */ diff --git a/dlls/msi/database.c b/dlls/msi/database.c index f7c70aeead7..c84fd1f6440 100644 --- a/dlls/msi/database.c +++ b/dlls/msi/database.c @@ -103,7 +103,6 @@ static VOID MSI_CloseDatabase( MSIOBJECTHDR *arg ) static HRESULT db_initialize( IStorage *stg, const GUID *clsid ) { - static const WCHAR szTables[] = { '_','T','a','b','l','e','s',0 }; HRESULT hr; hr = IStorage_SetClass( stg, clsid ); @@ -114,7 +113,7 @@ static HRESULT db_initialize( IStorage *stg, const GUID *clsid ) } /* create the _Tables stream */ - hr = write_stream_data( stg, szTables, NULL, 0, TRUE ); + hr = write_stream_data( stg, L"_Tables", NULL, 0, TRUE ); if (FAILED( hr )) { WARN("failed to create _Tables stream 0x%08x\n", hr); @@ -257,7 +256,7 @@ UINT MSI_OpenDatabaseW(LPCWSTR szDBPath, LPCWSTR szPersist, MSIDATABASE **pdb) if (!wcschr( save_path, '\\' )) { GetCurrentDirectoryW( MAX_PATH, path ); - lstrcatW( path, szBackSlash ); + lstrcatW( path, L"\\" ); lstrcatW( path, save_path ); } else @@ -452,14 +451,12 @@ static LPWSTR msi_build_createsql_prelude(LPWSTR table) LPWSTR prelude; DWORD size; - static const WCHAR create_fmt[] = {'C','R','E','A','T','E',' ','T','A','B','L','E',' ','`','%','s','`',' ','(',' ',0}; - - size = ARRAY_SIZE(create_fmt) + lstrlenW(table) - 2; + size = ARRAY_SIZE(L"CREATE TABLE `%s` ( ") + lstrlenW(table) - 2; prelude = msi_alloc(size * sizeof(WCHAR)); if (!prelude) return NULL; - swprintf(prelude, size, create_fmt, table); + swprintf(prelude, size, L"CREATE TABLE `%s` ( ", table); return prelude; } @@ -471,15 +468,6 @@ static LPWSTR msi_build_createsql_columns(LPWSTR *columns_data, LPWSTR *types, D WCHAR expanded[128], *ptr; WCHAR size[10], comma[2], extra[30]; - static const WCHAR column_fmt[] = {'`','%','s','`',' ','%','s','%','s','%','s','%','s',' ',0}; - static const WCHAR size_fmt[] = {'(','%','s',')',0}; - static const WCHAR type_char[] = {'C','H','A','R',0}; - static const WCHAR type_int[] = {'I','N','T',0}; - static const WCHAR type_long[] = {'L','O','N','G',0}; - static const WCHAR type_object[] = {'O','B','J','E','C','T',0}; - static const WCHAR type_notnull[] = {' ','N','O','T',' ','N','U','L','L',0}; - static const WCHAR localizable[] = {' ','L','O','C','A','L','I','Z','A','B','L','E',0}; - columns = msi_alloc_zero(sql_size * sizeof(WCHAR)); if (!columns) return NULL; @@ -501,28 +489,28 @@ static LPWSTR msi_build_createsql_columns(LPWSTR *columns_data, LPWSTR *types, D switch (types[i][0]) { case 'l': - lstrcpyW(extra, type_notnull); + lstrcpyW(extra, L" NOT NULL"); /* fall through */ case 'L': - lstrcatW(extra, localizable); - type = type_char; - swprintf(size, ARRAY_SIZE(size), size_fmt, ptr); + lstrcatW(extra, L" LOCALIZABLE"); + type = L"CHAR"; + swprintf(size, ARRAY_SIZE(size), L"(%s)", ptr); break; case 's': - lstrcpyW(extra, type_notnull); + lstrcpyW(extra, L" NOT NULL"); /* fall through */ case 'S': - type = type_char; - swprintf(size, ARRAY_SIZE(size), size_fmt, ptr); + type = L"CHAR"; + swprintf(size, ARRAY_SIZE(size), L"(%s)", ptr); break; case 'i': - lstrcpyW(extra, type_notnull); + lstrcpyW(extra, L" NOT NULL"); /* fall through */ case 'I': if (len <= 2) - type = type_int; + type = L"INT"; else if (len == 4) - type = type_long; + type = L"LONG"; else { WARN("invalid int width %u\n", len); @@ -531,10 +519,10 @@ static LPWSTR msi_build_createsql_columns(LPWSTR *columns_data, LPWSTR *types, D } break; case 'v': - lstrcpyW(extra, type_notnull); + lstrcpyW(extra, L" NOT NULL"); /* fall through */ case 'V': - type = type_object; + type = L"OBJECT"; break; default: ERR("Unknown type: %c\n", types[i][0]); @@ -542,7 +530,7 @@ static LPWSTR msi_build_createsql_columns(LPWSTR *columns_data, LPWSTR *types, D return NULL; } - swprintf(expanded, ARRAY_SIZE(expanded), column_fmt, columns_data[i], type, size, extra, comma); + swprintf(expanded, ARRAY_SIZE(expanded), L"`%s` %s%s%s%s ", columns_data[i], type, size, extra, comma); sql_size += lstrlenW(expanded); p = msi_realloc(columns, sql_size * sizeof(WCHAR)); @@ -564,11 +552,8 @@ static LPWSTR msi_build_createsql_postlude(LPWSTR *primary_keys, DWORD num_keys) LPWSTR postlude, keys, ptr; DWORD size, i; - static const WCHAR key_fmt[] = {'`','%','s','`',',',' ',0}; - static const WCHAR postlude_fmt[] = {'P','R','I','M','A','R','Y',' ','K','E','Y',' ','%','s',')',0}; - for (i = 0, size = 1; i < num_keys; i++) - size += lstrlenW(key_fmt) + lstrlenW(primary_keys[i]) - 2; + size += lstrlenW(L"`%s`, ") + lstrlenW(primary_keys[i]) - 2; keys = msi_alloc(size * sizeof(WCHAR)); if (!keys) @@ -576,18 +561,18 @@ static LPWSTR msi_build_createsql_postlude(LPWSTR *primary_keys, DWORD num_keys) for (i = 0, ptr = keys; i < num_keys; i++) { - ptr += swprintf(ptr, size - (ptr - keys), key_fmt, primary_keys[i]); + ptr += swprintf(ptr, size - (ptr - keys), L"`%s`, ", primary_keys[i]); } /* remove final ', ' */ *(ptr - 2) = '\0'; - size = lstrlenW(postlude_fmt) + size - 1; + size = lstrlenW(L"PRIMARY KEY %s)") + size - 1; postlude = msi_alloc(size * sizeof(WCHAR)); if (!postlude) goto done; - swprintf(postlude, size, postlude_fmt, keys); + swprintf(postlude, size, L"PRIMARY KEY %s)", keys); done: msi_free(keys); @@ -712,12 +697,7 @@ static UINT msi_add_records_to_table(MSIDATABASE *db, LPWSTR *columns, LPWSTR *t MSIQUERY *view; MSIRECORD *rec; - static const WCHAR select[] = { - 'S','E','L','E','C','T',' ','*',' ', - 'F','R','O','M',' ','`','%','s','`',0 - }; - - r = MSI_OpenQuery(db, &view, select, labels[0]); + r = MSI_OpenQuery(db, &view, L"SELECT * FROM `%s`", labels[0]); if (r != ERROR_SUCCESS) return r; @@ -753,31 +733,21 @@ done: static UINT MSI_DatabaseImport(MSIDATABASE *db, LPCWSTR folder, LPCWSTR file) { UINT r; - DWORD len, i; - DWORD num_labels, num_types; - DWORD num_columns, num_records = 0; - LPWSTR *columns, *types, *labels; - LPWSTR path, ptr, data; - LPWSTR **records = NULL; - LPWSTR **temp_records; - - static const WCHAR suminfo[] = - {'_','S','u','m','m','a','r','y','I','n','f','o','r','m','a','t','i','o','n',0}; - static const WCHAR forcecodepage[] = - {'_','F','o','r','c','e','C','o','d','e','p','a','g','e',0}; + DWORD len, i, num_labels, num_types, num_columns, num_records = 0; + WCHAR **columns, **types, **labels, *path, *ptr, *data, ***records = NULL, ***temp_records; TRACE("%p %s %s\n", db, debugstr_w(folder), debugstr_w(file) ); - if( folder == NULL || file == NULL ) + if (!folder || !file) return ERROR_INVALID_PARAMETER; - len = lstrlenW(folder) + lstrlenW(szBackSlash) + lstrlenW(file) + 1; + len = lstrlenW(folder) + lstrlenW(L"\\") + lstrlenW(file) + 1; path = msi_alloc( len * sizeof(WCHAR) ); if (!path) return ERROR_OUTOFMEMORY; lstrcpyW( path, folder ); - lstrcatW( path, szBackSlash ); + lstrcatW( path, L"\\" ); lstrcatW( path, file ); data = msi_read_text_archive( path, &len ); @@ -793,7 +763,7 @@ static UINT MSI_DatabaseImport(MSIDATABASE *db, LPCWSTR folder, LPCWSTR file) msi_parse_line( &ptr, &labels, &num_labels, &len ); if (num_columns == 1 && !columns[0][0] && num_labels == 1 && !labels[0][0] && - num_types == 2 && !wcscmp( types[1], forcecodepage )) + num_types == 2 && !wcscmp( types[1], L"_ForceCodepage" )) { r = msi_set_string_table_codepage( db->strings, wcstol( types[0], NULL, 10 ) ); goto done; @@ -805,7 +775,7 @@ static UINT MSI_DatabaseImport(MSIDATABASE *db, LPCWSTR folder, LPCWSTR file) goto done; } - records = msi_alloc(sizeof(LPWSTR *)); + records = msi_alloc(sizeof(WCHAR **)); if (!records) { r = ERROR_OUTOFMEMORY; @@ -818,7 +788,7 @@ static UINT MSI_DatabaseImport(MSIDATABASE *db, LPCWSTR folder, LPCWSTR file) msi_parse_line( &ptr, &records[num_records], NULL, &len ); num_records++; - temp_records = msi_realloc(records, (num_records + 1) * sizeof(LPWSTR *)); + temp_records = msi_realloc(records, (num_records + 1) * sizeof(WCHAR **)); if (!temp_records) { r = ERROR_OUTOFMEMORY; @@ -827,7 +797,7 @@ static UINT MSI_DatabaseImport(MSIDATABASE *db, LPCWSTR folder, LPCWSTR file) records = temp_records; } - if (!wcscmp(labels[0], suminfo)) + if (!wcscmp(labels[0], L"_SummaryInformation")) { r = msi_add_suminfo( db, records, num_records, num_columns ); if (r != ERROR_SUCCESS) @@ -862,7 +832,6 @@ done: msi_free(records[i]); msi_free(records); - return r; } @@ -957,7 +926,6 @@ static UINT msi_export_field( HANDLE handle, MSIRECORD *row, UINT field ) static UINT msi_export_stream( const WCHAR *folder, const WCHAR *table, MSIRECORD *row, UINT field, UINT start ) { - static const WCHAR fmt[] = {'%','s','\\','%','s',0}; WCHAR stream[MAX_STREAM_NAME_LEN + 1], *path; DWORD sz, read_size, write_size; char buffer[1024]; @@ -969,11 +937,11 @@ static UINT msi_export_stream( const WCHAR *folder, const WCHAR *table, MSIRECOR if (r != ERROR_SUCCESS) return r; - len = sz + lstrlenW( folder ) + lstrlenW( table ) + ARRAY_SIZE( fmt ) + 1; + len = sz + lstrlenW( folder ) + lstrlenW( table ) + ARRAY_SIZE( L"%s\\%s" ) + 1; if (!(path = msi_alloc( len * sizeof(WCHAR) ))) return ERROR_OUTOFMEMORY; - len = swprintf( path, len, fmt, folder, table ); + len = swprintf( path, len, L"%s\\%s", folder, table ); if (!CreateDirectoryW( path, NULL ) && GetLastError() != ERROR_ALREADY_EXISTS) { msi_free( path ); @@ -1078,22 +1046,16 @@ static UINT msi_export_summaryinformation( MSIDATABASE *db, HANDLE handle ) static UINT MSI_DatabaseExport( MSIDATABASE *db, LPCWSTR table, LPCWSTR folder, LPCWSTR file ) { - static const WCHAR query[] = { - 's','e','l','e','c','t',' ','*',' ','f','r','o','m',' ','%','s',0 }; - static const WCHAR forcecodepage[] = { - '_','F','o','r','c','e','C','o','d','e','p','a','g','e',0 }; - static const WCHAR summaryinformation[] = { - '_','S','u','m','m','a','r','y','I','n','f','o','r','m','a','t','i','o','n',0 }; MSIRECORD *rec = NULL; MSIQUERY *view = NULL; - LPWSTR filename; + WCHAR *filename; HANDLE handle; UINT len, r; TRACE("%p %s %s %s\n", db, debugstr_w(table), debugstr_w(folder), debugstr_w(file) ); - if( folder == NULL || file == NULL ) + if (!folder || !file) return ERROR_INVALID_PARAMETER; len = lstrlenW(folder) + lstrlenW(file) + 2; @@ -1102,7 +1064,7 @@ static UINT MSI_DatabaseExport( MSIDATABASE *db, LPCWSTR table, LPCWSTR folder, return ERROR_OUTOFMEMORY; lstrcpyW( filename, folder ); - lstrcatW( filename, szBackSlash ); + lstrcatW( filename, L"\\" ); lstrcatW( filename, file ); handle = CreateFileW( filename, GENERIC_READ | GENERIC_WRITE, 0, @@ -1111,20 +1073,20 @@ static UINT MSI_DatabaseExport( MSIDATABASE *db, LPCWSTR table, LPCWSTR folder, if (handle == INVALID_HANDLE_VALUE) return ERROR_FUNCTION_FAILED; - if (!wcscmp( table, forcecodepage )) + if (!wcscmp( table, L"_ForceCodepage" )) { UINT codepage = msi_get_string_table_codepage( db->strings ); r = msi_export_forcecodepage( handle, codepage ); goto done; } - if (!wcscmp( table, summaryinformation )) + if (!wcscmp( table, L"_SummaryInformation" )) { r = msi_export_summaryinformation( db, handle ); goto done; } - r = MSI_OpenQuery( db, &view, query, table ); + r = MSI_OpenQuery( db, &view, L"SELECT * FROM %s", table ); if (r == ERROR_SUCCESS) { struct row_export_info row_export_info = { handle, folder, table }; @@ -1424,20 +1386,19 @@ static LPWSTR get_key_value(MSIQUERY *view, LPCWSTR key, MSIRECORD *rec) if (MSI_RecordGetString(rec, i)) /* check record field is a string */ { /* quote string record fields */ - static const WCHAR szQuote[] = {'\'', 0}; sz += 2; - val = msi_alloc(sz*sizeof(WCHAR)); + val = msi_alloc(sz * sizeof(WCHAR)); if (!val) return NULL; - lstrcpyW(val, szQuote); - r = MSI_RecordGetStringW(rec, i, val+1, &sz); - lstrcpyW(val+1+sz, szQuote); + lstrcpyW(val, L"'"); + r = MSI_RecordGetStringW(rec, i, val + 1, &sz); + lstrcpyW(val + 1 + sz, L"'"); } else { /* do not quote integer record fields */ - val = msi_alloc(sz*sizeof(WCHAR)); + val = msi_alloc(sz * sizeof(WCHAR)); if (!val) return NULL; @@ -1463,14 +1424,6 @@ static LPWSTR create_diff_row_query(MSIDATABASE *merge, MSIQUERY *view, MSIRECORD *keys; UINT r, i, count; - static const WCHAR keyset[] = { - '`','%','s','`',' ','=',' ','%','s',' ','A','N','D',' ',0}; - static const WCHAR lastkeyset[] = { - '`','%','s','`',' ','=',' ','%','s',' ',0}; - static const WCHAR fmt[] = {'S','E','L','E','C','T',' ','*',' ', - 'F','R','O','M',' ','`','%','s','`',' ', - 'W','H','E','R','E',' ','%','s',0}; - r = MSI_DatabaseGetPrimaryKeys(merge, table, &keys); if (r != ERROR_SUCCESS) return NULL; @@ -1487,9 +1440,9 @@ static LPWSTR create_diff_row_query(MSIDATABASE *merge, MSIQUERY *view, val = get_key_value(view, key, rec); if (i == count) - setptr = lastkeyset; + setptr = L"`%s` = %s "; else - setptr = keyset; + setptr = L"`%s` = %s AND "; oldsize = size; size += lstrlenW(setptr) + lstrlenW(key) + lstrlenW(val) - 4; @@ -1504,12 +1457,12 @@ static LPWSTR create_diff_row_query(MSIDATABASE *merge, MSIQUERY *view, msi_free(val); } - size = lstrlenW(fmt) + lstrlenW(table) + lstrlenW(clause) + 1; + size = lstrlenW(L"SELECT * FROM `%s` WHERE %s") + lstrlenW(table) + lstrlenW(clause) + 1; query = msi_alloc(size * sizeof(WCHAR)); if (!query) goto done; - swprintf(query, size, fmt, table, clause); + swprintf(query, size, L"SELECT * FROM `%s` WHERE %s", table, clause); done: msi_free(clause); @@ -1717,9 +1670,6 @@ static UINT msi_get_merge_table (MSIDATABASE *db, LPCWSTR name, MERGETABLE **pta MERGETABLE *table; MSIQUERY *mergeview = NULL; - static const WCHAR query[] = {'S','E','L','E','C','T',' ','*',' ', - 'F','R','O','M',' ','`','%','s','`',0}; - table = msi_alloc_zero(sizeof(MERGETABLE)); if (!table) { @@ -1731,7 +1681,7 @@ static UINT msi_get_merge_table (MSIDATABASE *db, LPCWSTR name, MERGETABLE **pta if (r != ERROR_SUCCESS) goto err; - r = MSI_OpenQuery(db, &mergeview, query, name); + r = MSI_OpenQuery(db, &mergeview, L"SELECT * FROM `%s`", name); if (r != ERROR_SUCCESS) goto err; @@ -1768,18 +1718,15 @@ static UINT merge_diff_tables(MSIRECORD *rec, LPVOID param) LPCWSTR name; UINT r; - static const WCHAR query[] = {'S','E','L','E','C','T',' ','*',' ', - 'F','R','O','M',' ','`','%','s','`',0}; - name = MSI_RecordGetString(rec, 1); - r = MSI_OpenQuery(data->merge, &mergeview, query, name); + r = MSI_OpenQuery(data->merge, &mergeview, L"SELECT * FROM `%s`", name); if (r != ERROR_SUCCESS) goto done; if (TABLE_Exists(data->db, name)) { - r = MSI_OpenQuery(data->db, &dbview, query, name); + r = MSI_OpenQuery(data->db, &dbview, L"SELECT * FROM `%s`", name); if (r != ERROR_SUCCESS) goto done; @@ -1816,14 +1763,11 @@ done: static UINT gather_merge_data(MSIDATABASE *db, MSIDATABASE *merge, struct list *tabledata) { - static const WCHAR query[] = { - 'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ', - '`','_','T','a','b','l','e','s','`',0}; MSIQUERY *view; MERGEDATA data; UINT r; - r = MSI_DatabaseOpenViewW(merge, query, &view); + r = MSI_DatabaseOpenViewW(merge, L"SELECT * FROM `_Tables`", &view); if (r != ERROR_SUCCESS) return r; @@ -1871,24 +1815,10 @@ static UINT update_merge_errors(MSIDATABASE *db, LPCWSTR error, UINT r; MSIQUERY *view; - static const WCHAR create[] = { - 'C','R','E','A','T','E',' ','T','A','B','L','E',' ', - '`','%','s','`',' ','(','`','T','a','b','l','e','`',' ', - 'C','H','A','R','(','2','5','5',')',' ','N','O','T',' ', - 'N','U','L','L',',',' ','`','N','u','m','R','o','w','M','e','r','g','e', - 'C','o','n','f','l','i','c','t','s','`',' ','S','H','O','R','T',' ', - 'N','O','T',' ','N','U','L','L',' ','P','R','I','M','A','R','Y',' ', - 'K','E','Y',' ','`','T','a','b','l','e','`',')',0}; - static const WCHAR insert[] = { - 'I','N','S','E','R','T',' ','I','N','T','O',' ', - '`','%','s','`',' ','(','`','T','a','b','l','e','`',',',' ', - '`','N','u','m','R','o','w','M','e','r','g','e', - 'C','o','n','f','l','i','c','t','s','`',')',' ','V','A','L','U','E','S', - ' ','(','\'','%','s','\'',',',' ','%','d',')',0}; - if (!TABLE_Exists(db, error)) { - r = MSI_OpenQuery(db, &view, create, error); + r = MSI_OpenQuery(db, &view, L"CREATE TABLE `%s` (`Table` CHAR(255) NOT NULL, `NumRowMergeConflicts` SHORT " + "NOT NULL PRIMARY KEY `Table`)" , error); if (r != ERROR_SUCCESS) return r; @@ -1898,7 +1828,8 @@ static UINT update_merge_errors(MSIDATABASE *db, LPCWSTR error, return r; } - r = MSI_OpenQuery(db, &view, insert, error, table, numconflicts); + r = MSI_OpenQuery(db, &view, L"INSERT INTO `%s` (`Table`, `NumRowMergeConflicts`) VALUES ('%s', %d)", error, + table, numconflicts); if (r != ERROR_SUCCESS) return r; @@ -1907,8 +1838,7 @@ static UINT update_merge_errors(MSIDATABASE *db, LPCWSTR error, return r; } -UINT WINAPI MsiDatabaseMergeW(MSIHANDLE hDatabase, MSIHANDLE hDatabaseMerge, - LPCWSTR szTableName) +UINT WINAPI MsiDatabaseMergeW(MSIHANDLE hDatabase, MSIHANDLE hDatabaseMerge, LPCWSTR szTableName) { struct list tabledata = LIST_INIT(tabledata); struct list *item, *cursor; @@ -1917,8 +1847,7 @@ UINT WINAPI MsiDatabaseMergeW(MSIHANDLE hDatabase, MSIHANDLE hDatabaseMerge, BOOL conflicts; UINT r; - TRACE("(%d, %d, %s)\n", hDatabase, hDatabaseMerge, - debugstr_w(szTableName)); + TRACE("(%d, %d, %s)\n", hDatabase, hDatabaseMerge, debugstr_w(szTableName)); if (szTableName && !*szTableName) return ERROR_INVALID_TABLE; diff --git a/dlls/msi/delete.c b/dlls/msi/delete.c index 81bd9d7db2f..c101b56c231 100644 --- a/dlls/msi/delete.c +++ b/dlls/msi/delete.c @@ -196,7 +196,7 @@ UINT DELETE_CreateView( MSIDATABASE *db, MSIVIEW **view, MSIVIEW *table ) dv = msi_alloc_zero( sizeof *dv ); if( !dv ) return ERROR_FUNCTION_FAILED; - + /* fill the structure */ dv->view.ops = &delete_ops; dv->db = db; diff --git a/dlls/msi/distinct.c b/dlls/msi/distinct.c index e102adb3de2..b97b8c90efc 100644 --- a/dlls/msi/distinct.c +++ b/dlls/msi/distinct.c @@ -287,7 +287,7 @@ UINT DISTINCT_CreateView( MSIDATABASE *db, MSIVIEW **view, MSIVIEW *table ) dv = msi_alloc_zero( sizeof *dv ); if( !dv ) return ERROR_FUNCTION_FAILED; - + /* fill the structure */ dv->view.ops = &distinct_ops; msiobj_addref( &db->hdr ); diff --git a/dlls/msi/files.c b/dlls/msi/files.c index aba714b317d..61694ee19ae 100644 --- a/dlls/msi/files.c +++ b/dlls/msi/files.c @@ -160,7 +160,6 @@ DWORD msi_get_file_version_info( MSIPACKAGE *package, const WCHAR *path, DWORD b VS_FIXEDFILEINFO *msi_get_disk_file_version( MSIPACKAGE *package, const WCHAR *filename ) { - static const WCHAR name[] = {'\\',0}; VS_FIXEDFILEINFO *ptr, *ret; DWORD version_size, size; void *version; @@ -170,7 +169,7 @@ VS_FIXEDFILEINFO *msi_get_disk_file_version( MSIPACKAGE *package, const WCHAR *f msi_get_file_version_info( package, filename, version_size, version ); - if (!VerQueryValueW( version, name, (void **)&ptr, &size )) + if (!VerQueryValueW( version, L"\\", (void **)&ptr, &size )) { msi_free( version ); return NULL; @@ -267,7 +266,7 @@ static BOOL is_obsoleted_by_patch( MSIPACKAGE *package, MSIFILE *file ) { if (!list_empty( &package->patches ) && file->disk_id < MSI_INITIAL_MEDIA_TRANSFORM_DISKID) { - if (!msi_get_property_int( package->db, szInstalled, 0 )) return FALSE; + if (!msi_get_property_int( package->db, L"Installed", 0 )) return FALSE; return TRUE; } if (is_registered_patch_media( package, file->disk_id )) return TRUE; @@ -442,7 +441,7 @@ static UINT copy_install_file(MSIPACKAGE *package, MSIFILE *file, LPWSTR source) msi_free( pathW ); return ERROR_OUTOFMEMORY; } - if (!GetTempFileNameW( pathW, szMsi, 0, tmpfileW )) tmpfileW[0] = 0; + if (!GetTempFileNameW( pathW, L"msi", 0, tmpfileW )) tmpfileW[0] = 0; msi_free( pathW ); if (msi_copy_file( package, source, tmpfileW, FALSE ) && @@ -548,7 +547,7 @@ WCHAR *msi_resolve_file_source( MSIPACKAGE *package, MSIFILE *file ) /* * ACTION_InstallFiles() - * + * * For efficiency, this is done in two passes: * 1) Correct all the TargetPaths and determine what files are to be installed. * 2) Extract Cabinets and copy files. @@ -562,7 +561,7 @@ UINT ACTION_InstallFiles(MSIPACKAGE *package) msi_set_sourcedir_props(package, FALSE); if (package->script == SCRIPT_NONE) - return msi_schedule_action(package, SCRIPT_INSTALL, szInstallFiles); + return msi_schedule_action(package, SCRIPT_INSTALL, L"InstallFiles"); schedule_install_files(package); mi = msi_alloc_zero( sizeof(MSIMEDIAINFO) ); @@ -571,7 +570,7 @@ UINT ACTION_InstallFiles(MSIPACKAGE *package) { BOOL is_global_assembly = msi_is_global_assembly( file->Component ); - msi_file_update_ui( package, file, szInstallFiles ); + msi_file_update_ui( package, file, L"InstallFiles" ); rc = msi_load_media_info( package, file->Sequence, mi ); if (rc != ERROR_SUCCESS) @@ -583,7 +582,7 @@ UINT ACTION_InstallFiles(MSIPACKAGE *package) if (file->state != msifs_hashmatch && file->state != msifs_skipped && - (file->state != msifs_present || !msi_get_property_int( package->db, szInstalled, 0 )) && + (file->state != msifs_present || !msi_get_property_int( package->db, L"Installed", 0 )) && (rc = ready_media( package, file->IsCompressed, mi ))) { ERR("Failed to ready media for %s\n", debugstr_w(file->File)); @@ -790,7 +789,7 @@ UINT ACTION_PatchFiles( MSIPACKAGE *package ) TRACE("%p\n", package); if (package->script == SCRIPT_NONE) - return msi_schedule_action(package, SCRIPT_INSTALL, szPatchFiles); + return msi_schedule_action(package, SCRIPT_INSTALL, L"PatchFiles"); mi = msi_alloc_zero( sizeof(MSIMEDIAINFO) ); @@ -1129,7 +1128,7 @@ static UINT ITERATE_MoveFiles( MSIRECORD *rec, LPVOID param ) lstrcpyW(source, sourcedir); if (source[lstrlenW(source) - 1] != '\\') - lstrcatW(source, szBackSlash); + lstrcatW(source, L"\\"); lstrcatW(source, sourcename); } @@ -1167,7 +1166,7 @@ static UINT ITERATE_MoveFiles( MSIRECORD *rec, LPVOID param ) lstrcpyW(dest, destdir); if (dest[lstrlenW(dest) - 1] != '\\') - lstrcatW(dest, szBackSlash); + lstrcatW(dest, L"\\"); if (destname) lstrcatW(dest, destname); @@ -1205,16 +1204,13 @@ done: UINT ACTION_MoveFiles( MSIPACKAGE *package ) { - static const WCHAR query[] = { - 'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ', - '`','M','o','v','e','F','i','l','e','`',0}; MSIQUERY *view; UINT rc; if (package->script == SCRIPT_NONE) - return msi_schedule_action(package, SCRIPT_INSTALL, szMoveFiles); + return msi_schedule_action(package, SCRIPT_INSTALL, L"MoveFiles"); - rc = MSI_DatabaseOpenViewW(package->db, query, &view); + rc = MSI_DatabaseOpenViewW(package->db, L"SELECT * FROM `MoveFile`", &view); if (rc != ERROR_SUCCESS) return ERROR_SUCCESS; @@ -1338,16 +1334,13 @@ static UINT ITERATE_DuplicateFiles(MSIRECORD *row, LPVOID param) UINT ACTION_DuplicateFiles(MSIPACKAGE *package) { - static const WCHAR query[] = { - 'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ', - '`','D','u','p','l','i','c','a','t','e','F','i','l','e','`',0}; MSIQUERY *view; UINT rc; if (package->script == SCRIPT_NONE) - return msi_schedule_action(package, SCRIPT_INSTALL, szDuplicateFiles); + return msi_schedule_action(package, SCRIPT_INSTALL, L"DuplicateFiles"); - rc = MSI_DatabaseOpenViewW(package->db, query, &view); + rc = MSI_DatabaseOpenViewW(package->db, L"SELECT * FROM `DuplicateFile`", &view); if (rc != ERROR_SUCCESS) return ERROR_SUCCESS; @@ -1416,16 +1409,13 @@ static UINT ITERATE_RemoveDuplicateFiles( MSIRECORD *row, LPVOID param ) UINT ACTION_RemoveDuplicateFiles( MSIPACKAGE *package ) { - static const WCHAR query[] = { - 'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ', - '`','D','u','p','l','i','c','a','t','e','F','i','l','e','`',0}; MSIQUERY *view; UINT rc; if (package->script == SCRIPT_NONE) - return msi_schedule_action(package, SCRIPT_INSTALL, szRemoveDuplicateFiles); + return msi_schedule_action(package, SCRIPT_INSTALL, L"RemoveDuplicateFiles"); - rc = MSI_DatabaseOpenViewW( package->db, query, &view ); + rc = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM `DuplicateFile`", &view ); if (rc != ERROR_SUCCESS) return ERROR_SUCCESS; @@ -1557,18 +1547,15 @@ static void remove_folder( MSIFOLDER *folder ) UINT ACTION_RemoveFiles( MSIPACKAGE *package ) { - static const WCHAR query[] = { - 'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ', - '`','R','e','m','o','v','e','F','i','l','e','`',0}; MSIQUERY *view; MSICOMPONENT *comp; MSIFILE *file; UINT r; if (package->script == SCRIPT_NONE) - return msi_schedule_action(package, SCRIPT_INSTALL, szRemoveFiles); + return msi_schedule_action(package, SCRIPT_INSTALL, L"RemoveFiles"); - r = MSI_DatabaseOpenViewW(package->db, query, &view); + r = MSI_DatabaseOpenViewW(package->db, L"SELECT * FROM `RemoveFile`", &view); if (r == ERROR_SUCCESS) { r = MSI_IterateRecords(view, NULL, ITERATE_RemoveFiles, package); @@ -1583,7 +1570,7 @@ UINT ACTION_RemoveFiles( MSIPACKAGE *package ) VS_FIXEDFILEINFO *ver; comp = file->Component; - msi_file_update_ui( package, file, szRemoveFiles ); + msi_file_update_ui( package, file, L"RemoveFiles" ); comp->Action = msi_get_component_action( package, comp ); if (comp->Action != INSTALLSTATE_ABSENT || comp->Installed == INSTALLSTATE_SOURCE) diff --git a/dlls/msi/font.c b/dlls/msi/font.c index f26d3fd99c3..78d384b1654 100644 --- a/dlls/msi/font.c +++ b/dlls/msi/font.c @@ -66,19 +66,6 @@ typedef struct _tagTT_NAME_RECORD { #define SWAPWORD(x) MAKEWORD(HIBYTE(x), LOBYTE(x)) #define SWAPLONG(x) MAKELONG(SWAPWORD(HIWORD(x)), SWAPWORD(LOWORD(x))) -static const WCHAR regfont1[] = - {'S','o','f','t','w','a','r','e','\\', - 'M','i','c','r','o','s','o','f','t','\\', - 'W','i','n','d','o','w','s',' ','N','T','\\', - 'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\', - 'F','o','n','t','s',0}; -static const WCHAR regfont2[] = - {'S','o','f','t','w','a','r','e','\\', - 'M','i','c','r','o','s','o','f','t','\\', - 'W','i','n','d','o','w','s','\\', - 'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\', - 'F','o','n','t','s',0}; - /* * Code based off of code located here * http://www.codeproject.com/gdi/fontnamefromfile.asp @@ -178,7 +165,6 @@ end: static WCHAR *font_name_from_file( MSIPACKAGE *package, const WCHAR *filename ) { - static const WCHAR truetypeW[] = {' ','(','T','r','u','e','T','y','p','e',')',0}; WCHAR *name, *ret = NULL; if ((name = load_ttf_name_id( package, filename, NAME_ID_FULL_FONT_NAME ))) @@ -189,9 +175,9 @@ static WCHAR *font_name_from_file( MSIPACKAGE *package, const WCHAR *filename ) msi_free( name ); return NULL; } - ret = msi_alloc( (lstrlenW( name ) + lstrlenW( truetypeW ) + 1 ) * sizeof(WCHAR) ); + ret = msi_alloc( (lstrlenW( name ) + lstrlenW( L" (TrueType)" ) + 1 ) * sizeof(WCHAR) ); lstrcpyW( ret, name ); - lstrcatW( ret, truetypeW ); + lstrcatW( ret, L" (TrueType)" ); msi_free( name ); } return ret; @@ -199,7 +185,6 @@ static WCHAR *font_name_from_file( MSIPACKAGE *package, const WCHAR *filename ) WCHAR *msi_get_font_file_version( MSIPACKAGE *package, const WCHAR *filename ) { - static const WCHAR fmtW[] = {'%','u','.','%','u','.','0','.','0',0}; WCHAR *version, *p, *q, *ret = NULL; if ((version = load_ttf_name_id( package, filename, NAME_ID_VERSION ))) @@ -216,9 +201,9 @@ WCHAR *msi_get_font_file_version( MSIPACKAGE *package, const WCHAR *filename ) if (!*q || *q == ' ') minor = wcstol( p, NULL, 10 ); else major = 0; } - len = lstrlenW( fmtW ) + 20; + len = lstrlenW( L"%u.%u.0.0" ) + 20; ret = msi_alloc( len * sizeof(WCHAR) ); - swprintf( ret, len, fmtW, major, minor ); + swprintf( ret, len, L"%u.%u.0.0", major, minor ); msi_free( version ); } return ret; @@ -255,8 +240,8 @@ static UINT ITERATE_RegisterFonts(MSIRECORD *row, LPVOID param) return ERROR_SUCCESS; } - RegCreateKeyW(HKEY_LOCAL_MACHINE,regfont1,&hkey1); - RegCreateKeyW(HKEY_LOCAL_MACHINE,regfont2,&hkey2); + RegCreateKeyW( HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts" ,&hkey1 ); + RegCreateKeyW( HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows\\CurrentVersion\\Fonts", &hkey2 ); if (MSI_RecordIsNull(row,2)) name = font_name_from_file( package, file->TargetPath ); @@ -290,15 +275,13 @@ static UINT ITERATE_RegisterFonts(MSIRECORD *row, LPVOID param) UINT ACTION_RegisterFonts(MSIPACKAGE *package) { - static const WCHAR query[] = { - 'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ','`','F','o','n','t','`',0}; MSIQUERY *view; UINT rc; if (package->script == SCRIPT_NONE) - return msi_schedule_action(package, SCRIPT_INSTALL, szRegisterFonts); + return msi_schedule_action(package, SCRIPT_INSTALL, L"RegisterFonts"); - rc = MSI_DatabaseOpenViewW(package->db, query, &view); + rc = MSI_DatabaseOpenViewW(package->db, L"SELECT * FROM `Font`", &view); if (rc != ERROR_SUCCESS) return ERROR_SUCCESS; @@ -338,8 +321,8 @@ static UINT ITERATE_UnregisterFonts( MSIRECORD *row, LPVOID param ) return ERROR_SUCCESS; } - RegCreateKeyW( HKEY_LOCAL_MACHINE, regfont1, &hkey1 ); - RegCreateKeyW( HKEY_LOCAL_MACHINE, regfont2, &hkey2 ); + RegCreateKeyW( HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts", &hkey1 ); + RegCreateKeyW( HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows\\CurrentVersion\\Fonts", &hkey2 ); if (MSI_RecordIsNull( row, 2 )) name = font_name_from_file( package, file->TargetPath ); @@ -373,15 +356,13 @@ static UINT ITERATE_UnregisterFonts( MSIRECORD *row, LPVOID param ) UINT ACTION_UnregisterFonts( MSIPACKAGE *package ) { - static const WCHAR query[] = { - 'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ','`','F','o','n','t','`',0}; MSIQUERY *view; UINT r; if (package->script == SCRIPT_NONE) - return msi_schedule_action(package, SCRIPT_INSTALL, szUnregisterFonts); + return msi_schedule_action(package, SCRIPT_INSTALL, L"UnregisterFonts"); - r = MSI_DatabaseOpenViewW( package->db, query, &view ); + r = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM `Font`", &view ); if (r != ERROR_SUCCESS) return ERROR_SUCCESS; diff --git a/dlls/msi/format.c b/dlls/msi/format.c index 77e6dd153c4..9e97c23aaad 100644 --- a/dlls/msi/format.c +++ b/dlls/msi/format.c @@ -341,7 +341,6 @@ static WCHAR *deformat_literal( FORMAT *format, FORMSTR *str, BOOL *propfound, static WCHAR *build_default_format( const MSIRECORD *record ) { - static const WCHAR fmt[] = {'%','i',':',' ','[','%','i',']',' ',0}; int i, count = MSI_RecordGetFieldCount( record ); WCHAR *ret, *tmp, buf[26]; DWORD size = 1; @@ -351,7 +350,7 @@ static WCHAR *build_default_format( const MSIRECORD *record ) for (i = 1; i <= count; i++) { - size += swprintf( buf, ARRAY_SIZE(buf), fmt, i, i ); + size += swprintf( buf, ARRAY_SIZE(buf), L"%d: [%d] ", i, i ); if (!(tmp = msi_realloc( ret, size * sizeof(*ret) ))) { msi_free( ret ); @@ -754,7 +753,7 @@ static BOOL verify_format(LPWSTR data) return TRUE; } -static DWORD deformat_string_internal(MSIPACKAGE *package, LPCWSTR ptr, +static DWORD deformat_string_internal(MSIPACKAGE *package, LPCWSTR ptr, WCHAR** data, DWORD *len, MSIRECORD* record) { @@ -898,7 +897,7 @@ end: return rc; } -UINT WINAPI MsiFormatRecordW( MSIHANDLE hInstall, MSIHANDLE hRecord, +UINT WINAPI MsiFormatRecordW( MSIHANDLE hInstall, MSIHANDLE hRecord, LPWSTR szResult, LPDWORD sz ) { UINT r = ERROR_INVALID_HANDLE; diff --git a/dlls/msi/install.c b/dlls/msi/install.c index 4277b51804f..a3bfb53cfff 100644 --- a/dlls/msi/install.c +++ b/dlls/msi/install.c @@ -52,7 +52,7 @@ UINT WINAPI MsiDoActionA( MSIHANDLE hInstall, LPCSTR szAction ) szwAction = strdupAtoW(szAction); if (szAction && !szwAction) - return ERROR_FUNCTION_FAILED; + return ERROR_FUNCTION_FAILED; ret = MsiDoActionW( hInstall, szwAction ); msi_free( szwAction ); @@ -92,7 +92,7 @@ UINT WINAPI MsiDoActionW( MSIHANDLE hInstall, LPCWSTR szAction ) return ret; } - + ret = ACTION_PerformAction(package, szAction); msiobj_release( &package->hdr ); @@ -111,7 +111,7 @@ UINT WINAPI MsiSequenceA( MSIHANDLE hInstall, LPCSTR szTable, INT iSequenceMode szwTable = strdupAtoW(szTable); if (szTable && !szwTable) - return ERROR_FUNCTION_FAILED; + return ERROR_FUNCTION_FAILED; ret = MsiSequenceW( hInstall, szwTable, iSequenceMode ); msi_free( szwTable ); @@ -166,7 +166,7 @@ UINT msi_strcpy_to_awstring( const WCHAR *str, int len, awstring *awbuf, DWORD * return ERROR_SUCCESS; if (len < 0) len = lstrlenW( str ); - + if (awbuf->unicode && awbuf->str.w) { memcpy( awbuf->str.w, str, min(len + 1, *sz) * sizeof(WCHAR) ); @@ -359,7 +359,7 @@ UINT WINAPI MsiGetTargetPathW(MSIHANDLE hinst, const WCHAR *folder, WCHAR *buf, static WCHAR *get_source_root( MSIPACKAGE *package ) { msi_set_sourcedir_props( package, FALSE ); - return msi_dup_property( package->db, szSourceDir ); + return msi_dup_property( package->db, L"SourceDir" ); } WCHAR *msi_resolve_source_folder( MSIPACKAGE *package, const WCHAR *name, MSIFOLDER **folder ) @@ -369,11 +369,11 @@ WCHAR *msi_resolve_source_folder( MSIPACKAGE *package, const WCHAR *name, MSIFOL TRACE("working to resolve %s\n", debugstr_w(name)); - if (!wcscmp( name, szSourceDir )) name = szTargetDir; + if (!wcscmp( name, L"SourceDir" )) name = L"TARGETDIR"; if (!(f = msi_get_loaded_folder( package, name ))) return NULL; /* special resolving for root dir */ - if (!wcscmp( name, szTargetDir ) && !f->ResolvedSource) + if (!wcscmp( name, L"TARGETDIR" ) && !f->ResolvedSource) { f->ResolvedSource = get_source_root( package ); } @@ -598,7 +598,7 @@ UINT MSI_SetTargetPathW( MSIPACKAGE *package, LPCWSTR szFolder, LPCWSTR szFolder /*********************************************************************** * MsiSetTargetPathW (MSI.@) */ -UINT WINAPI MsiSetTargetPathW(MSIHANDLE hInstall, LPCWSTR szFolder, +UINT WINAPI MsiSetTargetPathW(MSIHANDLE hInstall, LPCWSTR szFolder, LPCWSTR szFolderPath) { MSIPACKAGE *package; @@ -730,11 +730,11 @@ BOOL WINAPI MsiGetMode(MSIHANDLE hInstall, MSIRUNMODE iRunMode) break; case MSIRUNMODE_MAINTENANCE: - r = msi_get_property_int( package->db, szInstalled, 0 ) != 0; + r = msi_get_property_int( package->db, L"Installed", 0 ) != 0; break; case MSIRUNMODE_ROLLBACKENABLED: - r = msi_get_property_int( package->db, szRollbackDisabled, 0 ) == 0; + r = msi_get_property_int( package->db, L"RollbackDisabled", 0 ) == 0; break; case MSIRUNMODE_REBOOTATEND: @@ -823,7 +823,7 @@ UINT WINAPI MsiSetFeatureStateA(MSIHANDLE hInstall, LPCSTR szFeature, szwFeature = strdupAtoW(szFeature); - rc = MsiSetFeatureStateW(hInstall,szwFeature, iState); + rc = MsiSetFeatureStateW(hInstall,szwFeature, iState); msi_free(szwFeature); @@ -924,7 +924,7 @@ UINT MSI_SetFeatureStateW( MSIPACKAGE *package, LPCWSTR szFeature, INSTALLSTATE if (!feature) return ERROR_UNKNOWN_FEATURE; - if (iState == INSTALLSTATE_ADVERTISED && + if (iState == INSTALLSTATE_ADVERTISED && feature->Attributes & msidbFeatureAttributesDisallowAdvertise) return ERROR_FUNCTION_FAILED; @@ -938,7 +938,7 @@ UINT MSI_SetFeatureStateW( MSIPACKAGE *package, LPCWSTR szFeature, INSTALLSTATE if (child->Feature_Parent && !wcscmp( szFeature, child->Feature_Parent )) MSI_SetFeatureStateW(package, child->Feature, iState); } - + return rc; } @@ -1029,8 +1029,8 @@ UINT WINAPI MsiSetFeatureAttributesW( MSIHANDLE handle, LPCWSTR name, DWORD attr if (!(package = msihandle2msiinfo( handle, MSIHANDLETYPE_PACKAGE ))) return ERROR_INVALID_HANDLE; - costing = msi_dup_property( package->db, szCostingComplete ); - if (!costing || !wcscmp( costing, szOne )) + costing = msi_dup_property( package->db, L"CostingComplete" ); + if (!costing || !wcscmp( costing, L"1" )) { msi_free( costing ); msiobj_release( &package->hdr ); @@ -1055,7 +1055,7 @@ UINT WINAPI MsiGetFeatureStateA(MSIHANDLE hInstall, LPCSTR szFeature, { LPWSTR szwFeature = NULL; UINT rc; - + if (szFeature && !(szwFeature = strdupAtoW(szFeature))) return ERROR_OUTOFMEMORY; rc = MsiGetFeatureStateW(hInstall, szwFeature, piInstalled, piAction); @@ -1400,7 +1400,7 @@ UINT WINAPI MsiGetComponentStateA(MSIHANDLE hInstall, LPCSTR szComponent, { LPWSTR szwComponent= NULL; UINT rc; - + szwComponent= strdupAtoW(szComponent); rc = MsiGetComponentStateW(hInstall,szwComponent,piInstalled, piAction); @@ -1567,14 +1567,13 @@ LANGID WINAPI MsiGetLanguage(MSIHANDLE hInstall) return langid; } - langid = msi_get_property_int( package->db, szProductLanguage, 0 ); + langid = msi_get_property_int( package->db, L"ProductLanguage", 0 ); msiobj_release( &package->hdr ); return langid; } UINT MSI_SetInstallLevel( MSIPACKAGE *package, int iInstallLevel ) { - static const WCHAR fmt[] = { '%','d',0 }; WCHAR level[6]; int len; UINT r; @@ -1587,8 +1586,8 @@ UINT MSI_SetInstallLevel( MSIPACKAGE *package, int iInstallLevel ) if (iInstallLevel < 1) return MSI_SetFeatureStates( package ); - len = swprintf( level, ARRAY_SIZE(level), fmt, iInstallLevel ); - r = msi_set_property( package->db, szInstallLevel, level, len ); + len = swprintf( level, ARRAY_SIZE(level), L"%d", iInstallLevel ); + r = msi_set_property( package->db, L"INSTALLLEVEL", level, len ); if ( r == ERROR_SUCCESS ) r = MSI_SetFeatureStates( package ); diff --git a/dlls/msi/media.c b/dlls/msi/media.c index 05a751092a3..41c82af1b59 100644 --- a/dlls/msi/media.c +++ b/dlls/msi/media.c @@ -82,7 +82,7 @@ static UINT msi_change_media(MSIPACKAGE *package, MSIMEDIAINFO *mi) LPWSTR source_dir; UINT r = IDRETRY; - source_dir = msi_dup_property(package->db, szSourceDir); + source_dir = msi_dup_property(package->db, L"SourceDir"); record = MSI_CreateRecord(2); while (r == IDRETRY && !source_matches_volume(mi, source_dir)) @@ -275,12 +275,7 @@ static UINT CDECL msi_media_get_disk_info(MSIPACKAGE *package, MSIMEDIAINFO *mi) { MSIRECORD *row; - static const WCHAR query[] = { - 'S','E','L','E','C','T',' ','*',' ', 'F','R','O','M',' ', - '`','M','e','d','i','a','`',' ','W','H','E','R','E',' ', - '`','D','i','s','k','I','d','`',' ','=',' ','%','i',0}; - - row = MSI_QueryGetRecord(package->db, query, mi->disk_id); + row = MSI_QueryGetRecord(package->db, L"SELECT * FROM `Media` WHERE `DiskId` = %d", mi->disk_id); if (!row) { TRACE("Unable to query row\n"); @@ -473,7 +468,7 @@ static INT_PTR cabinet_copy_file(FDINOTIFICATIONTYPE fdint, msi_free( tmppathW ); return ERROR_OUTOFMEMORY; } - if (!GetTempFileNameW(tmppathW, szMsi, 0, tmpfileW)) tmpfileW[0] = 0; + if (!GetTempFileNameW(tmppathW, L"msi", 0, tmpfileW)) tmpfileW[0] = 0; msi_free( tmppathW ); handle = CreateFileW(tmpfileW, GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, attrs, NULL); @@ -679,7 +674,7 @@ static UINT get_drive_type(const WCHAR *path) static WCHAR *get_base_url( MSIDATABASE *db ) { - WCHAR *p, *ret = NULL, *orig_db = msi_dup_property( db, szOriginalDatabase ); + WCHAR *p, *ret = NULL, *orig_db = msi_dup_property( db, L"OriginalDatabase" ); if (UrlIsW( orig_db, URLIS_URL ) && (ret = strdupW( orig_db )) && (p = wcsrchr( ret, '/'))) p[1] = 0; msi_free( orig_db ); return ret; @@ -687,10 +682,6 @@ static WCHAR *get_base_url( MSIDATABASE *db ) UINT msi_load_media_info(MSIPACKAGE *package, UINT Sequence, MSIMEDIAINFO *mi) { - static const WCHAR query[] = { - 'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ','`','M','e','d','i','a','`',' ', - 'W','H','E','R','E',' ','`','L','a','s','t','S','e','q','u','e','n','c','e','`',' ', - '>','=',' ','%','i',' ','O','R','D','E','R',' ','B','Y',' ','`','D','i','s','k','I','d','`',0}; MSIRECORD *row; WCHAR *source_dir, *source, *base_url = NULL; DWORD options; @@ -698,7 +689,7 @@ UINT msi_load_media_info(MSIPACKAGE *package, UINT Sequence, MSIMEDIAINFO *mi) if (Sequence <= mi->last_sequence) /* already loaded */ return ERROR_SUCCESS; - row = MSI_QueryGetRecord(package->db, query, Sequence); + row = MSI_QueryGetRecord(package->db, L"SELECT * FROM `Media` WHERE `LastSequence` >= %d ORDER BY `DiskId`", Sequence); if (!row) { TRACE("Unable to query row\n"); @@ -717,7 +708,7 @@ UINT msi_load_media_info(MSIPACKAGE *package, UINT Sequence, MSIMEDIAINFO *mi) msiobj_release(&row->hdr); msi_set_sourcedir_props(package, FALSE); - source_dir = msi_dup_property(package->db, szSourceDir); + source_dir = msi_dup_property(package->db, L"SourceDir"); lstrcpyW(mi->sourcedir, source_dir); PathAddBackslashW(mi->sourcedir); mi->type = get_drive_type(source_dir); @@ -902,7 +893,7 @@ UINT ready_media( MSIPACKAGE *package, BOOL compressed, MSIMEDIAINFO *mi ) /* assume first volume is in the drive */ if (mi->last_volume && wcsicmp( mi->last_volume, mi->volume_label )) { - WCHAR *source = msi_dup_property( package->db, szSourceDir ); + WCHAR *source = msi_dup_property( package->db, L"SourceDir" ); BOOL match = source_matches_volume( mi, source ); msi_free( source ); diff --git a/dlls/msi/msi.c b/dlls/msi/msi.c index 71de13a8ffc..0963c814211 100644 --- a/dlls/msi/msi.c +++ b/dlls/msi/msi.c @@ -2469,7 +2469,7 @@ UINT WINAPI MsiMessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uTyp { FIXME("%p %s %s %u %08x %08x\n", hWnd, debugstr_a(lpText), debugstr_a(lpCaption), uType, wLanguageId, f); - return MessageBoxExA(hWnd,lpText,lpCaption,uType,wLanguageId); + return MessageBoxExA(hWnd,lpText,lpCaption,uType,wLanguageId); } UINT WINAPI MsiMessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType, @@ -2477,7 +2477,7 @@ UINT WINAPI MsiMessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uT { FIXME("%p %s %s %u %08x %08x\n", hWnd, debugstr_w(lpText), debugstr_w(lpCaption), uType, wLanguageId, f); - return MessageBoxExW(hWnd,lpText,lpCaption,uType,wLanguageId); + return MessageBoxExW(hWnd,lpText,lpCaption,uType,wLanguageId); } UINT WINAPI MsiMessageBoxExA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType, @@ -3522,7 +3522,7 @@ UINT WINAPI MsiProvideQualifiedComponentW( LPCWSTR szComponent, LPCWSTR szQualifier, DWORD dwInstallMode, LPWSTR lpPathBuf, LPDWORD pcchPathBuf) { - return MsiProvideQualifiedComponentExW(szComponent, szQualifier, + return MsiProvideQualifiedComponentExW(szComponent, szQualifier, dwInstallMode, NULL, 0, 0, lpPathBuf, pcchPathBuf); } @@ -3989,7 +3989,7 @@ UINT WINAPI MsiReinstallFeatureW( LPCWSTR szProduct, LPCWSTR szFeature, DWORD dw if (dwReinstallMode & REINSTALLMODE_PACKAGE) *ptr++ = 'v'; *ptr = 0; - + sz = sizeof(sourcepath); MsiSourceListGetInfoW( szProduct, NULL, context, MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCEW, sourcepath, &sz ); diff --git a/dlls/msi/msipriv.h b/dlls/msi/msipriv.h index a1b7f033c37..950a18d0e74 100644 --- a/dlls/msi/msipriv.h +++ b/dlls/msi/msipriv.h @@ -1137,111 +1137,6 @@ extern DWORD call_script(MSIHANDLE hPackage, INT type, LPCWSTR script, LPCWSTR f /* User interface messages from the actions */ extern void msi_ui_progress(MSIPACKAGE *, int, int, int, int) DECLSPEC_HIDDEN; -/* common strings */ -static const WCHAR szSourceDir[] = {'S','o','u','r','c','e','D','i','r',0}; -static const WCHAR szSOURCEDIR[] = {'S','O','U','R','C','E','D','I','R',0}; -static const WCHAR szRootDrive[] = {'R','O','O','T','D','R','I','V','E',0}; -static const WCHAR szTargetDir[] = {'T','A','R','G','E','T','D','I','R',0}; -static const WCHAR szLocalSid[] = {'S','-','1','-','5','-','1','8',0}; -static const WCHAR szAllSid[] = {'S','-','1','-','1','-','0',0}; -static const WCHAR szEmpty[] = {0}; -static const WCHAR szAll[] = {'A','L','L',0}; -static const WCHAR szOne[] = {'1',0}; -static const WCHAR szZero[] = {'0',0}; -static const WCHAR szSpace[] = {' ',0}; -static const WCHAR szBackSlash[] = {'\\',0}; -static const WCHAR szForwardSlash[] = {'/',0}; -static const WCHAR szDot[] = {'.',0}; -static const WCHAR szDotDot[] = {'.','.',0}; -static const WCHAR szSemiColon[] = {';',0}; -static const WCHAR szPreselected[] = {'P','r','e','s','e','l','e','c','t','e','d',0}; -static const WCHAR szPatches[] = {'P','a','t','c','h','e','s',0}; -static const WCHAR szState[] = {'S','t','a','t','e',0}; -static const WCHAR szMsi[] = {'m','s','i',0}; -static const WCHAR szPatch[] = {'P','A','T','C','H',0}; -static const WCHAR szSourceList[] = {'S','o','u','r','c','e','L','i','s','t',0}; -static const WCHAR szInstalled[] = {'I','n','s','t','a','l','l','e','d',0}; -static const WCHAR szReinstall[] = {'R','E','I','N','S','T','A','L','L',0}; -static const WCHAR szReinstallMode[] = {'R','E','I','N','S','T','A','L','L','M','O','D','E',0}; -static const WCHAR szRemove[] = {'R','E','M','O','V','E',0}; -static const WCHAR szUserSID[] = {'U','s','e','r','S','I','D',0}; -static const WCHAR szProductCode[] = {'P','r','o','d','u','c','t','C','o','d','e',0}; -static const WCHAR szRegisterClassInfo[] = {'R','e','g','i','s','t','e','r','C','l','a','s','s','I','n','f','o',0}; -static const WCHAR szRegisterProgIdInfo[] = {'R','e','g','i','s','t','e','r','P','r','o','g','I','d','I','n','f','o',0}; -static const WCHAR szRegisterExtensionInfo[] = {'R','e','g','i','s','t','e','r','E','x','t','e','n','s','i','o','n','I','n','f','o',0}; -static const WCHAR szRegisterMIMEInfo[] = {'R','e','g','i','s','t','e','r','M','I','M','E','I','n','f','o',0}; -static const WCHAR szDuplicateFiles[] = {'D','u','p','l','i','c','a','t','e','F','i','l','e','s',0}; -static const WCHAR szRemoveDuplicateFiles[] = {'R','e','m','o','v','e','D','u','p','l','i','c','a','t','e','F','i','l','e','s',0}; -static const WCHAR szInstallFiles[] = {'I','n','s','t','a','l','l','F','i','l','e','s',0}; -static const WCHAR szPatchFiles[] = {'P','a','t','c','h','F','i','l','e','s',0}; -static const WCHAR szRemoveFiles[] = {'R','e','m','o','v','e','F','i','l','e','s',0}; -static const WCHAR szFindRelatedProducts[] = {'F','i','n','d','R','e','l','a','t','e','d','P','r','o','d','u','c','t','s',0}; -static const WCHAR szAllUsers[] = {'A','L','L','U','S','E','R','S',0}; -static const WCHAR szCustomActionData[] = {'C','u','s','t','o','m','A','c','t','i','o','n','D','a','t','a',0}; -static const WCHAR szUILevel[] = {'U','I','L','e','v','e','l',0}; -static const WCHAR szProductID[] = {'P','r','o','d','u','c','t','I','D',0}; -static const WCHAR szPIDTemplate[] = {'P','I','D','T','e','m','p','l','a','t','e',0}; -static const WCHAR szPIDKEY[] = {'P','I','D','K','E','Y',0}; -static const WCHAR szTYPELIB[] = {'T','Y','P','E','L','I','B',0}; -static const WCHAR szSumInfo[] = {5 ,'S','u','m','m','a','r','y','I','n','f','o','r','m','a','t','i','o','n',0}; -static const WCHAR szHCR[] = {'H','K','E','Y','_','C','L','A','S','S','E','S','_','R','O','O','T','\\',0}; -static const WCHAR szHCU[] = {'H','K','E','Y','_','C','U','R','R','E','N','T','_','U','S','E','R','\\',0}; -static const WCHAR szHLM[] = {'H','K','E','Y','_','L','O','C','A','L','_','M','A','C','H','I','N','E','\\',0}; -static const WCHAR szHU[] = {'H','K','E','Y','_','U','S','E','R','S','\\',0}; -static const WCHAR szWindowsFolder[] = {'W','i','n','d','o','w','s','F','o','l','d','e','r',0}; -static const WCHAR szAppSearch[] = {'A','p','p','S','e','a','r','c','h',0}; -static const WCHAR szMoveFiles[] = {'M','o','v','e','F','i','l','e','s',0}; -static const WCHAR szCCPSearch[] = {'C','C','P','S','e','a','r','c','h',0}; -static const WCHAR szUnregisterClassInfo[] = {'U','n','r','e','g','i','s','t','e','r','C','l','a','s','s','I','n','f','o',0}; -static const WCHAR szUnregisterExtensionInfo[] = {'U','n','r','e','g','i','s','t','e','r','E','x','t','e','n','s','i','o','n','I','n','f','o',0}; -static const WCHAR szUnregisterMIMEInfo[] = {'U','n','r','e','g','i','s','t','e','r','M','I','M','E','I','n','f','o',0}; -static const WCHAR szUnregisterProgIdInfo[] = {'U','n','r','e','g','i','s','t','e','r','P','r','o','g','I','d','I','n','f','o',0}; -static const WCHAR szRegisterFonts[] = {'R','e','g','i','s','t','e','r','F','o','n','t','s',0}; -static const WCHAR szUnregisterFonts[] = {'U','n','r','e','g','i','s','t','e','r','F','o','n','t','s',0}; -static const WCHAR szCLSID[] = {'C','L','S','I','D',0}; -static const WCHAR szProgID[] = {'P','r','o','g','I','D',0}; -static const WCHAR szVIProgID[] = {'V','e','r','s','i','o','n','I','n','d','e','p','e','n','d','e','n','t','P','r','o','g','I','D',0}; -static const WCHAR szAppID[] = {'A','p','p','I','D',0}; -static const WCHAR szDefaultIcon[] = {'D','e','f','a','u','l','t','I','c','o','n',0}; -static const WCHAR szInprocHandler[] = {'I','n','p','r','o','c','H','a','n','d','l','e','r',0}; -static const WCHAR szInprocHandler32[] = {'I','n','p','r','o','c','H','a','n','d','l','e','r','3','2',0}; -static const WCHAR szMIMEDatabase[] = {'M','I','M','E','\\','D','a','t','a','b','a','s','e','\\','C','o','n','t','e','n','t',' ','T','y','p','e','\\',0}; -static const WCHAR szLocalPackage[] = {'L','o','c','a','l','P','a','c','k','a','g','e',0}; -static const WCHAR szOriginalDatabase[] = {'O','r','i','g','i','n','a','l','D','a','t','a','b','a','s','e',0}; -static const WCHAR szUpgradeCode[] = {'U','p','g','r','a','d','e','C','o','d','e',0}; -static const WCHAR szAdminUser[] = {'A','d','m','i','n','U','s','e','r',0}; -static const WCHAR szIntel[] = {'I','n','t','e','l',0}; -static const WCHAR szIntel64[] = {'I','n','t','e','l','6','4',0}; -static const WCHAR szX64[] = {'x','6','4',0}; -static const WCHAR szAMD64[] = {'A','M','D','6','4',0}; -static const WCHAR szARM[] = {'A','r','m',0}; -static const WCHAR szARM64[] = {'A','r','m','6','4',0}; -static const WCHAR szStreams[] = {'_','S','t','r','e','a','m','s',0}; -static const WCHAR szStorages[] = {'_','S','t','o','r','a','g','e','s',0}; -static const WCHAR szMsiPublishAssemblies[] = {'M','s','i','P','u','b','l','i','s','h','A','s','s','e','m','b','l','i','e','s',0}; -static const WCHAR szMsiUnpublishAssemblies[] = {'M','s','i','U','n','p','u','b','l','i','s','h','A','s','s','e','m','b','l','i','e','s',0}; -static const WCHAR szCostingComplete[] = {'C','o','s','t','i','n','g','C','o','m','p','l','e','t','e',0}; -static const WCHAR szTempFolder[] = {'T','e','m','p','F','o','l','d','e','r',0}; -static const WCHAR szDatabase[] = {'D','A','T','A','B','A','S','E',0}; -static const WCHAR szCRoot[] = {'C',':','\\',0}; -static const WCHAR szProductLanguage[] = {'P','r','o','d','u','c','t','L','a','n','g','u','a','g','e',0}; -static const WCHAR szProductVersion[] = {'P','r','o','d','u','c','t','V','e','r','s','i','o','n',0}; -static const WCHAR szWindowsInstaller[] = {'W','i','n','d','o','w','s','I','n','s','t','a','l','l','e','r',0}; -static const WCHAR szStringData[] = {'_','S','t','r','i','n','g','D','a','t','a',0}; -static const WCHAR szStringPool[] = {'_','S','t','r','i','n','g','P','o','o','l',0}; -static const WCHAR szInstallLevel[] = {'I','N','S','T','A','L','L','L','E','V','E','L',0}; -static const WCHAR szCostInitialize[] = {'C','o','s','t','I','n','i','t','i','a','l','i','z','e',0}; -static const WCHAR szAppDataFolder[] = {'A','p','p','D','a','t','a','F','o','l','d','e','r',0}; -static const WCHAR szRollbackDisabled[] = {'R','o','l','l','b','a','c','k','D','i','s','a','b','l','e','d',0}; -static const WCHAR szName[] = {'N','a','m','e',0}; -static const WCHAR szData[] = {'D','a','t','a',0}; -static const WCHAR szLangResource[] = {'\\','V','a','r','F','i','l','e','I','n','f','o','\\','T','r','a','n','s','l','a','t','i','o','n',0}; -static const WCHAR szInstallLocation[] = {'I','n','s','t','a','l','l','L','o','c','a','t','i','o','n',0}; -static const WCHAR szProperty[] = {'P','r','o','p','e','r','t','y',0}; -static const WCHAR szUninstallable[] = {'U','n','i','n','s','t','a','l','l','a','b','l','e',0}; -static const WCHAR szEXECUTEACTION[] = {'E','X','E','C','U','T','E','A','C','T','I','O','N',0}; -static const WCHAR szProductToBeRegistered[] = {'P','r','o','d','u','c','t','T','o','B','e','R','e','g','i','s','t','e','r','e','d',0}; - /* memory allocation macro functions */ static void *msi_alloc( size_t len ) __WINE_ALLOC_SIZE(1); static inline void *msi_alloc( size_t len ) diff --git a/dlls/msi/msiquery.c b/dlls/msi/msiquery.c index 7791ee9b91a..4ee9a973917 100644 --- a/dlls/msi/msiquery.c +++ b/dlls/msi/msiquery.c @@ -517,7 +517,7 @@ UINT WINAPI MsiViewExecute(MSIHANDLE hView, MSIHANDLE hRec) MSIQUERY *query; MSIRECORD *rec = NULL; UINT ret; - + TRACE("%d %d\n", hView, hRec); if( hRec ) @@ -564,7 +564,6 @@ UINT WINAPI MsiViewExecute(MSIHANDLE hView, MSIHANDLE hRec) static UINT msi_set_record_type_string( MSIRECORD *rec, UINT field, UINT type, BOOL temporary ) { - static const WCHAR fmt[] = { '%','d',0 }; WCHAR szType[0x10]; if (MSITYPE_IS_BINARY(type)) @@ -591,7 +590,7 @@ static UINT msi_set_record_type_string( MSIRECORD *rec, UINT field, if (type & MSITYPE_NULLABLE) szType[0] &= ~0x20; - swprintf( &szType[1], ARRAY_SIZE(szType) - 1, fmt, (type&0xff) ); + swprintf( &szType[1], ARRAY_SIZE(szType) - 1, L"%d", (type&0xff) ); TRACE("type %04x -> %s\n", type, debugstr_w(szType) ); @@ -798,7 +797,7 @@ MSIDBERROR WINAPI MsiViewGetErrorW( MSIHANDLE handle, LPWSTR buffer, LPDWORD buf } __ENDTRY; - if (msi_strncpyW(remote_column ? remote_column : szEmpty, -1, buffer, buflen) == ERROR_MORE_DATA) + if (msi_strncpyW(remote_column ? remote_column : L"", -1, buffer, buflen) == ERROR_MORE_DATA) r = MSIDBERROR_MOREDATA; if (remote_column) @@ -808,7 +807,7 @@ MSIDBERROR WINAPI MsiViewGetErrorW( MSIHANDLE handle, LPWSTR buffer, LPDWORD buf } if ((r = query->view->error)) column = query->view->error_column; - else column = szEmpty; + else column = L""; if (msi_strncpyW(column, -1, buffer, buflen) == ERROR_MORE_DATA) r = MSIDBERROR_MOREDATA; @@ -849,7 +848,7 @@ MSIDBERROR WINAPI MsiViewGetErrorA( MSIHANDLE handle, LPSTR buffer, LPDWORD bufl } __ENDTRY; - if (msi_strncpyWtoA(remote_column ? remote_column : szEmpty, -1, buffer, buflen, FALSE) == ERROR_MORE_DATA) + if (msi_strncpyWtoA(remote_column ? remote_column : L"", -1, buffer, buflen, FALSE) == ERROR_MORE_DATA) r = MSIDBERROR_MOREDATA; if (remote_column) @@ -859,7 +858,7 @@ MSIDBERROR WINAPI MsiViewGetErrorA( MSIHANDLE handle, LPSTR buffer, LPDWORD bufl } if ((r = query->view->error)) column = query->view->error_column; - else column = szEmpty; + else column = L""; if (msi_strncpyWtoA(column, -1, buffer, buflen, FALSE) == ERROR_MORE_DATA) r = MSIDBERROR_MOREDATA; @@ -1045,11 +1044,6 @@ static UINT msi_primary_key_iterator( MSIRECORD *rec, LPVOID param ) UINT MSI_DatabaseGetPrimaryKeys( MSIDATABASE *db, LPCWSTR table, MSIRECORD **prec ) { - static const WCHAR sql[] = { - 's','e','l','e','c','t',' ','*',' ', - 'f','r','o','m',' ','`','_','C','o','l','u','m','n','s','`',' ', - 'w','h','e','r','e',' ', - '`','T','a','b','l','e','`',' ','=',' ','\'','%','s','\'',0 }; struct msi_primary_key_record_info info; MSIQUERY *query = NULL; UINT r; @@ -1057,7 +1051,7 @@ UINT MSI_DatabaseGetPrimaryKeys( MSIDATABASE *db, if (!TABLE_Exists( db, table )) return ERROR_INVALID_TABLE; - r = MSI_OpenQuery( db, &query, sql, table ); + r = MSI_OpenQuery( db, &query, L"SELECT * FROM `_Columns` WHERE `Table` = '%s'", table ); if( r != ERROR_SUCCESS ) return r; @@ -1133,7 +1127,7 @@ UINT WINAPI MsiDatabaseGetPrimaryKeysW( MSIHANDLE hdb, return r; } -UINT WINAPI MsiDatabaseGetPrimaryKeysA(MSIHANDLE hdb, +UINT WINAPI MsiDatabaseGetPrimaryKeysA(MSIHANDLE hdb, LPCSTR table, MSIHANDLE* phRec) { LPWSTR szwTable = NULL; diff --git a/dlls/msi/patch.c b/dlls/msi/patch.c index 67da5778415..35b2784ba85 100644 --- a/dlls/msi/patch.c +++ b/dlls/msi/patch.c @@ -179,7 +179,7 @@ static UINT check_transform_applicable( MSIPACKAGE *package, IStorage *transform } if (wanted_flags & MSITRANSFORM_VALIDATE_PRODUCT) { - WCHAR *product_code_installed = msi_dup_property( package->db, szProductCode ); + WCHAR *product_code_installed = msi_dup_property( package->db, L"ProductCode" ); if (!product_code_installed) { @@ -197,7 +197,7 @@ static UINT check_transform_applicable( MSIPACKAGE *package, IStorage *transform msi_free( template ); if (wanted_flags & MSITRANSFORM_VALIDATE_MAJORVERSION) { - WCHAR *product_version_installed = msi_dup_property( package->db, szProductVersion ); + WCHAR *product_version_installed = msi_dup_property( package->db, L"ProductVersion" ); DWORD major_installed, minor_installed, major, minor; if (!product_version_installed) @@ -218,7 +218,7 @@ static UINT check_transform_applicable( MSIPACKAGE *package, IStorage *transform } else if (wanted_flags & MSITRANSFORM_VALIDATE_MINORVERSION) { - WCHAR *product_version_installed = msi_dup_property( package->db, szProductVersion ); + WCHAR *product_version_installed = msi_dup_property( package->db, L"ProductVersion" ); DWORD major_installed, minor_installed, major, minor; if (!product_version_installed) @@ -236,7 +236,7 @@ static UINT check_transform_applicable( MSIPACKAGE *package, IStorage *transform } if (wanted_flags & MSITRANSFORM_VALIDATE_UPGRADECODE) { - WCHAR *upgrade_code_installed = msi_dup_property( package->db, szUpgradeCode ); + WCHAR *upgrade_code_installed = msi_dup_property( package->db, L"UpgradeCode" ); if (!upgrade_code_installed) { @@ -296,7 +296,7 @@ UINT msi_check_patch_applicable( MSIPACKAGE *package, MSISUMMARYINFO *si ) LPWSTR guid_list, *guids, product_code; UINT i, ret = ERROR_FUNCTION_FAILED; - product_code = msi_dup_property( package->db, szProductCode ); + product_code = msi_dup_property( package->db, L"ProductCode" ); if (!product_code) { /* FIXME: the property ProductCode should be written into the DB somewhere */ @@ -368,17 +368,13 @@ static UINT msi_parse_patch_summary( MSISUMMARYINFO *si, MSIPATCHINFO **patch ) static UINT patch_set_media_source_prop( MSIPACKAGE *package ) { - static const WCHAR query[] = { - 'S','E','L','E','C','T',' ','`','S','o','u','r','c','e','`',' ','F','R','O','M',' ', - '`','M','e','d','i','a','`',' ','W','H','E','R','E',' ','`','S','o','u','r','c','e','`',' ', - 'I','S',' ','N','O','T',' ','N','U','L','L',0}; MSIQUERY *view; MSIRECORD *rec; const WCHAR *property; WCHAR *patch; UINT r; - r = MSI_DatabaseOpenViewW( package->db, query, &view ); + r = MSI_DatabaseOpenViewW( package->db, L"SELECT `Source` FROM `Media` WHERE `Source` IS NOT NULL", &view ); if (r != ERROR_SUCCESS) return r; @@ -389,7 +385,7 @@ static UINT patch_set_media_source_prop( MSIPACKAGE *package ) if (MSI_ViewFetch( view, &rec ) == ERROR_SUCCESS) { property = MSI_RecordGetString( rec, 1 ); - patch = msi_dup_property( package->db, szPatch ); + patch = msi_dup_property( package->db, L"PATCH" ); msi_set_property( package->db, property, patch, -1 ); msi_free( patch ); msiobj_release( &rec->hdr ); @@ -444,15 +440,11 @@ static void patch_offset_list_free( struct patch_offset_list *pos ) static void patch_offset_get_filepatches( MSIDATABASE *db, UINT last_sequence, struct patch_offset_list *pos ) { - static const WCHAR query[] = { - 'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ','P','a','t','c','h',' ', - 'W','H','E','R','E',' ','S','e','q','u','e','n','c','e',' ','<','=',' ','?',' ', - 'O','R','D','E','R',' ','B','Y',' ','S','e','q','u','e','n','c','e',0}; MSIQUERY *view; MSIRECORD *rec; UINT r; - r = MSI_DatabaseOpenViewW( db, query, &view ); + r = MSI_DatabaseOpenViewW( db, L"SELECT * FROM `Patch` WHERE `Sequence` <= ? ORDER BY `Sequence`", &view ); if (r != ERROR_SUCCESS) return; @@ -482,15 +474,11 @@ static void patch_offset_get_filepatches( MSIDATABASE *db, UINT last_sequence, s static void patch_offset_get_files( MSIDATABASE *db, UINT last_sequence, struct patch_offset_list *pos ) { - static const WCHAR query[] = { - 'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ','F','i','l','e',' ', - 'W','H','E','R','E',' ','S','e','q','u','e','n','c','e',' ','<','=',' ','?',' ', - 'O','R','D','E','R',' ','B','Y',' ','S','e','q','u','e','n','c','e',0}; MSIQUERY *view; MSIRECORD *rec; UINT r; - r = MSI_DatabaseOpenViewW( db, query, &view ); + r = MSI_DatabaseOpenViewW( db, L"SELECT * FROM `File` WHERE `Sequence` <= ? ORDER BY `Sequence`", &view ); if (r != ERROR_SUCCESS) return; @@ -545,16 +533,6 @@ static UINT patch_update_file_sequence( MSIDATABASE *db, const struct patch_offs static UINT patch_update_filepatch_sequence( MSIDATABASE *db, const struct patch_offset_list *pos, MSIQUERY *view, MSIRECORD *rec ) { - static const WCHAR delete_query[] = { - 'D','E','L','E','T','E',' ','F','R','O','M',' ','`','P','a','t','c','h','`',' ', - 'W','H','E','R','E',' ','`','F','i','l','e','_','`',' ','=',' ','?',' ', - 'A','N','D',' ','`','S','e','q','u','e','n','c','e','`',' ','=',' ','?',0}; - static const WCHAR insert_query[] = { - 'I','N','S','E','R','T',' ','I','N','T','O',' ','`','P','a','t','c','h','`',' ', - '(','`','F','i','l','e','_','`',',','`','S','e','q','u','e','n','c','e','`',',', - '`','P','a','t','c','h','S','i','z','e','`',',','`','A','t','t','r','i','b','u','t','e','s','`',',', - '`','H','e','a','d','e','r','`',',','`','S','t','r','e','a','m','R','e','f','_','`',')',' ', - 'V','A','L','U','E','S',' ','(','?',',','?',',','?',',','?',',','?',',','?',')',0}; struct patch_offset *po; const WCHAR *file = MSI_RecordGetString( rec, 1 ); UINT r = ERROR_SUCCESS, seq = MSI_RecordGetInteger( rec, 2 ); @@ -566,7 +544,7 @@ static UINT patch_update_filepatch_sequence( MSIDATABASE *db, const struct patch MSIQUERY *delete_view, *insert_view; MSIRECORD *rec2; - r = MSI_DatabaseOpenViewW( db, delete_query, &delete_view ); + r = MSI_DatabaseOpenViewW( db, L"DELETE FROM `Patch` WHERE `File_` = ? AND `Sequence` = ?", &delete_view ); if (r != ERROR_SUCCESS) return r; rec2 = MSI_CreateRecord( 2 ); @@ -577,7 +555,8 @@ static UINT patch_update_filepatch_sequence( MSIDATABASE *db, const struct patch msiobj_release( &rec2->hdr ); if (r != ERROR_SUCCESS) return r; - r = MSI_DatabaseOpenViewW( db, insert_query, &insert_view ); + r = MSI_DatabaseOpenViewW( db, L"INSERT INTO `Patch` (`File_`,`Sequence`,`PatchSize`,`Attributes`," + L"`Header`,`StreamRef_`) VALUES (?,?,?,?,?,?)", &insert_view ); if (r != ERROR_SUCCESS) return r; MSI_RecordSetInteger( rec, 2, po->sequence + pos->offset_to_apply ); @@ -594,21 +573,13 @@ static UINT patch_update_filepatch_sequence( MSIDATABASE *db, const struct patch static UINT patch_offset_modify_db( MSIDATABASE *db, struct patch_offset_list *pos ) { - static const WCHAR file_query[] = { - 'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ','`','F','i','l','e','`',' ', - 'W','H','E','R','E',' ','`','S','e','q','u','e','n','c','e','`',' ','>','=',' ','?',' ', - 'A','N','D',' ','`','S','e','q','u','e','n','c','e','`',' ','<','=',' ','?',' ', - 'O','R','D','E','R',' ','B','Y',' ','`','S','e','q','u','e','n','c','e','`',0}; - static const WCHAR patch_query[] = { - 'S','E','L','E','C','T',' ','*','F','R','O','M',' ','`','P','a','t','c','h','`',' ', - 'W','H','E','R','E',' ','`','S','e','q','u','e','n','c','e','`',' ','>','=',' ','?',' ', - 'A','N','D',' ','`','S','e','q','u','e','n','c','e','`',' ','<','=',' ','?',' ', - 'O','R','D','E','R',' ','B','Y',' ','`','S','e','q','u','e','n','c','e','`',0}; MSIRECORD *rec; MSIQUERY *view; UINT r, min = pos->min, max = pos->max, r_fetch; - r = MSI_DatabaseOpenViewW( db, file_query, &view ); + r = MSI_DatabaseOpenViewW( db, + L"SELECT * FROM `File` WHERE `Sequence` >= ? AND `Sequence` <= ? ORDER BY `Sequence`", + &view ); if (r != ERROR_SUCCESS) return ERROR_SUCCESS; @@ -629,7 +600,9 @@ static UINT patch_offset_modify_db( MSIDATABASE *db, struct patch_offset_list *p } msiobj_release( &view->hdr ); - r = MSI_DatabaseOpenViewW( db, patch_query, &view ); + r = MSI_DatabaseOpenViewW( db, + L"SELECT *FROM `Patch` WHERE `Sequence` >= ? AND `Sequence` <= ? ORDER BY `Sequence`", + &view ); if (r != ERROR_SUCCESS) return ERROR_SUCCESS; @@ -654,11 +627,8 @@ done: return r; } -static const WCHAR patch_media_query[] = { - 'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ','`','M','e','d','i','a','`',' ', - 'W','H','E','R','E',' ','`','S','o','u','r','c','e','`',' ','I','S',' ','N','O','T',' ','N','U','L','L',' ', - 'A','N','D',' ','`','C','a','b','i','n','e','t','`',' ','I','S',' ','N','O','T',' ','N','U','L','L',' ', - 'O','R','D','E','R',' ','B','Y',' ','`','D','i','s','k','I','d','`',0}; +static const WCHAR patch_media_query[] = + L"SELECT * FROM `Media` WHERE `Source` IS NOT NULL AND `Cabinet` IS NOT NULL ORDER BY `DiskId`"; struct patch_media { @@ -673,15 +643,6 @@ struct patch_media static UINT patch_add_media( MSIPACKAGE *package, IStorage *storage, MSIPATCHINFO *patch ) { - static const WCHAR delete_query[] = { - 'D','E','L','E','T','E',' ','F','R','O','M',' ','`','M','e','d','i','a','`',' ', - 'W','H','E','R','E',' ','`','D','i','s','k','I','d','`','=','?',0}; - static const WCHAR insert_query[] = { - 'I','N','S','E','R','T',' ','I','N','T','O',' ','`','M','e','d','i','a','`',' ', - '(','`','D','i','s','k','I','d','`',',','`','L','a','s','t','S','e','q','u','e','n','c','e','`',',', - '`','D','i','s','k','P','r','o','m','p','t','`',',','`','C','a','b','i','n','e','t','`',',', - '`','V','o','l','u','m','e','L','a','b','e','l','`',',','`','S','o','u','r','c','e','`',')',' ', - 'V','A','L','U','E','S',' ','(','?',',','?',',','?',',','?',',','?',',','?',')',0}; MSIQUERY *view; MSIRECORD *rec; UINT r, disk_id; @@ -708,10 +669,11 @@ static UINT patch_add_media( MSIPACKAGE *package, IStorage *storage, MSIPATCHINF msiobj_release( &rec->hdr ); continue; } - if (!(media = msi_alloc( sizeof( *media )))) { + if (!(media = msi_alloc( sizeof( *media )))) + { msiobj_release( &rec->hdr ); goto done; - } + } media->disk_id = disk_id; media->last_sequence = MSI_RecordGetInteger( rec, 2 ); media->prompt = msi_dup_record_field( rec, 3 ); @@ -726,7 +688,7 @@ static UINT patch_add_media( MSIPACKAGE *package, IStorage *storage, MSIPATCHINF { MSIQUERY *delete_view, *insert_view; - r = MSI_DatabaseOpenViewW( package->db, delete_query, &delete_view ); + r = MSI_DatabaseOpenViewW( package->db, L"DELETE FROM `Media` WHERE `DiskId`=?", &delete_view ); if (r != ERROR_SUCCESS) goto done; rec = MSI_CreateRecord( 1 ); @@ -737,7 +699,9 @@ static UINT patch_add_media( MSIPACKAGE *package, IStorage *storage, MSIPATCHINF msiobj_release( &rec->hdr ); if (r != ERROR_SUCCESS) goto done; - r = MSI_DatabaseOpenViewW( package->db, insert_query, &insert_view ); + r = MSI_DatabaseOpenViewW( package->db, L"INSERT INTO `Media` (`DiskId`,`LastSequence`,`DiskPrompt`," + L"`Cabinet`,`VolumeLabel`,`Source`) VALUES (?,?,?,?,?,?)", + &insert_view ); if (r != ERROR_SUCCESS) goto done; disk_id = package->db->media_transform_disk_id; @@ -842,17 +806,12 @@ done: static DWORD is_uninstallable( MSIDATABASE *db ) { - static const WCHAR query[] = { - 'S','E','L','E','C','T',' ','`','V','a','l','u','e','`',' ','F','R','O','M',' ', - '`','M','s','i','P','a','t','c','h','M','e','t','a','d','a','t','a','`',' ', - 'W','H','E','R','E',' ','`','C','o','m','p','a','n','y','`',' ','I','S',' ', - 'N','U','L','L',' ','A','N','D',' ','`','P','r','o','p','e','r','t','y','`','=', - '\'','A','l','l','o','w','R','e','m','o','v','a','l','\'',0}; MSIQUERY *view; MSIRECORD *rec; DWORD ret = 0; - if (MSI_DatabaseOpenViewW( db, query, &view ) != ERROR_SUCCESS) return 0; + if (MSI_DatabaseOpenViewW( db, L"SELECT `Value` FROM `MsiPatchMetadata` WHERE `Company` IS NULL " + L"AND `Property`='AllowRemoval'", &view ) != ERROR_SUCCESS) return 0; if (MSI_ViewExecute( view, 0 ) != ERROR_SUCCESS) { msiobj_release( &view->hdr ); @@ -915,7 +874,6 @@ void msi_free_patchinfo( MSIPATCHINFO *patch ) static UINT msi_apply_patch_package( MSIPACKAGE *package, const WCHAR *file ) { - static const WCHAR dotmsp[] = {'.','m','s','p',0}; MSIDATABASE *patch_db = NULL; WCHAR localfile[MAX_PATH]; MSISUMMARYINFO *si; @@ -947,7 +905,7 @@ static UINT msi_apply_patch_package( MSIPACKAGE *package, const WCHAR *file ) if ( r != ERROR_SUCCESS ) goto done; - r = msi_create_empty_local_file( localfile, dotmsp ); + r = msi_create_empty_local_file( localfile, L".msp" ); if ( r != ERROR_SUCCESS ) goto done; @@ -976,7 +934,7 @@ UINT msi_apply_patches( MSIPACKAGE *package ) LPWSTR patch_list, *patches; UINT i, r = ERROR_SUCCESS; - patch_list = msi_dup_property( package->db, szPatch ); + patch_list = msi_dup_property( package->db, L"PATCH" ); TRACE("patches to be applied: %s\n", debugstr_w(patch_list)); @@ -991,11 +949,10 @@ UINT msi_apply_patches( MSIPACKAGE *package ) UINT msi_apply_transforms( MSIPACKAGE *package ) { - static const WCHAR szTransforms[] = {'T','R','A','N','S','F','O','R','M','S',0}; LPWSTR xform_list, *xforms; UINT i, r = ERROR_SUCCESS; - xform_list = msi_dup_property( package->db, szTransforms ); + xform_list = msi_dup_property( package->db, L"TRANSFORMS" ); xforms = msi_split_string( xform_list, ';' ); for (i = 0; xforms && xforms[i] && r == ERROR_SUCCESS; i++) diff --git a/dlls/msi/record.c b/dlls/msi/record.c index 0a352adcd87..46c2d71f6f1 100644 --- a/dlls/msi/record.c +++ b/dlls/msi/record.c @@ -147,7 +147,7 @@ static BOOL string2intW( LPCWSTR str, int *out ) if( str[0] == '-' ) /* check if it's negative */ x = -x; - *out = x; + *out = x; return TRUE; } @@ -439,7 +439,6 @@ const WCHAR *MSI_RecordGetString( const MSIRECORD *rec, UINT iField ) UINT MSI_RecordGetStringW(MSIRECORD *rec, UINT iField, LPWSTR szValue, LPDWORD pcchValue) { - static const WCHAR szFormat[] = {'%','d',0}; UINT len = 0, ret = ERROR_SUCCESS; WCHAR buffer[16]; @@ -457,7 +456,7 @@ UINT MSI_RecordGetStringW(MSIRECORD *rec, UINT iField, switch( rec->fields[iField].type ) { case MSIFIELD_INT: - wsprintfW(buffer, szFormat, rec->fields[iField].u.iVal); + wsprintfW(buffer, L"%d", rec->fields[iField].u.iVal); len = lstrlenW( buffer ); if (szValue) lstrcpynW(szValue, buffer, *pcchValue); diff --git a/dlls/msi/script.c b/dlls/msi/script.c index 67ad8b51c52..4585c2b5922 100644 --- a/dlls/msi/script.c +++ b/dlls/msi/script.c @@ -49,10 +49,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(msi); #endif -static const WCHAR szJScript[] = { 'J','S','c','r','i','p','t',0}; -static const WCHAR szVBScript[] = { 'V','B','S','c','r','i','p','t',0}; -static const WCHAR szSession[] = {'S','e','s','s','i','o','n',0}; - /* * MsiActiveScriptSite - Our IActiveScriptSite implementation. */ @@ -135,7 +131,7 @@ static HRESULT WINAPI MsiActiveScriptSite_GetItemInfo(IActiveScriptSite* iface, } /* Are we looking for the session object? */ - if (!wcscmp(szSession, pstrName)) { + if (!wcscmp(L"Session", pstrName)) { if (dwReturnMask & SCRIPTINFO_ITYPEINFO) { HRESULT hr = get_typeinfo(Session_tid, ppti); if (SUCCEEDED(hr)) @@ -319,9 +315,9 @@ DWORD call_script(MSIHANDLE hPackage, INT type, LPCWSTR script, LPCWSTR function /* Create the scripting engine */ type &= msidbCustomActionTypeJScript|msidbCustomActionTypeVBScript; if (type == msidbCustomActionTypeJScript) - hr = CLSIDFromProgID(szJScript, &clsid); + hr = CLSIDFromProgID(L"JScript", &clsid); else if (type == msidbCustomActionTypeVBScript) - hr = CLSIDFromProgID(szVBScript, &clsid); + hr = CLSIDFromProgID(L"VBScript", &clsid); else { ERR("Unknown script type %d\n", type); goto done; @@ -345,7 +341,7 @@ DWORD call_script(MSIHANDLE hPackage, INT type, LPCWSTR script, LPCWSTR function hr = IActiveScriptParse_InitNew(pActiveScriptParse); if (FAILED(hr)) goto done; - hr = IActiveScript_AddNamedItem(pActiveScript, szSession, SCRIPTITEM_GLOBALMEMBERS|SCRIPTITEM_ISVISIBLE); + hr = IActiveScript_AddNamedItem(pActiveScript, L"Session", SCRIPTITEM_GLOBALMEMBERS|SCRIPTITEM_ISVISIBLE); if (FAILED(hr)) goto done; hr = IActiveScriptParse_ParseScriptText(pActiveScriptParse, script, NULL, NULL, NULL, 0, 0, 0L, NULL, NULL); diff --git a/dlls/msi/select.c b/dlls/msi/select.c index 3c643f37239..d5a8e1fde23 100644 --- a/dlls/msi/select.c +++ b/dlls/msi/select.c @@ -236,10 +236,10 @@ static UINT SELECT_get_column_info( struct tagMSIVIEW *view, UINT n, LPCWSTR *na n = sv->cols[ n - 1 ]; if( !n ) { - if (name) *name = szEmpty; + if (name) *name = L""; if (type) *type = MSITYPE_UNKNOWN | MSITYPE_VALID; if (temporary) *temporary = FALSE; - if (table_name) *table_name = szEmpty; + if (table_name) *table_name = L""; return ERROR_SUCCESS; } return sv->table->ops->get_column_info( sv->table, n, name, @@ -404,7 +404,7 @@ static UINT SELECT_AddColumn( MSISELECTVIEW *sv, LPCWSTR name, } sv->cols[sv->num_cols] = n; - TRACE("Translating column %s from %d -> %d\n", + TRACE("Translating column %s from %d -> %d\n", debugstr_w( name ), sv->num_cols, n); sv->num_cols++; @@ -433,7 +433,7 @@ UINT SELECT_CreateView( MSIDATABASE *db, MSIVIEW **view, MSIVIEW *table, sv = msi_alloc_zero( FIELD_OFFSET( MSISELECTVIEW, cols[count] )); if( !sv ) return ERROR_FUNCTION_FAILED; - + /* fill the structure */ sv->view.ops = &select_ops; sv->db = db; diff --git a/dlls/msi/source.c b/dlls/msi/source.c index 89c04d9f7dd..b4b3b54fe35 100644 --- a/dlls/msi/source.c +++ b/dlls/msi/source.c @@ -53,7 +53,7 @@ typedef struct tagMediaInfo static UINT OpenSourceKey(LPCWSTR szProduct, HKEY* key, DWORD dwOptions, MSIINSTALLCONTEXT context, BOOL create) { - HKEY rootkey = 0; + HKEY rootkey = 0; UINT rc = ERROR_FUNCTION_FAILED; if (context == MSIINSTALLCONTEXT_USERUNMANAGED) @@ -90,10 +90,10 @@ static UINT OpenSourceKey(LPCWSTR szProduct, HKEY* key, DWORD dwOptions, } if (create) - rc = RegCreateKeyW(rootkey, szSourceList, key); + rc = RegCreateKeyW(rootkey, L"SourceList", key); else { - rc = RegOpenKeyW(rootkey,szSourceList, key); + rc = RegOpenKeyW(rootkey, L"SourceList", key); if (rc != ERROR_SUCCESS) rc = ERROR_BAD_CONFIGURATION; } @@ -105,12 +105,11 @@ static UINT OpenSourceKey(LPCWSTR szProduct, HKEY* key, DWORD dwOptions, static UINT OpenMediaSubkey(HKEY rootkey, HKEY *key, BOOL create) { UINT rc; - static const WCHAR media[] = {'M','e','d','i','a',0}; if (create) - rc = RegCreateKeyW(rootkey, media, key); + rc = RegCreateKeyW(rootkey, L"Media", key); else - rc = RegOpenKeyW(rootkey,media, key); + rc = RegOpenKeyW(rootkey, L"Media", key); return rc; } @@ -118,12 +117,11 @@ static UINT OpenMediaSubkey(HKEY rootkey, HKEY *key, BOOL create) static UINT OpenNetworkSubkey(HKEY rootkey, HKEY *key, BOOL create) { UINT rc; - static const WCHAR net[] = {'N','e','t',0}; if (create) - rc = RegCreateKeyW(rootkey, net, key); + rc = RegCreateKeyW(rootkey, L"Net", key); else - rc = RegOpenKeyW(rootkey, net, key); + rc = RegOpenKeyW(rootkey, L"Net", key); return rc; } @@ -131,12 +129,11 @@ static UINT OpenNetworkSubkey(HKEY rootkey, HKEY *key, BOOL create) static UINT OpenURLSubkey(HKEY rootkey, HKEY *key, BOOL create) { UINT rc; - static const WCHAR URL[] = {'U','R','L',0}; if (create) - rc = RegCreateKeyW(rootkey, URL, key); + rc = RegCreateKeyW(rootkey, L"URL", key); else - rc = RegOpenKeyW(rootkey, URL, key); + rc = RegOpenKeyW(rootkey, L"URL", key); return rc; } @@ -208,7 +205,6 @@ UINT WINAPI MsiSourceListEnumMediaDisksW(LPCWSTR szProductCodeOrPatchCode, LPWSTR szVolumeLabel, LPDWORD pcchVolumeLabel, LPWSTR szDiskPrompt, LPDWORD pcchDiskPrompt) { - static const WCHAR fmt[] = {'#','%','d',0}; WCHAR squashed_pc[SQUASHED_GUID_SIZE], convert[11]; WCHAR *value = NULL, *data = NULL, *ptr, *ptr2; HKEY source, media; @@ -285,7 +281,7 @@ UINT WINAPI MsiSourceListEnumMediaDisksW(LPCWSTR szProductCodeOrPatchCode, { if (type == REG_DWORD) { - swprintf(convert, ARRAY_SIZE(convert), fmt, *data); + swprintf(convert, ARRAY_SIZE(convert), L"#%d", *data); size = lstrlenW(convert); ptr2 = convert; } @@ -307,7 +303,7 @@ UINT WINAPI MsiSourceListEnumMediaDisksW(LPCWSTR szProductCodeOrPatchCode, if (type == REG_DWORD) { - swprintf(convert, ARRAY_SIZE(convert), fmt, *ptr); + swprintf(convert, ARRAY_SIZE(convert), L"#%d", *ptr); size = lstrlenW(convert); ptr = convert; } @@ -412,7 +408,6 @@ UINT WINAPI MsiSourceListEnumSourcesW(LPCWSTR szProductCodeOrPatch, LPCWSTR szUs DWORD dwOptions, DWORD dwIndex, LPWSTR szSource, LPDWORD pcchSource) { - static const WCHAR format[] = {'%','d',0}; WCHAR squashed_pc[SQUASHED_GUID_SIZE], name[32]; HKEY source = NULL, subkey = NULL; LONG res; @@ -458,7 +453,7 @@ UINT WINAPI MsiSourceListEnumSourcesW(LPCWSTR szProductCodeOrPatch, LPCWSTR szUs goto done; } - swprintf(name, ARRAY_SIZE(name), format, dwIndex + 1); + swprintf(name, ARRAY_SIZE(name), L"%d", dwIndex + 1); res = RegQueryValueExW(subkey, name, 0, 0, (LPBYTE)szSource, pcchSource); if (res != ERROR_SUCCESS && res != ERROR_MORE_DATA) @@ -536,10 +531,9 @@ done: */ UINT WINAPI MsiSourceListGetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, - LPCWSTR szProperty, LPWSTR szValue, - LPDWORD pcchValue) + LPCWSTR szProperty, LPWSTR szValue, + LPDWORD pcchValue) { - static const WCHAR mediapack[] = {'M','e','d','i','a','P','a','c','k','a','g','e',0}; WCHAR *source, *ptr, squashed_pc[SQUASHED_GUID_SIZE]; HKEY sourcekey, media; DWORD size; @@ -579,7 +573,7 @@ UINT WINAPI MsiSourceListGetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid, } if (!wcscmp( szProperty, INSTALLPROPERTY_MEDIAPACKAGEPATHW )) - szProperty = mediapack; + szProperty = L"MediaPackage"; RegQueryValueExW(media, szProperty, 0, 0, (LPBYTE)szValue, pcchValue); RegCloseKey(media); @@ -591,7 +585,7 @@ UINT WINAPI MsiSourceListGetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid, 0, 0, NULL, &size); if (rc != ERROR_SUCCESS) { - static WCHAR szEmpty[1] = { '\0' }; + static WCHAR szEmpty[] = {0}; rc = ERROR_SUCCESS; source = NULL; ptr = szEmpty; @@ -709,8 +703,6 @@ UINT msi_set_last_used_source(LPCWSTR product, LPCWSTR usersid, UINT r; int index = 1; - static const WCHAR format[] = {'%','c',';','%','i',';','%','s',0}; - if (options & MSISOURCETYPE_NETWORK) typechar = 'n'; else if (options & MSISOURCETYPE_URL) @@ -736,7 +728,7 @@ UINT msi_set_last_used_source(LPCWSTR product, LPCWSTR usersid, return r; } - size = lstrlenW(format) + lstrlenW(value) + 7; + size = lstrlenW(L"%c;%d;%s") + lstrlenW(value) + 7; buffer = msi_alloc(size * sizeof(WCHAR)); if (!buffer) return ERROR_OUTOFMEMORY; @@ -748,7 +740,7 @@ UINT msi_set_last_used_source(LPCWSTR product, LPCWSTR usersid, return r; } - swprintf(buffer, size, format, typechar, index, value); + swprintf(buffer, size, L"%c;%d;%s", typechar, index, value); size = (lstrlenW(buffer) + 1) * sizeof(WCHAR); r = RegSetValueExW(source, INSTALLPROPERTY_LASTUSEDSOURCEW, 0, @@ -766,7 +758,6 @@ UINT WINAPI MsiSourceListSetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTEXT dwContext, DWORD dwOptions, LPCWSTR szProperty, LPCWSTR szValue) { - static const WCHAR media_package[] = {'M','e','d','i','a','P','a','c','k','a','g','e',0}; WCHAR squashed_pc[SQUASHED_GUID_SIZE]; HKEY sourcekey, media; LPCWSTR property; @@ -795,7 +786,7 @@ UINT WINAPI MsiSourceListSetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid, property = szProperty; if (!wcscmp( szProperty, INSTALLPROPERTY_MEDIAPACKAGEPATHW )) - property = media_package; + property = L"MediaPackage"; rc = OpenSourceKey(szProduct, &sourcekey, MSICODE_PRODUCT, dwContext, FALSE); if (rc != ERROR_SUCCESS) @@ -896,7 +887,7 @@ UINT WINAPI MsiSourceListAddSourceW( LPCWSTR szProduct, LPCWSTR szUserName, RegCloseKey(hkey); } - ret = MsiSourceListAddSourceExW(szProduct, sidstr, + ret = MsiSourceListAddSourceExW(szProduct, sidstr, context, MSISOURCETYPE_NETWORK, szSource, 0); if (sidstr) @@ -968,7 +959,6 @@ static void add_source_to_list(struct list *sourcelist, media_info *info, { media_info *iter; BOOL found = FALSE; - static const WCHAR fmt[] = {'%','i',0}; if (index) *index = 0; @@ -988,7 +978,7 @@ static void add_source_to_list(struct list *sourcelist, media_info *info, /* update the rest of the list */ if (found) - swprintf(iter->szIndex, ARRAY_SIZE(iter->szIndex), fmt, ++iter->index); + swprintf(iter->szIndex, ARRAY_SIZE(iter->szIndex), L"%d", ++iter->index); else if (index) (*index)++; } @@ -1052,10 +1042,9 @@ error: * MsiSourceListAddSourceExW (MSI.@) */ UINT WINAPI MsiSourceListAddSourceExW( LPCWSTR szProduct, LPCWSTR szUserSid, - MSIINSTALLCONTEXT dwContext, DWORD dwOptions, LPCWSTR szSource, + MSIINSTALLCONTEXT dwContext, DWORD dwOptions, LPCWSTR szSource, DWORD dwIndex) { - static const WCHAR fmt[] = {'%','i',0}; HKEY sourcekey, typekey; UINT rc; struct list sourcelist; @@ -1108,7 +1097,7 @@ UINT WINAPI MsiSourceListAddSourceExW( LPCWSTR szProduct, LPCWSTR szUserSid, return rc; } - postfix = (dwOptions & MSISOURCETYPE_NETWORK) ? szBackSlash : szForwardSlash; + postfix = (dwOptions & MSISOURCETYPE_NETWORK) ? L"\\" : L"/"; if (szSource[lstrlenW(szSource) - 1] == *postfix) source = strdupW(szSource); else @@ -1128,18 +1117,18 @@ UINT WINAPI MsiSourceListAddSourceExW( LPCWSTR szProduct, LPCWSTR szUserSid, if (count == 0) { - rc = RegSetValueExW(typekey, szOne, 0, REG_EXPAND_SZ, (LPBYTE)source, size); + rc = RegSetValueExW(typekey, L"1", 0, REG_EXPAND_SZ, (LPBYTE)source, size); goto done; } else if (dwIndex > count || dwIndex == 0) { - swprintf(name, ARRAY_SIZE(name), fmt, count + 1); + swprintf(name, ARRAY_SIZE(name), L"%d", count + 1); rc = RegSetValueExW(typekey, name, 0, REG_EXPAND_SZ, (LPBYTE)source, size); goto done; } else { - swprintf(name, ARRAY_SIZE(name), fmt, dwIndex); + swprintf(name, ARRAY_SIZE(name), L"%d", dwIndex); info = msi_alloc(sizeof(media_info)); if (!info) { @@ -1205,11 +1194,10 @@ UINT WINAPI MsiSourceListAddMediaDiskA(LPCSTR szProduct, LPCSTR szUserSid, /****************************************************************** * MsiSourceListAddMediaDiskW (MSI.@) */ -UINT WINAPI MsiSourceListAddMediaDiskW(LPCWSTR szProduct, LPCWSTR szUserSid, - MSIINSTALLCONTEXT dwContext, DWORD dwOptions, DWORD dwDiskId, +UINT WINAPI MsiSourceListAddMediaDiskW(LPCWSTR szProduct, LPCWSTR szUserSid, + MSIINSTALLCONTEXT dwContext, DWORD dwOptions, DWORD dwDiskId, LPCWSTR szVolumeLabel, LPCWSTR szDiskPrompt) { - static const WCHAR fmt[] = {'%','i',0}; HKEY sourcekey, mediakey; UINT rc; WCHAR *buffer, squashed_pc[SQUASHED_GUID_SIZE], szIndex[10]; @@ -1243,7 +1231,7 @@ UINT WINAPI MsiSourceListAddMediaDiskW(LPCWSTR szProduct, LPCWSTR szUserSid, OpenMediaSubkey(sourcekey, &mediakey, TRUE); - swprintf(szIndex, ARRAY_SIZE(szIndex), fmt, dwDiskId); + swprintf(szIndex, ARRAY_SIZE(szIndex), L"%d", dwDiskId); size = 2; if (szVolumeLabel) size += lstrlenW(szVolumeLabel); @@ -1254,7 +1242,7 @@ UINT WINAPI MsiSourceListAddMediaDiskW(LPCWSTR szProduct, LPCWSTR szUserSid, *buffer = '\0'; if (szVolumeLabel) lstrcpyW(buffer, szVolumeLabel); - lstrcatW(buffer, szSemiColon); + lstrcatW(buffer, L";"); if (szDiskPrompt) lstrcatW(buffer, szDiskPrompt); RegSetValueExW(mediakey, szIndex, 0, REG_SZ, (LPBYTE)buffer, size); diff --git a/dlls/msi/sql.y b/dlls/msi/sql.y index 7bdace72981..5b5c8bd7f8e 100644 --- a/dlls/msi/sql.y +++ b/dlls/msi/sql.y @@ -740,7 +740,6 @@ number: static LPWSTR parser_add_table( void *info, LPCWSTR list, LPCWSTR table ) { - static const WCHAR space[] = {' ',0}; DWORD len = lstrlenW( list ) + lstrlenW( table ) + 2; LPWSTR ret; @@ -748,7 +747,7 @@ static LPWSTR parser_add_table( void *info, LPCWSTR list, LPCWSTR table ) if( ret ) { lstrcpyW( ret, list ); - lstrcatW( ret, space ); + lstrcatW( ret, L" " ); lstrcatW( ret, table ); } return ret; diff --git a/dlls/msi/storages.c b/dlls/msi/storages.c index 521b6e89e83..336b40a3ae1 100644 --- a/dlls/msi/storages.c +++ b/dlls/msi/storages.c @@ -316,16 +316,16 @@ static UINT STORAGES_get_column_info( struct tagMSIVIEW *view, UINT n, LPCWSTR * switch (n) { case 1: - if (name) *name = szName; + if (name) *name = L"Name"; if (type) *type = MSITYPE_STRING | MSITYPE_VALID | MAX_STORAGES_NAME_LEN; break; case 2: - if (name) *name = szData; + if (name) *name = L"Data"; if (type) *type = MSITYPE_STRING | MSITYPE_VALID | MSITYPE_NULLABLE; break; } - if (table_name) *table_name = szStorages; + if (table_name) *table_name = L"_Storages"; if (temporary) *temporary = FALSE; return ERROR_SUCCESS; } diff --git a/dlls/msi/streams.c b/dlls/msi/streams.c index 6f8a436b5e4..1ef99c2ab05 100644 --- a/dlls/msi/streams.c +++ b/dlls/msi/streams.c @@ -278,16 +278,16 @@ static UINT STREAMS_get_column_info( struct tagMSIVIEW *view, UINT n, LPCWSTR *n switch (n) { case 1: - if (name) *name = szName; + if (name) *name = L"Name"; if (type) *type = MSITYPE_STRING | MSITYPE_VALID | MAX_STREAM_NAME_LEN; break; case 2: - if (name) *name = szData; + if (name) *name = L"Data"; if (type) *type = MSITYPE_STRING | MSITYPE_VALID | MSITYPE_NULLABLE; break; } - if (table_name) *table_name = szStreams; + if (table_name) *table_name = L"_Streams"; if (temporary) *temporary = FALSE; return ERROR_SUCCESS; } @@ -614,7 +614,7 @@ UINT msi_commit_streams( MSIDATABASE *db ) for (i = 0; i < db->num_streams; i++) { name = msi_string_lookup( db->strings, db->streams[i].str_index, NULL ); - if (!wcscmp( name, szSumInfo )) continue; + if (!wcscmp( name, L"\5SummaryInformation" )) continue; if (!(encname = encode_streamname( FALSE, name ))) return ERROR_OUTOFMEMORY; TRACE("saving stream %s as %s\n", debugstr_w(name), debugstr_w(encname)); diff --git a/dlls/msi/string.c b/dlls/msi/string.c index 5c6432ba1ed..0e250ff4527 100644 --- a/dlls/msi/string.c +++ b/dlls/msi/string.c @@ -77,7 +77,7 @@ static string_table *init_stringtable( int entries, UINT codepage ) st = msi_alloc( sizeof (string_table) ); if( !st ) - return NULL; + return NULL; if( entries < 1 ) entries = 1; @@ -85,7 +85,7 @@ static string_table *init_stringtable( int entries, UINT codepage ) if( !st->strings ) { msi_free( st ); - return NULL; + return NULL; } st->sorted = msi_alloc( sizeof (UINT) * entries ); @@ -347,7 +347,7 @@ const WCHAR *msi_string_lookup( const string_table *st, UINT id, int *len ) if( id == 0 ) { if (len) *len = 0; - return szEmpty; + return L""; } if( id >= st->maxcount ) return NULL; @@ -465,12 +465,12 @@ HRESULT msi_init_string_table( IStorage *stg ) UINT ret; /* create the StringPool stream... add the zero string to it*/ - ret = write_stream_data(stg, szStringPool, zero, sizeof zero, TRUE); + ret = write_stream_data(stg, L"_StringPool", zero, sizeof zero, TRUE); if (ret != ERROR_SUCCESS) return E_FAIL; /* create the StringData stream... make it zero length */ - ret = write_stream_data(stg, szStringData, NULL, 0, TRUE); + ret = write_stream_data(stg, L"_StringData", NULL, 0, TRUE); if (ret != ERROR_SUCCESS) return E_FAIL; @@ -485,10 +485,10 @@ string_table *msi_load_string_table( IStorage *stg, UINT *bytes_per_strref ) UINT r, datasize = 0, poolsize = 0, codepage; DWORD i, count, offset, len, n, refs; - r = read_stream_data( stg, szStringPool, TRUE, (BYTE **)&pool, &poolsize ); + r = read_stream_data( stg, L"_StringPool", TRUE, (BYTE **)&pool, &poolsize ); if( r != ERROR_SUCCESS) goto end; - r = read_stream_data( stg, szStringData, TRUE, (BYTE **)&data, &datasize ); + r = read_stream_data( stg, L"_StringData", TRUE, (BYTE **)&data, &datasize ); if( r != ERROR_SUCCESS) goto end; @@ -652,11 +652,11 @@ UINT msi_save_string_table( const string_table *st, IStorage *storage, UINT *byt } /* write the streams */ - r = write_stream_data( storage, szStringData, data, datasize, TRUE ); + r = write_stream_data( storage, L"_StringData", data, datasize, TRUE ); TRACE("Wrote StringData r=%08x\n", r); if( r ) goto err; - r = write_stream_data( storage, szStringPool, pool, poolsize, TRUE ); + r = write_stream_data( storage, L"_StringPool", pool, poolsize, TRUE ); TRACE("Wrote StringPool r=%08x\n", r); if( r ) goto err; diff --git a/dlls/msi/suminfo.c b/dlls/msi/suminfo.c index 94983cb86d9..19317713a3c 100644 --- a/dlls/msi/suminfo.c +++ b/dlls/msi/suminfo.c @@ -44,7 +44,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(msi); #include "pshpack1.h" -typedef struct { +typedef struct { WORD wByteOrder; WORD wFormat; DWORD dwOSVer; @@ -52,20 +52,20 @@ typedef struct { DWORD reserved; } PROPERTYSETHEADER; -typedef struct { +typedef struct { FMTID fmtid; DWORD dwOffset; } FORMATIDOFFSET; -typedef struct { +typedef struct { DWORD cbSection; DWORD cProperties; -} PROPERTYSECTIONHEADER; - -typedef struct { +} PROPERTYSECTIONHEADER; + +typedef struct { DWORD propid; DWORD dwOffset; -} PROPERTYIDOFFSET; +} PROPERTYIDOFFSET; typedef struct { DWORD type; @@ -79,7 +79,7 @@ typedef struct { } str; } u; } PROPERTY_DATA; - + #include "poppack.h" static HRESULT (WINAPI *pPropVariantChangeType) @@ -452,7 +452,7 @@ UINT msi_get_suminfo( IStorage *stg, UINT uiUpdateCount, MSISUMMARYINFO **ret ) if (!(si = create_suminfo( stg, uiUpdateCount ))) return ERROR_OUTOFMEMORY; - hr = IStorage_OpenStream( si->storage, szSumInfo, 0, STGM_READ|STGM_SHARE_EXCLUSIVE, 0, &stm ); + hr = IStorage_OpenStream( si->storage, L"\5SummaryInformation", 0, STGM_READ|STGM_SHARE_EXCLUSIVE, 0, &stm ); if (FAILED( hr )) { msiobj_release( &si->hdr ); @@ -479,7 +479,7 @@ UINT msi_get_db_suminfo( MSIDATABASE *db, UINT uiUpdateCount, MSISUMMARYINFO **r if (!(si = create_suminfo( db->storage, uiUpdateCount ))) return ERROR_OUTOFMEMORY; - r = msi_get_stream( db, szSumInfo, &stm ); + r = msi_get_stream( db, L"\5SummaryInformation", &stm ); if (r != ERROR_SUCCESS) { msiobj_release( &si->hdr ); @@ -498,7 +498,7 @@ UINT msi_get_db_suminfo( MSIDATABASE *db, UINT uiUpdateCount, MSISUMMARYINFO **r return ERROR_SUCCESS; } -UINT WINAPI MsiGetSummaryInformationW( MSIHANDLE hDatabase, +UINT WINAPI MsiGetSummaryInformationW( MSIHANDLE hDatabase, LPCWSTR szDatabase, UINT uiUpdateCount, MSIHANDLE *pHandle ) { MSISUMMARYINFO *si; @@ -569,7 +569,7 @@ UINT WINAPI MsiGetSummaryInformationW( MSIHANDLE hDatabase, return ret; } -UINT WINAPI MsiGetSummaryInformationA(MSIHANDLE hDatabase, +UINT WINAPI MsiGetSummaryInformationA(MSIHANDLE hDatabase, LPCSTR szDatabase, UINT uiUpdateCount, MSIHANDLE *pHandle) { LPWSTR szwDatabase = NULL; @@ -965,7 +965,7 @@ static UINT suminfo_persist( MSISUMMARYINFO *si ) HRESULT r; grfMode = STGM_CREATE | STGM_READWRITE | STGM_SHARE_EXCLUSIVE; - r = IStorage_CreateStream( si->storage, szSumInfo, grfMode, 0, 0, &stm ); + r = IStorage_CreateStream( si->storage, L"\5SummaryInformation", grfMode, 0, 0, &stm ); if( SUCCEEDED(r) ) { ret = save_summary_info( si, stm ); @@ -1244,7 +1244,6 @@ UINT WINAPI MsiCreateTransformSummaryInfoW( MSIHANDLE db, MSIHANDLE db_ref, LPCW UINT msi_load_suminfo_properties( MSIPACKAGE *package ) { - static const WCHAR packagecodeW[] = {'P','a','c','k','a','g','e','C','o','d','e',0}; MSISUMMARYINFO *si; WCHAR *package_code; UINT r, len; @@ -1285,7 +1284,7 @@ UINT msi_load_suminfo_properties( MSIPACKAGE *package ) return r; } - r = msi_set_property( package->db, packagecodeW, package_code, len ); + r = msi_set_property( package->db, L"PackageCode", package_code, len ); msi_free( package_code ); count = 0; diff --git a/dlls/msi/table.c b/dlls/msi/table.c index e9d6e8804e7..bfddd6125e9 100644 --- a/dlls/msi/table.c +++ b/dlls/msi/table.c @@ -71,21 +71,15 @@ struct tagMSITABLE }; /* information for default tables */ -static const WCHAR szTables[] = {'_','T','a','b','l','e','s',0}; -static const WCHAR szTable[] = {'T','a','b','l','e',0}; -static const WCHAR szColumns[] = {'_','C','o','l','u','m','n','s',0}; -static const WCHAR szNumber[] = {'N','u','m','b','e','r',0}; -static const WCHAR szType[] = {'T','y','p','e',0}; - static const MSICOLUMNINFO _Columns_cols[4] = { - { szColumns, 1, szTable, MSITYPE_VALID | MSITYPE_STRING | MSITYPE_KEY | 64, 0, NULL }, - { szColumns, 2, szNumber, MSITYPE_VALID | MSITYPE_KEY | 2, 2, NULL }, - { szColumns, 3, szName, MSITYPE_VALID | MSITYPE_STRING | 64, 4, NULL }, - { szColumns, 4, szType, MSITYPE_VALID | 2, 6, NULL }, + { L"_Columns", 1, L"Table", MSITYPE_VALID | MSITYPE_STRING | MSITYPE_KEY | 64, 0, NULL }, + { L"_Columns", 2, L"Number", MSITYPE_VALID | MSITYPE_KEY | 2, 2, NULL }, + { L"_Columns", 3, L"Name", MSITYPE_VALID | MSITYPE_STRING | 64, 4, NULL }, + { L"_Columns", 4, L"Type", MSITYPE_VALID | 2, 6, NULL }, }; static const MSICOLUMNINFO _Tables_cols[1] = { - { szTables, 1, szName, MSITYPE_VALID | MSITYPE_STRING | MSITYPE_KEY | 64, 0, NULL }, + { L"_Tables", 1, L"Name", MSITYPE_VALID | MSITYPE_STRING | MSITYPE_KEY | 64, 0, NULL }, }; #define MAX_STREAM_NAME 0x1f @@ -138,7 +132,7 @@ LPWSTR encode_streamname(BOOL bTable, LPCWSTR in) *p++ = 0x4840; count --; } - while( count -- ) + while( count -- ) { ch = *in++; if( !ch ) @@ -251,7 +245,7 @@ UINT read_stream_data( IStorage *stg, LPCWSTR stname, BOOL table, TRACE("%s -> %s\n",debugstr_w(stname),debugstr_w(encname)); - r = IStorage_OpenStream(stg, encname, NULL, + r = IStorage_OpenStream(stg, encname, NULL, STGM_READ | STGM_SHARE_EXCLUSIVE, 0, &stm); msi_free( encname ); if( FAILED( r ) ) @@ -272,7 +266,7 @@ UINT read_stream_data( IStorage *stg, LPCWSTR stname, BOOL table, WARN("Too big!\n"); goto end; } - + sz = stat.cbSize.QuadPart; data = msi_alloc( sz ); if( !data ) @@ -281,7 +275,7 @@ UINT read_stream_data( IStorage *stg, LPCWSTR stname, BOOL table, ret = ERROR_NOT_ENOUGH_MEMORY; goto end; } - + r = IStream_Read(stm, data, sz, &count ); if( FAILED( r ) || ( count != sz ) ) { @@ -312,7 +306,7 @@ UINT write_stream_data( IStorage *stg, LPCWSTR stname, LPWSTR encname; encname = encode_streamname(bTable, stname ); - r = IStorage_OpenStream( stg, encname, NULL, + r = IStorage_OpenStream( stg, encname, NULL, STGM_WRITE | STGM_SHARE_EXCLUSIVE, 0, &stm); if( FAILED(r) ) { @@ -520,12 +514,12 @@ static UINT get_defaulttablecolumns( MSIDATABASE *db, LPCWSTR name, MSICOLUMNINF TRACE("%s\n", debugstr_w(name)); - if (!wcscmp( name, szTables )) + if (!wcscmp( name, L"_Tables" )) { p = _Tables_cols; n = 1; } - else if (!wcscmp( name, szColumns )) + else if (!wcscmp( name, L"_Columns" )) { p = _Columns_cols; n = 4; @@ -603,7 +597,7 @@ static UINT get_table( MSIDATABASE *db, LPCWSTR name, MSITABLE **table_ret ) table->persistent = MSICONDITION_TRUE; lstrcpyW( table->name, name ); - if (!wcscmp( name, szTables ) || !wcscmp( name, szColumns )) + if (!wcscmp( name, L"_Tables" ) || !wcscmp( name, L"_Columns" )) table->persistent = MSICONDITION_NONE; r = table_get_column_info( db, name, &table->colinfo, &table->col_count ); @@ -645,7 +639,7 @@ static UINT get_tablecolumns( MSIDATABASE *db, LPCWSTR szTableName, MSICOLUMNINF if (r == ERROR_SUCCESS && *sz) return r; - r = get_table( db, szColumns, &table ); + r = get_table( db, L"_Columns", &table ); if (r != ERROR_SUCCESS) { ERR("couldn't load _Columns table\n"); @@ -766,7 +760,7 @@ UINT msi_create_table( MSIDATABASE *db, LPCWSTR name, column_info *col_info, } table_calc_column_offsets( db, table->colinfo, table->col_count); - r = TABLE_CreateView( db, szTables, &tv ); + r = TABLE_CreateView( db, L"_Tables", &tv ); TRACE("CreateView returned %x\n", r); if( r ) { @@ -801,7 +795,7 @@ UINT msi_create_table( MSIDATABASE *db, LPCWSTR name, column_info *col_info, if( persistent != MSICONDITION_FALSE ) { /* add each column to the _Columns table */ - r = TABLE_CreateView( db, szColumns, &tv ); + r = TABLE_CreateView( db, L"_Columns", &tv ); if( r ) goto err; @@ -969,8 +963,8 @@ BOOL TABLE_Exists( MSIDATABASE *db, LPCWSTR name ) UINT r, table_id, i; MSITABLE *table; - if( !wcscmp( name, szTables ) || !wcscmp( name, szColumns ) || - !wcscmp( name, szStreams ) || !wcscmp( name, szStorages ) ) + if( !wcscmp( name, L"_Tables" ) || !wcscmp( name, L"_Columns" ) || + !wcscmp( name, L"_Streams" ) || !wcscmp( name, L"_Storages" ) ) return TRUE; r = msi_string2id( db->strings, name, -1, &table_id ); @@ -980,10 +974,10 @@ BOOL TABLE_Exists( MSIDATABASE *db, LPCWSTR name ) return FALSE; } - r = get_table( db, szTables, &table ); + r = get_table( db, L"_Tables", &table ); if( r != ERROR_SUCCESS ) { - ERR("table %s not available\n", debugstr_w(szTables)); + ERR("table _Tables not available\n"); return FALSE; } @@ -1088,16 +1082,15 @@ static UINT get_stream_name( const MSITABLEVIEW *tv, UINT row, WCHAR **pstname ) } else { - static const WCHAR fmt[] = { '%','d',0 }; UINT n = bytes_per_column( tv->db, &tv->columns[i], LONG_STR_BYTES ); switch( n ) { case 2: - swprintf( number, ARRAY_SIZE(number), fmt, ival-0x8000 ); + swprintf( number, ARRAY_SIZE(number), L"%d", ival-0x8000 ); break; case 4: - swprintf( number, ARRAY_SIZE(number), fmt, ival^0x80000000 ); + swprintf( number, ARRAY_SIZE(number), L"%d", ival^0x80000000 ); break; default: ERR( "oops - unknown column width %d\n", n ); @@ -1107,7 +1100,7 @@ static UINT get_stream_name( const MSITABLEVIEW *tv, UINT row, WCHAR **pstname ) sval = number; } - len += lstrlenW( szDot ) + lstrlenW( sval ); + len += lstrlenW( L"." ) + lstrlenW( sval ); p = msi_realloc ( stname, len*sizeof(WCHAR) ); if ( !p ) { @@ -1116,7 +1109,7 @@ static UINT get_stream_name( const MSITABLEVIEW *tv, UINT row, WCHAR **pstname ) } stname = p; - lstrcatW( stname, szDot ); + lstrcatW( stname, L"." ); lstrcatW( stname, sval ); } else @@ -1295,15 +1288,6 @@ static UINT TABLE_get_row( struct tagMSIVIEW *view, UINT row, MSIRECORD **rec ) static UINT add_stream( MSIDATABASE *db, const WCHAR *name, IStream *data ) { - static const WCHAR insert[] = { - 'I','N','S','E','R','T',' ','I','N','T','O',' ', - '`','_','S','t','r','e','a','m','s','`',' ', - '(','`','N','a','m','e','`',',','`','D','a','t','a','`',')',' ', - 'V','A','L','U','E','S',' ','(','?',',','?',')',0}; - static const WCHAR update[] = { - 'U','P','D','A','T','E',' ','`','_','S','t','r','e','a','m','s','`',' ', - 'S','E','T',' ','`','D','a','t','a','`',' ','=',' ','?',' ', - 'W','H','E','R','E',' ','`','N','a','m','e','`',' ','=',' ','?',0}; MSIQUERY *query; MSIRECORD *rec; UINT r; @@ -1321,7 +1305,7 @@ static UINT add_stream( MSIDATABASE *db, const WCHAR *name, IStream *data ) if (r != ERROR_SUCCESS) goto done; - r = MSI_DatabaseOpenViewW( db, insert, &query ); + r = MSI_DatabaseOpenViewW( db, L"INSERT INTO `_Streams` (`Name`,`Data`) VALUES (?,?)", &query ); if (r != ERROR_SUCCESS) goto done; @@ -1342,7 +1326,7 @@ static UINT add_stream( MSIDATABASE *db, const WCHAR *name, IStream *data ) if (r != ERROR_SUCCESS) goto done; - r = MSI_DatabaseOpenViewW( db, update, &query ); + r = MSI_DatabaseOpenViewW( db, L"UPDATE `_Streams` SET `Data` = ? WHERE `Name` = ?", &query ); if (r != ERROR_SUCCESS) goto done; @@ -1560,7 +1544,7 @@ static UINT TABLE_execute( struct tagMSIVIEW *view, MSIRECORD *record ) static UINT TABLE_close( struct tagMSIVIEW *view ) { TRACE("%p\n", view ); - + return ERROR_SUCCESS; } @@ -1977,7 +1961,7 @@ static UINT TABLE_remove_column(struct tagMSIVIEW *view, UINT number) MSI_RecordSetStringW(rec, 1, tv->name); MSI_RecordSetInteger(rec, 2, number); - r = TABLE_CreateView(tv->db, szColumns, &columns); + r = TABLE_CreateView(tv->db, L"_Columns", &columns); if (r != ERROR_SUCCESS) { msiobj_release(&rec->hdr); @@ -2110,7 +2094,7 @@ static UINT TABLE_add_column(struct tagMSIVIEW *view, LPCWSTR column, MSI_RecordSetStringW(rec, 3, column); MSI_RecordSetInteger(rec, 4, type); - r = TABLE_CreateView(tv->db, szColumns, &columns); + r = TABLE_CreateView(tv->db, L"_Columns", &columns); if (r != ERROR_SUCCESS) { tv->table->col_count--; @@ -2155,7 +2139,7 @@ static UINT TABLE_drop(struct tagMSIVIEW *view) MSI_RecordSetStringW(rec, 1, tv->name); - r = TABLE_CreateView(tv->db, szTables, &tables); + r = TABLE_CreateView(tv->db, L"_Tables", &tables); if (r != ERROR_SUCCESS) { msiobj_release(&rec->hdr); @@ -2210,9 +2194,9 @@ UINT TABLE_CreateView( MSIDATABASE *db, LPCWSTR name, MSIVIEW **view ) TRACE("%p %s %p\n", db, debugstr_w(name), view ); - if ( !wcscmp( name, szStreams ) ) + if ( !wcscmp( name, L"_Streams" ) ) return STREAMS_CreateView( db, view ); - else if ( !wcscmp( name, szStorages ) ) + else if ( !wcscmp( name, L"_Storages" ) ) return STORAGES_CreateView( db, view ); sz = FIELD_OFFSET( MSITABLEVIEW, name[lstrlenW( name ) + 1] ); @@ -2345,13 +2329,13 @@ static UINT TransformView_set_row( MSIVIEW *view, UINT row, MSIRECORD *rec, UINT WCHAR *key; UINT i, p, r, len, qlen; - if (!wcscmp( tv->name, szColumns )) + if (!wcscmp( tv->name, L"_Columns" )) { ERR( "trying to modify existing column\n" ); return ERROR_INSTALL_TRANSFORM_FAILURE; } - if (!wcscmp( tv->name, szTables )) + if (!wcscmp( tv->name, L"_Tables" )) { ERR( "trying to modify existing table\n" ); return ERROR_INSTALL_TRANSFORM_FAILURE; @@ -2578,10 +2562,10 @@ static UINT TransformView_insert_row( MSIVIEW *view, MSIRECORD *rec, UINT row, B int len; UINT r; - if (!wcscmp(tv->name, szTables)) + if (!wcscmp(tv->name, L"_Tables")) return TransformView_create_table( tv, rec ); - if (!wcscmp(tv->name, szColumns)) + if (!wcscmp(tv->name, L"_Columns")) return TransformView_add_column( tv, rec ); key = create_key_string( tv, rec ); @@ -2671,13 +2655,13 @@ static UINT TransformView_delete_row( MSIVIEW *view, UINT row ) MSIRECORD *rec; MSIQUERY *q; - if (!wcscmp( tv->name, szColumns )) + if (!wcscmp( tv->name, L"_Columns" )) { ERR("trying to remove column\n"); return ERROR_INSTALL_TRANSFORM_FAILURE; } - if (!wcscmp( tv->name, szTables )) + if (!wcscmp( tv->name, L"_Tables" )) return TransformView_drop_table( tv, row ); r = msi_view_get_row( tv->db, view, row, &rec ); @@ -3296,7 +3280,7 @@ static UINT msi_table_load_transform( MSIDATABASE *db, IStorage *stg, UINT number = MSI_NULL_INTEGER; UINT row = 0; - if (!wcscmp( name, szColumns )) + if (!wcscmp( name, L"_Columns" )) { MSI_RecordGetStringW( rec, 1, table, &sz ); number = MSI_RecordGetInteger( rec, 2 ); @@ -3358,7 +3342,7 @@ static UINT msi_table_load_transform( MSIDATABASE *db, IStorage *stg, } if (!(err_cond & MSITRANSFORM_ERROR_VIEWTRANSFORM) && - !wcscmp( name, szColumns )) + !wcscmp( name, L"_Columns" )) msi_update_table_columns( db, table ); msiobj_release( &rec->hdr ); @@ -3422,8 +3406,8 @@ UINT msi_table_apply_transform( MSIDATABASE *db, IStorage *stg, int err_cond ) if ( name[0] != 0x4840 ) continue; - if ( !wcscmp( name+1, szStringPool ) || - !wcscmp( name+1, szStringData ) ) + if ( !wcscmp( name+1, L"_StringPool" ) || + !wcscmp( name+1, L"_StringData" ) ) continue; transform = msi_alloc_zero( sizeof(TRANSFORMDATA) ); @@ -3434,11 +3418,11 @@ UINT msi_table_apply_transform( MSIDATABASE *db, IStorage *stg, int err_cond ) transform->name = strdupW( name + 1 ); - if ( !wcscmp( transform->name, szTables ) ) + if ( !wcscmp( transform->name, L"_Tables" ) ) tables = transform; - else if (!wcscmp( transform->name, szColumns ) ) + else if (!wcscmp( transform->name, L"_Columns" ) ) columns = transform; - else if (!wcscmp( transform->name, szProperty )) + else if (!wcscmp( transform->name, L"Property" )) property_update = TRUE; TRACE("transform contains stream %s\n", debugstr_w(name)); @@ -3462,6 +3446,7 @@ UINT msi_table_apply_transform( MSIDATABASE *db, IStorage *stg, int err_cond ) L"`Table` CHAR(0) NOT NULL TEMPORARY, `Column` CHAR(0) NOT NULL TEMPORARY, " L"`Row` CHAR(0) TEMPORARY, `Data` CHAR(0) TEMPORARY, `Current` CHAR(0) TEMPORARY " L"PRIMARY KEY `Table`, `Column`, `Row` ) HOLD"; + MSIQUERY *query; UINT r; @@ -3506,8 +3491,8 @@ UINT msi_table_apply_transform( MSIDATABASE *db, IStorage *stg, int err_cond ) { transform = LIST_ENTRY( list_head( &transforms ), TRANSFORMDATA, entry ); - if ( wcscmp( transform->name, szColumns ) && - wcscmp( transform->name, szTables ) && + if ( wcscmp( transform->name, L"_Columns" ) && + wcscmp( transform->name, L"_Tables" ) && ret == ERROR_SUCCESS ) { ret = msi_table_load_transform( db, stg, strings, transform, bytes_per_strref, err_cond ); diff --git a/dlls/msi/upgrade.c b/dlls/msi/upgrade.c index 60b5c74f40b..18649fced3d 100644 --- a/dlls/msi/upgrade.c +++ b/dlls/msi/upgrade.c @@ -97,13 +97,13 @@ static void append_productcode( MSIPACKAGE *package, const WCHAR *action_prop, c if (prop) { lstrcpyW( newprop, prop ); - lstrcatW( newprop, szSemiColon ); + lstrcatW( newprop, L";" ); } else newprop[0] = 0; lstrcatW( newprop, product ); r = msi_set_property( package->db, action_prop, newprop, -1 ); - if (r == ERROR_SUCCESS && !wcscmp( action_prop, szSourceDir )) + if (r == ERROR_SUCCESS && !wcscmp( action_prop, L"SourceDir" )) msi_reset_source_folders( package ); TRACE( "related product property %s now %s\n", debugstr_w(action_prop), debugstr_w(newprop) ); @@ -210,35 +210,32 @@ static UINT ITERATE_FindRelatedProducts(MSIRECORD *rec, LPVOID param) } RegCloseKey(hkey); msiobj_release( &uirow->hdr); - + return ERROR_SUCCESS; } UINT ACTION_FindRelatedProducts(MSIPACKAGE *package) { - static const WCHAR query[] = { - 'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ', - '`','U','p','g','r','a','d','e','`',0}; MSIQUERY *view; UINT rc; - if (msi_get_property_int(package->db, szInstalled, 0)) + if (msi_get_property_int(package->db, L"Installed", 0)) { TRACE("Skipping FindRelatedProducts action: product already installed\n"); return ERROR_SUCCESS; } - if (msi_action_is_unique(package, szFindRelatedProducts)) + if (msi_action_is_unique(package, L"FindRelatedProducts")) { TRACE("Skipping FindRelatedProducts action: already done in UI sequence\n"); return ERROR_SUCCESS; } else - msi_register_unique_action(package, szFindRelatedProducts); + msi_register_unique_action(package, L"FindRelatedProducts"); - rc = MSI_DatabaseOpenViewW(package->db, query, &view); + rc = MSI_DatabaseOpenViewW(package->db, L"SELECT * FROM `Upgrade`", &view); if (rc != ERROR_SUCCESS) return ERROR_SUCCESS; - + rc = MSI_IterateRecords(view, NULL, ITERATE_FindRelatedProducts, package); msiobj_release(&view->hdr); return rc; diff --git a/dlls/msi/where.c b/dlls/msi/where.c index 07064f0f980..2a64de8cd9d 100644 --- a/dlls/msi/where.c +++ b/dlls/msi/where.c @@ -1235,7 +1235,7 @@ UINT WHERE_CreateView( MSIDATABASE *db, MSIVIEW **view, LPWSTR tables, wv = msi_alloc_zero( sizeof *wv ); if( !wv ) return ERROR_FUNCTION_FAILED; - + /* fill the structure */ wv->view.ops = &where_ops; msiobj_addref( &db->hdr );