diff --git a/dlls/msi/msi.c b/dlls/msi/msi.c index 6387b0a9372..71de13a8ffc 100644 --- a/dlls/msi/msi.c +++ b/dlls/msi/msi.c @@ -53,8 +53,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(msi); BOOL is_wow64; -static const WCHAR installerW[] = {'\\','I','n','s','t','a','l','l','e','r',0}; - UINT msi_locate_product(LPCWSTR szProduct, MSIINSTALLCONTEXT *context) { HKEY hkey = NULL; @@ -109,10 +107,6 @@ static UINT MSI_OpenProductW(LPCWSTR szProduct, MSIPACKAGE **package) LPWSTR path; MSIINSTALLCONTEXT context; - static const WCHAR managed[] = { - 'M','a','n','a','g','e','d','L','o','c','a','l','P','a','c','k','a','g','e',0}; - static const WCHAR local[] = {'L','o','c','a','l','P','a','c','k','a','g','e',0}; - TRACE("%s %p\n", debugstr_w(szProduct), package); r = msi_locate_product(szProduct, &context); @@ -124,9 +118,9 @@ static UINT MSI_OpenProductW(LPCWSTR szProduct, MSIPACKAGE **package) return ERROR_UNKNOWN_PRODUCT; if (context == MSIINSTALLCONTEXT_USERMANAGED) - path = msi_reg_get_val_str(props, managed); + path = msi_reg_get_val_str(props, L"ManagedLocalPackage"); else - path = msi_reg_get_val_str(props, local); + path = msi_reg_get_val_str(props, L"LocalPackage"); r = ERROR_UNKNOWN_PRODUCT; @@ -250,7 +244,7 @@ UINT WINAPI MsiInstallProductW(LPCWSTR szPackagePath, LPCWSTR szCommandLine) if (!*szPackagePath) return ERROR_PATH_NOT_FOUND; - reinstallmode = msi_get_command_line_option(szCommandLine, szReinstallMode, &len); + reinstallmode = msi_get_command_line_option(szCommandLine, L"REINSTALLMODE", &len); if (reinstallmode) { while (len > 0) @@ -292,7 +286,7 @@ UINT WINAPI MsiReinstallProductW(LPCWSTR szProduct, DWORD dwReinstallMode) { TRACE("%s %08x\n", debugstr_w(szProduct), dwReinstallMode); - return MsiReinstallFeatureW(szProduct, szAll, dwReinstallMode); + return MsiReinstallFeatureW(szProduct, L"ALL", dwReinstallMode); } UINT WINAPI MsiApplyPatchA(LPCSTR szPatchPackage, LPCSTR szInstallPackage, @@ -376,9 +370,6 @@ static UINT MSI_ApplyPatchW(LPCWSTR szPatchPackage, LPCWSTR szProductCode, LPCWS LPWSTR cmd, *codes = NULL; BOOL succeeded = FALSE; - static const WCHAR fmt[] = {'%','s',' ','P','A','T','C','H','=','"','%','s','"',0}; - static const WCHAR empty[] = {0}; - if (!szPatchPackage || !szPatchPackage[0]) return ERROR_INVALID_PARAMETER; @@ -386,16 +377,16 @@ static UINT MSI_ApplyPatchW(LPCWSTR szPatchPackage, LPCWSTR szProductCode, LPCWS return r; if (!szCommandLine) - cmd_ptr = empty; + cmd_ptr = L""; - size = lstrlenW(cmd_ptr) + lstrlenW(fmt) + lstrlenW(szPatchPackage) + 1; + size = lstrlenW(cmd_ptr) + lstrlenW(L"%s PATCH=\"%s\"") + lstrlenW(szPatchPackage) + 1; cmd = msi_alloc(size * sizeof(WCHAR)); if (!cmd) { msi_free(codes); return ERROR_OUTOFMEMORY; } - swprintf(cmd, size, fmt, cmd_ptr, szPatchPackage); + swprintf(cmd, size, L"%s PATCH=\"%s\"", cmd_ptr, szPatchPackage); if (szProductCode) r = MsiConfigureProductExW(szProductCode, INSTALLLEVEL_DEFAULT, INSTALLSTATE_DEFAULT, cmd); @@ -603,9 +594,6 @@ static UINT MSI_ApplicablePatchW( MSIPACKAGE *package, LPCWSTR patch ) /* IXMLDOMDocument should be set to XPath mode already */ static UINT MSI_ApplicablePatchXML( MSIPACKAGE *package, IXMLDOMDocument *desc ) { - static const WCHAR queryW[] = {'M','s','i','P','a','t','c','h','/', - 'T','a','r','g','e','t','P','r','o','d','u','c','t','/', - 'T','a','r','g','e','t','P','r','o','d','u','c','t','C','o','d','e',0}; UINT r = ERROR_FUNCTION_FAILED; IXMLDOMNodeList *list; LPWSTR product_code; @@ -613,7 +601,7 @@ static UINT MSI_ApplicablePatchXML( MSIPACKAGE *package, IXMLDOMDocument *desc ) HRESULT hr; BSTR s; - 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 */ @@ -621,7 +609,7 @@ static UINT MSI_ApplicablePatchXML( MSIPACKAGE *package, IXMLDOMDocument *desc ) return ERROR_SUCCESS; } - s = SysAllocString(queryW); + s = SysAllocString( L"MsiPatch/TargetProduct/TargetProductCode" ); hr = IXMLDOMDocument_selectNodes( desc, s, &list ); SysFreeString(s); if (hr != S_OK) @@ -808,7 +796,7 @@ static UINT open_package( const WCHAR *product, const WCHAR *usersid, r = MSIREG_OpenInstallProps( product, context, usersid, &props, FALSE ); if (r != ERROR_SUCCESS) return ERROR_BAD_CONFIGURATION; - if ((localpath = msi_reg_get_val_str( props, szLocalPackage ))) + if ((localpath = msi_reg_get_val_str( props, L"LocalPackage" ))) { lstrcpyW( sourcepath, localpath ); msi_free( localpath ); @@ -858,15 +846,6 @@ UINT WINAPI MsiConfigureProductExW(LPCWSTR szProduct, int iInstallLevel, WCHAR sourcepath[MAX_PATH], filename[MAX_PATH]; LPWSTR commandline; - static const WCHAR szInstalled[] = { - ' ','I','n','s','t','a','l','l','e','d','=','1',0}; - static const WCHAR szMaxInstallLevel[] = { - ' ','I','N','S','T','A','L','L','L','E','V','E','L','=','3','2','7','6','7',0}; - static const WCHAR szRemoveAll[] = { - ' ','R','E','M','O','V','E','=','A','L','L',0}; - static const WCHAR szMachine[] = { - ' ','A','L','L','U','S','E','R','S','=','1',0}; - TRACE("%s %d %d %s\n",debugstr_w(szProduct), iInstallLevel, eInstallState, debugstr_w(szCommandLine)); @@ -888,19 +867,19 @@ UINT WINAPI MsiConfigureProductExW(LPCWSTR szProduct, int iInstallLevel, if (r != ERROR_SUCCESS) return r; - sz = lstrlenW(szInstalled) + 1; + sz = lstrlenW(L" Installed=1") + 1; if (szCommandLine) sz += lstrlenW(szCommandLine); if (eInstallState != INSTALLSTATE_DEFAULT) - sz += lstrlenW(szMaxInstallLevel); + sz += lstrlenW(L" INSTALLLEVEL=32767"); if (eInstallState == INSTALLSTATE_ABSENT) - sz += lstrlenW(szRemoveAll); + sz += lstrlenW(L" REMOVE=ALL"); if (context == MSIINSTALLCONTEXT_MACHINE) - sz += lstrlenW(szMachine); + sz += lstrlenW(L" ALLUSERS=1"); commandline = msi_alloc(sz * sizeof(WCHAR)); if (!commandline) @@ -911,16 +890,16 @@ UINT WINAPI MsiConfigureProductExW(LPCWSTR szProduct, int iInstallLevel, commandline[0] = 0; if (szCommandLine) - lstrcpyW(commandline,szCommandLine); + lstrcpyW(commandline, szCommandLine); if (eInstallState != INSTALLSTATE_DEFAULT) - lstrcatW(commandline, szMaxInstallLevel); + lstrcatW(commandline, L" INSTALLLEVEL=32767"); if (eInstallState == INSTALLSTATE_ABSENT) - lstrcatW(commandline, szRemoveAll); + lstrcatW(commandline, L" REMOVE=ALL"); if (context == MSIINSTALLCONTEXT_MACHINE) - lstrcatW(commandline, szMachine); + lstrcatW(commandline, L" ALLUSERS=1"); sz = sizeof(sourcepath); MsiSourceListGetInfoW(szProduct, NULL, context, MSICODE_PRODUCT, @@ -1041,7 +1020,7 @@ UINT WINAPI MsiGetProductCodeW(LPCWSTR szComponent, LPWSTR szBuffer) return ERROR_INVALID_PARAMETER; if (MSIREG_OpenUserDataComponentKey(szComponent, NULL, &compkey, FALSE) != ERROR_SUCCESS && - MSIREG_OpenUserDataComponentKey(szComponent, szLocalSid, &compkey, FALSE) != ERROR_SUCCESS) + MSIREG_OpenUserDataComponentKey(szComponent, L"S-1-5-18", &compkey, FALSE) != ERROR_SUCCESS) { return ERROR_UNKNOWN_COMPONENT; } @@ -1102,12 +1081,11 @@ static WCHAR *reg_get_value( HKEY hkey, const WCHAR *name, DWORD *type ) if (*type == REG_SZ) return msi_reg_get_val_str( hkey, name ); if (*type == REG_DWORD) { - static const WCHAR fmt[] = {'%','u',0}; WCHAR temp[11]; DWORD val; if (!msi_reg_get_val_dword( hkey, name, &val )) return NULL; - swprintf( temp, ARRAY_SIZE(temp), fmt, val ); + swprintf( temp, ARRAY_SIZE(temp), L"%u", val ); return strdupW( temp ); } @@ -1119,10 +1097,6 @@ static UINT MSI_GetProductInfo(LPCWSTR szProduct, LPCWSTR szAttribute, awstring *szValue, LPDWORD pcchValueBuf) { static WCHAR empty[] = {0}; - static const WCHAR sourcelist[] = {'S','o','u','r','c','e','L','i','s','t',0}; - static const WCHAR display_name[] = {'D','i','s','p','l','a','y','N','a','m','e',0}; - static const WCHAR display_version[] = {'D','i','s','p','l','a','y','V','e','r','s','i','o','n',0}; - static const WCHAR assignment[] = {'A','s','s','i','g','n','m','e','n','t',0}; MSIINSTALLCONTEXT context = MSIINSTALLCONTEXT_USERUNMANAGED; UINT r = ERROR_UNKNOWN_PROPERTY; HKEY prodkey, userdata, source; @@ -1182,9 +1156,9 @@ static UINT MSI_GetProductInfo(LPCWSTR szProduct, LPCWSTR szAttribute, } if (!wcscmp( szAttribute, INSTALLPROPERTY_INSTALLEDPRODUCTNAMEW )) - szAttribute = display_name; + szAttribute = L"DisplayName"; else if (!wcscmp( szAttribute, INSTALLPROPERTY_VERSIONSTRINGW )) - szAttribute = display_version; + szAttribute = L"DisplayVersion"; val = reg_get_value(userdata, szAttribute, &type); if (!val) @@ -1209,11 +1183,11 @@ static UINT MSI_GetProductInfo(LPCWSTR szProduct, LPCWSTR szAttribute, } if (!wcscmp( szAttribute, INSTALLPROPERTY_ASSIGNMENTTYPEW )) - szAttribute = assignment; + szAttribute = L"Assignment"; if (!wcscmp( szAttribute, INSTALLPROPERTY_PACKAGENAMEW )) { - res = RegOpenKeyW(prodkey, sourcelist, &source); + res = RegOpenKeyW(prodkey, L"SourceList", &source); if (res != ERROR_SUCCESS) { r = ERROR_UNKNOWN_PRODUCT; @@ -1426,14 +1400,6 @@ UINT WINAPI MsiGetProductInfoExW(LPCWSTR szProductCode, LPCWSTR szUserSid, MSIINSTALLCONTEXT dwContext, LPCWSTR szProperty, LPWSTR szValue, LPDWORD pcchValue) { - static const WCHAR five[] = {'5',0}; - static const WCHAR displayname[] = { - 'D','i','s','p','l','a','y','N','a','m','e',0}; - static const WCHAR displayversion[] = { - 'D','i','s','p','l','a','y','V','e','r','s','i','o','n',0}; - static const WCHAR managed_local_package[] = { - 'M','a','n','a','g','e','d','L','o','c','a','l', - 'P','a','c','k','a','g','e',0}; WCHAR *val = NULL, squashed_pc[SQUASHED_GUID_SIZE]; LPCWSTR package = NULL; HKEY props = NULL, prod, classes = NULL, managed, hkey = NULL; @@ -1478,7 +1444,7 @@ UINT WINAPI MsiGetProductInfoExW(LPCWSTR szProductCode, LPCWSTR szUserSid, } else if (dwContext == MSIINSTALLCONTEXT_USERMANAGED) { - package = managed_local_package; + package = L"ManagedLocalPackage"; if (!props && !managed) goto done; @@ -1522,13 +1488,13 @@ UINT WINAPI MsiGetProductInfoExW(LPCWSTR szProductCode, LPCWSTR szUserSid, msi_free(val); if (!wcscmp( szProperty, INSTALLPROPERTY_INSTALLEDPRODUCTNAMEW )) - szProperty = displayname; + szProperty = L"DisplayName"; else if (!wcscmp( szProperty, INSTALLPROPERTY_VERSIONSTRINGW )) - szProperty = displayversion; + szProperty = L"DisplayVersion"; val = reg_get_value(props, szProperty, &type); if (!val) - val = strdupW(szEmpty); + val = strdupW(L""); r = msi_copy_outval(val, szValue, pcchValue); } @@ -1553,7 +1519,7 @@ UINT WINAPI MsiGetProductInfoExW(LPCWSTR szProductCode, LPCWSTR szUserSid, val = reg_get_value(hkey, szProperty, &type); if (!val) - val = strdupW(szEmpty); + val = strdupW(L""); r = msi_copy_outval(val, szValue, pcchValue); } @@ -1568,10 +1534,10 @@ UINT WINAPI MsiGetProductInfoExW(LPCWSTR szProductCode, LPCWSTR szUserSid, goto done; msi_free(val); - val = strdupW(five); + val = strdupW(L"5"); } else - val = strdupW(szOne); + val = strdupW(L"1"); r = msi_copy_outval(val, szValue, pcchValue); goto done; @@ -1579,13 +1545,13 @@ UINT WINAPI MsiGetProductInfoExW(LPCWSTR szProductCode, LPCWSTR szUserSid, else if (props && (val = reg_get_value(props, package, &type))) { msi_free(val); - val = strdupW(five); + val = strdupW(L"5"); r = msi_copy_outval(val, szValue, pcchValue); goto done; } if (prod || managed) - val = strdupW(szOne); + val = strdupW(L"1"); else goto done; @@ -1597,7 +1563,7 @@ UINT WINAPI MsiGetProductInfoExW(LPCWSTR szProductCode, LPCWSTR szUserSid, goto done; /* FIXME */ - val = strdupW(szEmpty); + val = strdupW(L""); r = msi_copy_outval(val, szValue, pcchValue); } else @@ -1700,8 +1666,6 @@ UINT WINAPI MsiGetPatchInfoExW(LPCWSTR szPatchCode, LPCWSTR szProductCode, LPCWSTR szUserSid, MSIINSTALLCONTEXT dwContext, LPCWSTR szProperty, LPWSTR lpValue, DWORD *pcchValue) { - static const WCHAR szManagedPackage[] = - {'M','a','n','a','g','e','d','L','o','c','a','l','P','a','c','k','a','g','e',0}; WCHAR *val = NULL, squashed_pc[SQUASHED_GUID_SIZE], squashed_patch[SQUASHED_GUID_SIZE]; HKEY udprod = 0, prod = 0, props = 0; HKEY patch = 0, patches = 0; @@ -1735,7 +1699,7 @@ UINT WINAPI MsiGetPatchInfoExW(LPCWSTR szPatchCode, LPCWSTR szProductCode, if (dwContext == MSIINSTALLCONTEXT_MACHINE && szUserSid) return ERROR_INVALID_PARAMETER; - if (szUserSid && !wcscmp( szUserSid, szLocalSid )) + if (szUserSid && !wcscmp( szUserSid, L"S-1-5-18" )) return ERROR_INVALID_PARAMETER; if (MSIREG_OpenUserDataProductKey(szProductCode, dwContext, NULL, @@ -1748,7 +1712,7 @@ UINT WINAPI MsiGetPatchInfoExW(LPCWSTR szPatchCode, LPCWSTR szProductCode, r = ERROR_UNKNOWN_PATCH; - res = RegOpenKeyExW(udprod, szPatches, 0, KEY_READ, &patches); + res = RegOpenKeyExW(udprod, L"Patches", 0, KEY_READ, &patches); if (res != ERROR_SUCCESS) goto done; @@ -1762,7 +1726,7 @@ UINT WINAPI MsiGetPatchInfoExW(LPCWSTR szPatchCode, LPCWSTR szProductCode, &prod, FALSE) != ERROR_SUCCESS) goto done; - res = RegOpenKeyExW(prod, szPatches, 0, KEY_ALL_ACCESS, &prodpatches); + res = RegOpenKeyExW(prod, L"Patches", 0, KEY_ALL_ACCESS, &prodpatches); if (res != ERROR_SUCCESS) goto done; @@ -1778,13 +1742,13 @@ UINT WINAPI MsiGetPatchInfoExW(LPCWSTR szPatchCode, LPCWSTR szProductCode, if (!wcscmp( szProperty, INSTALLPROPERTY_LOCALPACKAGEW )) { if (dwContext == MSIINSTALLCONTEXT_USERMANAGED) - szProperty = szManagedPackage; + szProperty = L"ManagedLocalPackage"; datakey = udpatch; } else if (!wcscmp( szProperty, INSTALLPROPERTY_INSTALLDATEW )) { datakey = patch; - szProperty = szInstalled; + szProperty = L"Installed"; } else if (!wcscmp( szProperty, INSTALLPROPERTY_UNINSTALLABLEW ) || !wcscmp( szProperty, INSTALLPROPERTY_PATCHSTATEW ) || @@ -1802,7 +1766,7 @@ UINT WINAPI MsiGetPatchInfoExW(LPCWSTR szPatchCode, LPCWSTR szProductCode, val = reg_get_value(datakey, szProperty, &type); if (!val) - val = strdupW(szEmpty); + val = strdupW(L""); r = ERROR_SUCCESS; @@ -2048,7 +2012,7 @@ UINT WINAPI MsiEnumComponentCostsW( MSIHANDLE handle, LPCWSTR component, DWORD i return r; } - if (!msi_get_property_int( package->db, szCostingComplete, 0 )) + if (!msi_get_property_int( package->db, L"CostingComplete", 0 )) { msiobj_release( &package->hdr ); return ERROR_FUNCTION_NOT_CALLED; @@ -2145,19 +2109,14 @@ static BOOL msi_comp_find_package(LPCWSTR prodcode, MSIINSTALLCONTEXT context) LONG res; UINT r; - static const WCHAR local_package[] = {'L','o','c','a','l','P','a','c','k','a','g','e',0}; - static const WCHAR managed_local_package[] = { - 'M','a','n','a','g','e','d','L','o','c','a','l','P','a','c','k','a','g','e',0 - }; - r = MSIREG_OpenInstallProps(prodcode, context, NULL, &hkey, FALSE); if (r != ERROR_SUCCESS) return FALSE; if (context == MSIINSTALLCONTEXT_USERMANAGED) - package = managed_local_package; + package = L"ManagedLocalPackage"; else - package = local_package; + package = L"LocalPackage"; sz = 0; res = RegQueryValueExW(hkey, package, NULL, NULL, NULL, &sz); @@ -2175,7 +2134,7 @@ static UINT msi_comp_find_prodcode(WCHAR *squashed_pc, UINT r; if (context == MSIINSTALLCONTEXT_MACHINE) - r = MSIREG_OpenUserDataComponentKey(comp, szLocalSid, &hkey, FALSE); + r = MSIREG_OpenUserDataComponentKey(comp, L"S-1-5-18", &hkey, FALSE); else r = MSIREG_OpenUserDataComponentKey(comp, NULL, &hkey, FALSE); @@ -2308,7 +2267,7 @@ INSTALLSTATE WINAPI MsiQueryProductStateW(LPCWSTR szProduct) if (r != ERROR_SUCCESS) goto done; - if (!msi_reg_get_val_dword(userdata, szWindowsInstaller, &val)) + if (!msi_reg_get_val_dword(userdata, L"WindowsInstaller", &val)) goto done; if (val) @@ -2724,11 +2683,6 @@ UINT WINAPI MsiGetProductPropertyW(MSIHANDLE hProduct, LPCWSTR szProperty, LPCWSTR val; UINT r; - static const WCHAR query[] = { - 'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ', - '`','P','r','o','p','e','r','t','y','`',' ','W','H','E','R','E',' ', - '`','P','r','o','p','e','r','t','y','`','=','\'','%','s','\'',0}; - TRACE("(%d, %s, %p, %p)\n", hProduct, debugstr_w(szProperty), szValue, pccbValue); @@ -2742,7 +2696,7 @@ UINT WINAPI MsiGetProductPropertyW(MSIHANDLE hProduct, LPCWSTR szProperty, if (!package) return ERROR_INVALID_HANDLE; - r = MSI_OpenQuery(package->db, &view, query, szProperty); + r = MSI_OpenQuery(package->db, &view, L"SELECT * FROM `Property` WHERE `Property` = '%s'", szProperty); if (r != ERROR_SUCCESS) goto done; @@ -2829,11 +2783,11 @@ static BOOL open_userdata_comp_key( const WCHAR *comp, const WCHAR *usersid, MSI { if (ctx & MSIINSTALLCONTEXT_MACHINE) { - if (!MSIREG_OpenUserDataComponentKey( comp, szLocalSid, hkey, FALSE )) return TRUE; + if (!MSIREG_OpenUserDataComponentKey( comp, L"S-1-5-18", hkey, FALSE )) return TRUE; } if (ctx & (MSIINSTALLCONTEXT_USERMANAGED|MSIINSTALLCONTEXT_USERUNMANAGED)) { - if (usersid && !wcsicmp( usersid, szAllSid )) + if (usersid && !wcsicmp( usersid, L"S-1-1-0" )) { FIXME( "only looking at the current user\n" ); usersid = NULL; @@ -2847,8 +2801,6 @@ static INSTALLSTATE MSI_GetComponentPath( const WCHAR *szProduct, const WCHAR *s const WCHAR *szUserSid, MSIINSTALLCONTEXT ctx, awstring *lpPathBuf, DWORD *pcchBuf ) { - static const WCHAR wininstaller[] = - {'W','i','n','d','o','w','s','I','n','s','t','a','l','l','e','r',0}; WCHAR *path = NULL, squashed_pc[SQUASHED_GUID_SIZE], squashed_comp[SQUASHED_GUID_SIZE]; HKEY hkey; INSTALLSTATE state; @@ -2877,7 +2829,7 @@ static INSTALLSTATE MSI_GetComponentPath( const WCHAR *szProduct, const WCHAR *s if ((!MSIREG_OpenInstallProps(szProduct, MSIINSTALLCONTEXT_MACHINE, NULL, &hkey, FALSE) || !MSIREG_OpenUserDataProductKey(szProduct, MSIINSTALLCONTEXT_USERUNMANAGED, NULL, &hkey, FALSE)) && - msi_reg_get_val_dword(hkey, wininstaller, &version) && + msi_reg_get_val_dword(hkey, L"WindowsInstaller", &version) && GetFileAttributesW(path) != INVALID_FILE_ATTRIBUTES) { RegCloseKey(hkey); @@ -2966,7 +2918,7 @@ end: */ INSTALLSTATE WINAPI MsiGetComponentPathW( LPCWSTR product, LPCWSTR comp, LPWSTR buf, LPDWORD buflen ) { - return MsiGetComponentPathExW( product, comp, szAllSid, MSIINSTALLCONTEXT_ALL, buf, buflen ); + return MsiGetComponentPathExW( product, comp, L"S-1-1-0", MSIINSTALLCONTEXT_ALL, buf, buflen ); } /****************************************************************** @@ -3028,7 +2980,7 @@ static UINT query_feature_state( const WCHAR *product, const WCHAR *squashed, co } StringFromGUID2( &guid, comp, GUID_SIZE ); if (ctx == MSIINSTALLCONTEXT_MACHINE) - r = MSIREG_OpenUserDataComponentKey( comp, szLocalSid, &hkey, FALSE ); + r = MSIREG_OpenUserDataComponentKey( comp, L"S-1-5-18", &hkey, FALSE ); else r = MSIREG_OpenUserDataComponentKey( comp, usersid, &hkey, FALSE ); @@ -3214,9 +3166,6 @@ end: static UINT get_file_version( const WCHAR *path, WCHAR *verbuf, DWORD *verlen, WCHAR *langbuf, DWORD *langlen ) { - static const WCHAR szVersionResource[] = {'\\',0}; - static const WCHAR szVersionFormat[] = {'%','d','.','%','d','.','%','d','.','%','d',0}; - static const WCHAR szLangFormat[] = {'%','d',0}; UINT ret = ERROR_MORE_DATA; DWORD len, error; LPVOID version; @@ -3244,9 +3193,9 @@ static UINT get_file_version( const WCHAR *path, WCHAR *verbuf, DWORD *verlen, } if (verlen) { - if (VerQueryValueW( version, szVersionResource, (LPVOID *)&ffi, &len ) && len > 0) + if (VerQueryValueW( version, L"\\", (LPVOID *)&ffi, &len ) && len > 0) { - swprintf( tmp, ARRAY_SIZE(tmp), szVersionFormat, + swprintf( tmp, ARRAY_SIZE(tmp), L"%d.%d.%d.%d", HIWORD(ffi->dwFileVersionMS), LOWORD(ffi->dwFileVersionMS), HIWORD(ffi->dwFileVersionLS), LOWORD(ffi->dwFileVersionLS) ); if (verbuf) lstrcpynW( verbuf, tmp, *verlen ); @@ -3262,9 +3211,9 @@ static UINT get_file_version( const WCHAR *path, WCHAR *verbuf, DWORD *verlen, } if (langlen) { - if (VerQueryValueW( version, szLangResource, (LPVOID *)&lang, &len ) && len > 0) + if (VerQueryValueW( version, L"\\VarFileInfo\\Translation", (LPVOID *)&lang, &len ) && len > 0) { - swprintf( tmp, ARRAY_SIZE(tmp), szLangFormat, *lang ); + swprintf( tmp, ARRAY_SIZE(tmp), L"%d", *lang ); if (langbuf) lstrcpynW( langbuf, tmp, *langlen ); len = lstrlenW( tmp ); if (*langlen > len) ret = ERROR_SUCCESS; @@ -3496,7 +3445,7 @@ static UINT MSI_ProvideQualifiedComponentEx(LPCWSTR szComponent, StringFromGUID2( &guid, comp, ARRAY_SIZE( comp )); } - state = MSI_GetComponentPath( szProduct, comp, szAllSid, MSIINSTALLCONTEXT_ALL, lpPathBuf, pcchPathBuf ); + state = MSI_GetComponentPath( szProduct, comp, L"S-1-1-0", MSIINSTALLCONTEXT_ALL, lpPathBuf, pcchPathBuf ); if (state == INSTALLSTATE_MOREDATA) return ERROR_MORE_DATA; if (state != INSTALLSTATE_LOCAL) return ERROR_FILE_NOT_FOUND; @@ -3658,7 +3607,7 @@ static USERINFOSTATE MSI_GetUserInfo(LPCWSTR szProduct, if (pcchOrgNameBuf) { orgptr = org; - if (!orgptr) orgptr = szEmpty; + if (!orgptr) orgptr = L""; r = msi_strcpy_to_awstring(orgptr, -1, lpOrgNameBuf, pcchOrgNameBuf); if (r == ERROR_MORE_DATA) @@ -3755,7 +3704,6 @@ UINT WINAPI MsiCollectUserInfoW(LPCWSTR szProduct) MSIHANDLE handle; UINT rc; MSIPACKAGE *package; - static const WCHAR szFirstRun[] = {'F','i','r','s','t','R','u','n',0}; TRACE("(%s)\n",debugstr_w(szProduct)); @@ -3768,7 +3716,7 @@ UINT WINAPI MsiCollectUserInfoW(LPCWSTR szProduct) if (!package) return ERROR_CALL_NOT_IMPLEMENTED; - rc = ACTION_PerformAction(package, szFirstRun); + rc = ACTION_PerformAction(package, L"FirstRun"); msiobj_release( &package->hdr ); MsiCloseHandle(handle); @@ -3781,7 +3729,6 @@ UINT WINAPI MsiCollectUserInfoA(LPCSTR szProduct) MSIHANDLE handle; UINT rc; MSIPACKAGE *package; - static const WCHAR szFirstRun[] = {'F','i','r','s','t','R','u','n',0}; TRACE("(%s)\n",debugstr_a(szProduct)); @@ -3794,7 +3741,7 @@ UINT WINAPI MsiCollectUserInfoA(LPCSTR szProduct) if (!package) return ERROR_CALL_NOT_IMPLEMENTED; - rc = ACTION_PerformAction(package, szFirstRun); + rc = ACTION_PerformAction(package, L"FirstRun"); msiobj_release( &package->hdr ); MsiCloseHandle(handle); @@ -3875,7 +3822,7 @@ UINT WINAPI MsiConfigureFeatureW(LPCWSTR szProduct, LPCWSTR szFeature, INSTALLST MsiSetInternalUI( INSTALLUILEVEL_BASIC, NULL ); - r = ACTION_PerformAction(package, szCostInitialize); + r = ACTION_PerformAction(package, L"CostInitialize"); if (r != ERROR_SUCCESS) goto end; @@ -3911,7 +3858,7 @@ UINT WINAPI MsiCreateAndVerifyInstallerDirectory(DWORD dwReserved) if (!GetWindowsDirectoryW(path, MAX_PATH)) return ERROR_FUNCTION_FAILED; - lstrcatW(path, installerW); + lstrcatW(path, L"\\Installer"); if (!CreateDirectoryW(path, NULL) && GetLastError() != ERROR_ALREADY_EXISTS) return ERROR_FUNCTION_FAILED; @@ -4006,7 +3953,6 @@ UINT WINAPI MsiGetShortcutTargetW( LPCWSTR szShortcutTarget, UINT WINAPI MsiReinstallFeatureW( LPCWSTR szProduct, LPCWSTR szFeature, DWORD dwReinstallMode ) { - static const WCHAR fmtW[] = {'%','s','=','%','s',' ','%','s','=','%','s',0}; MSIPACKAGE *package; MSIINSTALLCONTEXT context; UINT r; @@ -4060,14 +4006,14 @@ UINT WINAPI MsiReinstallFeatureW( LPCWSTR szProduct, LPCWSTR szFeature, DWORD dw if (r != ERROR_SUCCESS) return r; - sz = (lstrlenW( fmtW ) + lstrlenW( szReinstallMode ) + lstrlenW( reinstallmode )) * sizeof(WCHAR); - sz += (lstrlenW( szReinstall ) + lstrlenW( szFeature )) * sizeof(WCHAR); + sz = (lstrlenW( L"%s=%s %s=%s" ) + lstrlenW( L"REINSTALLMODE" ) + lstrlenW( reinstallmode )) * sizeof(WCHAR); + sz += (lstrlenW( L"REINSTALL" ) + lstrlenW( szFeature )) * sizeof(WCHAR); if (!(cmdline = msi_alloc( sz ))) { msiobj_release( &package->hdr ); return ERROR_OUTOFMEMORY; } - swprintf( cmdline, sz / sizeof(WCHAR), fmtW, szReinstallMode, reinstallmode, szReinstall, szFeature ); + swprintf( cmdline, sz / sizeof(WCHAR), L"%s=%s %s=%s", L"REINSTALLMODE", reinstallmode, L"REINSTALL", szFeature ); r = MSI_InstallPackage( package, sourcepath, cmdline ); msiobj_release( &package->hdr );