if (r == ERROR_SUCCESS)
{
RegCloseKey( hkey );
- msi_set_property( package->db, szInstalled, szOne );
+ msi_set_property( package->db, szInstalled, szOne, -1 );
}
return r;
}
if (!ConvertSidToStringSidW( psid, &sid_str ))
goto done;
- r = msi_set_property( package->db, szUserSID, sid_str );
+ r = msi_set_property( package->db, szUserSID, sid_str, -1 );
done:
LocalFree( sid_str );
return;
size = GetFileVersionInfoSizeW(fusion, &handle);
- if (!size) return;
+ if (!size)
+ goto done;
version = msi_alloc(size);
- if (!version) return;
+ if (!version)
+ goto done;
if (!GetFileVersionInfoW(fusion, handle, size, version))
goto done;
if (!val_len || !verstr)
goto done;
- msi_set_property(package->db, netasm, verstr);
+ msi_set_property( package->db, netasm, verstr, -1 );
done:
msi_free(fusion);
SHGetFolderPathW(NULL, CSIDL_COMMON_APPDATA, NULL, 0, pth);
strcatW(pth, szBackSlash);
- msi_set_property(package->db, szCommonAppDataFolder, pth);
+ msi_set_property( package->db, szCommonAppDataFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_FAVORITES, NULL, 0, pth);
strcatW(pth, szBackSlash);
- msi_set_property(package->db, szFavoritesFolder, pth);
+ msi_set_property( package->db, szFavoritesFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_FONTS, NULL, 0, pth);
strcatW(pth, szBackSlash);
- msi_set_property(package->db, szFontsFolder, pth);
+ msi_set_property( package->db, szFontsFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_SENDTO, NULL, 0, pth);
strcatW(pth, szBackSlash);
- msi_set_property(package->db, szSendToFolder, pth);
+ msi_set_property( package->db, szSendToFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_STARTMENU, NULL, 0, pth);
strcatW(pth, szBackSlash);
- msi_set_property(package->db, szStartMenuFolder, pth);
+ msi_set_property( package->db, szStartMenuFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_STARTUP, NULL, 0, pth);
strcatW(pth, szBackSlash);
- msi_set_property(package->db, szStartupFolder, pth);
+ msi_set_property( package->db, szStartupFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_TEMPLATES, NULL, 0, pth);
strcatW(pth, szBackSlash);
- msi_set_property(package->db, szTemplateFolder, pth);
+ msi_set_property( package->db, szTemplateFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_DESKTOP, NULL, 0, pth);
strcatW(pth, szBackSlash);
- msi_set_property(package->db, szDesktopFolder, pth);
+ msi_set_property( package->db, szDesktopFolder, pth, -1 );
/* FIXME: set to AllUsers profile path if ALLUSERS is set */
SHGetFolderPathW(NULL, CSIDL_PROGRAMS, NULL, 0, pth);
strcatW(pth, szBackSlash);
- msi_set_property(package->db, szProgramMenuFolder, pth);
+ msi_set_property( package->db, szProgramMenuFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_ADMINTOOLS, NULL, 0, pth);
strcatW(pth, szBackSlash);
- msi_set_property(package->db, szAdminToolsFolder, pth);
+ msi_set_property( package->db, szAdminToolsFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_APPDATA, NULL, 0, pth);
strcatW(pth, szBackSlash);
- msi_set_property(package->db, szAppDataFolder, pth);
+ msi_set_property( package->db, szAppDataFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_SYSTEM, NULL, 0, pth);
strcatW(pth, szBackSlash);
- msi_set_property(package->db, szSystemFolder, pth);
- msi_set_property(package->db, szSystem16Folder, pth);
+ msi_set_property( package->db, szSystemFolder, pth, -1 );
+ msi_set_property( package->db, szSystem16Folder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_LOCAL_APPDATA, NULL, 0, pth);
strcatW(pth, szBackSlash);
- msi_set_property(package->db, szLocalAppDataFolder, pth);
+ msi_set_property( package->db, szLocalAppDataFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_MYPICTURES, NULL, 0, pth);
strcatW(pth, szBackSlash);
- msi_set_property(package->db, szMyPicturesFolder, pth);
+ msi_set_property( package->db, szMyPicturesFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_PERSONAL, NULL, 0, pth);
strcatW(pth, szBackSlash);
- msi_set_property(package->db, szPersonalFolder, pth);
+ msi_set_property( package->db, szPersonalFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_WINDOWS, NULL, 0, pth);
strcatW(pth, szBackSlash);
- msi_set_property(package->db, szWindowsFolder, pth);
+ msi_set_property( package->db, szWindowsFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_PRINTHOOD, NULL, 0, pth);
strcatW(pth, szBackSlash);
- msi_set_property(package->db, szPrintHoodFolder, pth);
+ msi_set_property( package->db, szPrintHoodFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_NETHOOD, NULL, 0, pth);
strcatW(pth, szBackSlash);
- msi_set_property(package->db, szNetHoodFolder, pth);
+ msi_set_property( package->db, szNetHoodFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_RECENT, NULL, 0, pth);
strcatW(pth, szBackSlash);
- msi_set_property(package->db, szRecentFolder, pth);
+ msi_set_property( package->db, szRecentFolder, pth, -1 );
/* Physical Memory is specified in MB. Using total amount. */
msex.dwLength = sizeof(msex);
GlobalMemoryStatusEx( &msex );
- sprintfW( bufstr, szIntFormat, (int)(msex.ullTotalPhys / 1024 / 1024) );
- msi_set_property(package->db, szPhysicalMemory, bufstr);
+ len = sprintfW( bufstr, szIntFormat, (int)(msex.ullTotalPhys / 1024 / 1024) );
+ msi_set_property( package->db, szPhysicalMemory, bufstr, len );
SHGetFolderPathW(NULL, CSIDL_WINDOWS, NULL, 0, pth);
ptr = strchrW(pth,'\\');
if (ptr) *(ptr + 1) = 0;
- msi_set_property(package->db, szWindowsVolume, pth);
+ msi_set_property( package->db, szWindowsVolume, pth, -1 );
- GetTempPathW(MAX_PATH,pth);
- msi_set_property(package->db, szTempFolder, pth);
+ len = GetTempPathW(MAX_PATH, pth);
+ msi_set_property( package->db, szTempFolder, pth, len );
/* in a wine environment the user is always admin and privileged */
- msi_set_property(package->db, szAdminUser, szOne);
- msi_set_property(package->db, szPrivileged, szOne);
+ msi_set_property( package->db, szAdminUser, szOne, -1 );
+ msi_set_property( package->db, szPrivileged, szOne, -1 );
/* set the os things */
OSVersion.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXW);
GetVersionExW((OSVERSIONINFOW *)&OSVersion);
verval = OSVersion.dwMinorVersion + OSVersion.dwMajorVersion * 100;
- sprintfW(verstr, szFormat, verval);
+ len = sprintfW( verstr, szFormat, verval );
switch (OSVersion.dwPlatformId)
{
case VER_PLATFORM_WIN32_WINDOWS:
- msi_set_property(package->db, szVersion9x, verstr);
+ msi_set_property( package->db, szVersion9x, verstr, len );
break;
case VER_PLATFORM_WIN32_NT:
- msi_set_property(package->db, szVersionNT, verstr);
- sprintfW(verstr, szFormat,OSVersion.wProductType);
- msi_set_property(package->db, szMsiNTProductType, verstr);
+ msi_set_property( package->db, szVersionNT, verstr, len );
+ len = sprintfW( verstr, szFormat,OSVersion.wProductType );
+ msi_set_property( package->db, szMsiNTProductType, verstr, len );
break;
}
- sprintfW(verstr, szFormat, OSVersion.dwBuildNumber);
- msi_set_property(package->db, szWindowsBuild, verstr);
- sprintfW(verstr, szFormat, OSVersion.wServicePackMajor);
- msi_set_property(package->db, szServicePackLevel, verstr);
+ len = sprintfW( verstr, szFormat, OSVersion.dwBuildNumber );
+ msi_set_property( package->db, szWindowsBuild, verstr, len );
+ len = sprintfW( verstr, szFormat, OSVersion.wServicePackMajor );
+ msi_set_property( package->db, szServicePackLevel, verstr, len );
- sprintfW( bufstr, szFormat2, MSI_MAJORVERSION, MSI_MINORVERSION);
- msi_set_property( package->db, szVersionMsi, bufstr );
- sprintfW( bufstr, szFormat, MSI_MAJORVERSION * 100);
- msi_set_property( package->db, szVersionDatabase, bufstr );
+ len = sprintfW( bufstr, szFormat2, MSI_MAJORVERSION, MSI_MINORVERSION );
+ msi_set_property( package->db, szVersionMsi, bufstr, len );
+ len = sprintfW( bufstr, szFormat, MSI_MAJORVERSION * 100 );
+ msi_set_property( package->db, szVersionDatabase, bufstr, len );
GetNativeSystemInfo( &sys_info );
- sprintfW( bufstr, szIntFormat, sys_info.wProcessorLevel );
- msi_set_property( package->db, szIntel, bufstr );
+ len = sprintfW( bufstr, szIntFormat, sys_info.wProcessorLevel );
+ msi_set_property( package->db, szIntel, bufstr, len );
if (sys_info.u.s.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_INTEL)
{
GetSystemDirectoryW( pth, MAX_PATH );
PathAddBackslashW( pth );
- msi_set_property( package->db, szSystemFolder, pth );
+ msi_set_property( package->db, szSystemFolder, pth, -1 );
SHGetFolderPathW( NULL, CSIDL_PROGRAM_FILES, NULL, 0, pth );
PathAddBackslashW( pth );
- msi_set_property( package->db, szProgramFilesFolder, pth );
+ msi_set_property( package->db, szProgramFilesFolder, pth, -1 );
SHGetFolderPathW( NULL, CSIDL_PROGRAM_FILES_COMMON, NULL, 0, pth );
PathAddBackslashW( pth );
- msi_set_property( package->db, szCommonFilesFolder, pth );
+ msi_set_property( package->db, szCommonFilesFolder, pth, -1 );
}
else if (sys_info.u.s.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64)
{
- msi_set_property( package->db, szMsiAMD64, bufstr );
- msi_set_property( package->db, szMsix64, bufstr );
- msi_set_property( package->db, szVersionNT64, verstr );
+ msi_set_property( package->db, szMsiAMD64, bufstr, -1 );
+ msi_set_property( package->db, szMsix64, bufstr, -1 );
+ msi_set_property( package->db, szVersionNT64, verstr, -1 );
GetSystemDirectoryW( pth, MAX_PATH );
PathAddBackslashW( pth );
- msi_set_property( package->db, szSystem64Folder, pth );
+ msi_set_property( package->db, szSystem64Folder, pth, -1 );
GetSystemWow64DirectoryW( pth, MAX_PATH );
PathAddBackslashW( pth );
- msi_set_property( package->db, szSystemFolder, pth );
+ msi_set_property( package->db, szSystemFolder, pth, -1 );
SHGetFolderPathW( NULL, CSIDL_PROGRAM_FILES, NULL, 0, pth );
PathAddBackslashW( pth );
- msi_set_property( package->db, szProgramFiles64Folder, pth );
+ msi_set_property( package->db, szProgramFiles64Folder, pth, -1 );
SHGetFolderPathW( NULL, CSIDL_PROGRAM_FILESX86, NULL, 0, pth );
PathAddBackslashW( pth );
- msi_set_property( package->db, szProgramFilesFolder, pth );
+ msi_set_property( package->db, szProgramFilesFolder, pth, -1 );
SHGetFolderPathW( NULL, CSIDL_PROGRAM_FILES_COMMON, NULL, 0, pth );
PathAddBackslashW( pth );
- msi_set_property( package->db, szCommonFiles64Folder, pth );
+ msi_set_property( package->db, szCommonFiles64Folder, pth, -1 );
SHGetFolderPathW( NULL, CSIDL_PROGRAM_FILES_COMMONX86, NULL, 0, pth );
PathAddBackslashW( pth );
- msi_set_property( package->db, szCommonFilesFolder, pth );
+ msi_set_property( package->db, szCommonFilesFolder, pth, -1 );
}
/* Screen properties. */
dc = GetDC(0);
- sprintfW( bufstr, szIntFormat, GetDeviceCaps( dc, HORZRES ) );
- msi_set_property( package->db, szScreenX, bufstr );
- sprintfW( bufstr, szIntFormat, GetDeviceCaps( dc, VERTRES ));
- msi_set_property( package->db, szScreenY, bufstr );
- sprintfW( bufstr, szIntFormat, GetDeviceCaps( dc, BITSPIXEL ));
- msi_set_property( package->db, szColorBits, bufstr );
+ len = sprintfW( bufstr, szIntFormat, GetDeviceCaps(dc, HORZRES) );
+ msi_set_property( package->db, szScreenX, bufstr, len );
+ len = sprintfW( bufstr, szIntFormat, GetDeviceCaps(dc, VERTRES) );
+ msi_set_property( package->db, szScreenY, bufstr, len );
+ len = sprintfW( bufstr, szIntFormat, GetDeviceCaps(dc, BITSPIXEL) );
+ msi_set_property( package->db, szColorBits, bufstr, len );
ReleaseDC(0, dc);
/* USERNAME and COMPANYNAME */
{
if (!username &&
(username = msi_reg_get_val_str( hkey, szDefName )))
- msi_set_property( package->db, szUSERNAME, username );
+ msi_set_property( package->db, szUSERNAME, username, -1 );
if (!companyname &&
(companyname = msi_reg_get_val_str( hkey, szDefCompany )))
- msi_set_property( package->db, szCOMPANYNAME, companyname );
+ msi_set_property( package->db, szCOMPANYNAME, companyname, -1 );
CloseHandle( hkey );
}
if ((!username || !companyname) &&
{
if (!username &&
(username = msi_reg_get_val_str( hkey, szRegisteredUser )))
- msi_set_property( package->db, szUSERNAME, username );
+ msi_set_property( package->db, szUSERNAME, username, -1 );
if (!companyname &&
(companyname = msi_reg_get_val_str( hkey, szRegisteredOrganization )))
- msi_set_property( package->db, szCOMPANYNAME, companyname );
+ msi_set_property( package->db, szCOMPANYNAME, companyname, -1 );
CloseHandle( hkey );
}
msi_free( username );
GetSystemTime( &systemtime );
if (GetDateFormatW( LOCALE_USER_DEFAULT, DATE_SHORTDATE, &systemtime,
NULL, bufstr, sizeof(bufstr)/sizeof(bufstr[0]) ))
- msi_set_property( package->db, szDate, bufstr );
+ msi_set_property( package->db, szDate, bufstr, -1 );
else
ERR("Couldn't set Date property: GetDateFormat failed with error %d\n", GetLastError());
TIME_FORCE24HOURFORMAT | TIME_NOTIMEMARKER,
&systemtime, NULL, bufstr,
sizeof(bufstr)/sizeof(bufstr[0]) ))
- msi_set_property( package->db, szTime, bufstr );
+ msi_set_property( package->db, szTime, bufstr, -1 );
else
ERR("Couldn't set Time property: GetTimeFormat failed with error %d\n", GetLastError());
set_msi_assembly_prop( package );
langid = GetUserDefaultLangID();
- sprintfW(bufstr, szIntFormat, langid);
- msi_set_property( package->db, szUserLanguageID, bufstr );
+ len = sprintfW( bufstr, szIntFormat, langid );
+ msi_set_property( package->db, szUserLanguageID, bufstr, len );
langid = GetSystemDefaultLangID();
- sprintfW(bufstr, szIntFormat, langid);
- msi_set_property( package->db, szSystemLangID, bufstr );
+ len = sprintfW( bufstr, szIntFormat, langid );
+ msi_set_property( package->db, szSystemLangID, bufstr, len );
- sprintfW(bufstr, szIntFormat, MsiQueryProductStateW(package->ProductCode));
- msi_set_property( package->db, szProductState, bufstr );
+ len = sprintfW( bufstr, szIntFormat, MsiQueryProductStateW(package->ProductCode) );
+ msi_set_property( package->db, szProductState, bufstr, len );
len = 0;
if (!GetUserNameW( NULL, &len ) && GetLastError() == ERROR_INSUFFICIENT_BUFFER)
if ((username = msi_alloc( len * sizeof(WCHAR) )))
{
if (GetUserNameW( username, &len ))
- msi_set_property( package->db, szLogonUser, username );
+ msi_set_property( package->db, szLogonUser, username, len - 1 );
msi_free( username );
}
}
if ((computername = msi_alloc( len * sizeof(WCHAR) )))
{
if (GetComputerNameW( computername, &len ))
- msi_set_property( package->db, szComputerName, computername );
+ msi_set_property( package->db, szComputerName, computername, len - 1 );
msi_free( computername );
}
}
goto done;
}
- msi_set_property( package->db, szPackageCode, package_code );
+ msi_set_property( package->db, szPackageCode, package_code, len );
msi_free( package_code );
/* load package attributes */
if (msi_get_property_int( package->db, szAllUsers, 0 ) == 2)
{
TRACE("resetting ALLUSERS property from 2 to 1\n");
- msi_set_property( package->db, szAllUsers, szOne );
+ msi_set_property( package->db, szAllUsers, szOne, -1 );
}
- msi_set_property( package->db, szAdminUser, szOne );
+ msi_set_property( package->db, szAdminUser, szOne, -1 );
}
MSIPACKAGE *MSI_CreatePackage( MSIDATABASE *db, LPCWSTR base_url )
static const WCHAR fmtW[] = {'%','u',0};
MSIPACKAGE *package;
WCHAR uilevel[11];
+ int len;
UINT r;
TRACE("%p\n", db);
set_installer_properties( package );
package->ui_level = gUILevel;
- sprintfW( uilevel, fmtW, gUILevel & INSTALLUILEVEL_MASK );
- msi_set_property(package->db, szUILevel, uilevel);
+ len = sprintfW( uilevel, fmtW, gUILevel & INSTALLUILEVEL_MASK );
+ msi_set_property( package->db, szUILevel, uilevel, len );
r = msi_load_summary_properties( package );
if (r != ERROR_SUCCESS)
{
r = msi_create_empty_local_file( localfile, dotmsi );
if (r != ERROR_SUCCESS)
+ {
+ msi_free ( base_url );
return r;
+ }
if (!CopyFileW( file, localfile, FALSE ))
{
r = GetLastError();
WARN("unable to copy package %s to %s (%u)\n", debugstr_w(file), debugstr_w(localfile), r);
DeleteFileW( localfile );
+ msi_free ( base_url );
return r;
}
delete_on_close = TRUE;
TRACE("opening package %s\n", debugstr_w( localfile ));
r = MSI_OpenDatabaseW( localfile, MSIDBOPEN_TRANSACT, &db );
if (r != ERROR_SUCCESS)
+ {
+ msi_free ( base_url );
return r;
+ }
}
package = MSI_CreatePackage( db, base_url );
msi_free( base_url );
msiobj_release( &package->hdr );
return r;
}
- msi_set_property( package->db, szDatabase, db->path );
+ msi_set_property( package->db, szDatabase, db->path, -1 );
if( UrlIsW( szPackage, URLIS_URL ) )
- msi_set_property( package->db, szOriginalDatabase, szPackage );
+ msi_set_property( package->db, szOriginalDatabase, szPackage, -1 );
else if( szPackage[0] == '#' )
- msi_set_property( package->db, szOriginalDatabase, db->path );
+ msi_set_property( package->db, szOriginalDatabase, db->path, -1 );
else
{
WCHAR fullpath[MAX_PATH];
-
- GetFullPathNameW( szPackage, MAX_PATH, fullpath, NULL );
- msi_set_property( package->db, szOriginalDatabase, fullpath );
+ DWORD len = GetFullPathNameW( szPackage, MAX_PATH, fullpath, NULL );
+ msi_set_property( package->db, szOriginalDatabase, fullpath, len );
}
msi_set_context( package );
}
}
-UINT msi_set_property( MSIDATABASE *db, LPCWSTR szName, LPCWSTR szValue )
+UINT msi_set_property( MSIDATABASE *db, const WCHAR *name, const WCHAR *value, int len )
{
static const WCHAR insert_query[] = {
'I','N','S','E','R','T',' ','I','N','T','O',' ',
WCHAR query[1024];
UINT rc;
- TRACE("%p %s %s\n", db, debugstr_w(szName), debugstr_w(szValue));
+ TRACE("%p %s %s %d\n", db, debugstr_w(name), debugstr_wn(value, len), len);
- if (!szName)
+ if (!name)
return ERROR_INVALID_PARAMETER;
/* this one is weird... */
- if (!szName[0])
- return szValue ? ERROR_FUNCTION_FAILED : ERROR_SUCCESS;
+ if (!name[0])
+ return value ? ERROR_FUNCTION_FAILED : ERROR_SUCCESS;
+
+ if (value && len < 0) len = strlenW( value );
- rc = msi_get_property(db, szName, 0, &sz);
- if (!szValue || !*szValue)
+ rc = msi_get_property( db, name, 0, &sz );
+ if (!value || (!*value && !len))
{
- sprintfW(query, delete_query, szName);
+ sprintfW( query, delete_query, name );
}
else if (rc == ERROR_MORE_DATA || rc == ERROR_SUCCESS)
{
- sprintfW(query, update_query, szName);
-
+ sprintfW( query, update_query, name );
row = MSI_CreateRecord(1);
- MSI_RecordSetStringW(row, 1, szValue);
+ msi_record_set_string( row, 1, value, len );
}
else
{
- strcpyW(query, insert_query);
-
+ strcpyW( query, insert_query );
row = MSI_CreateRecord(2);
- MSI_RecordSetStringW(row, 1, szName);
- MSI_RecordSetStringW(row, 2, szValue);
+ msi_record_set_string( row, 1, name, -1 );
+ msi_record_set_string( row, 2, value, len );
}
rc = MSI_DatabaseOpenViewW(db, query, &view);
return ERROR_SUCCESS;
}
- ret = msi_set_property( package->db, szName, szValue );
+ ret = msi_set_property( package->db, szName, szValue, -1 );
if (ret == ERROR_SUCCESS && !strcmpW( szName, szSourceDir ))
msi_reset_folders( package, TRUE );
}
if (rc == ERROR_SUCCESS)
- TRACE("returning %s for property %s\n", debugstr_w(szValueBuf),
+ TRACE("returning %s for property %s\n", debugstr_wn(szValueBuf, *pchValueBuf),
debugstr_w(szName));
else if (rc == ERROR_MORE_DATA)
TRACE("need %d sized buffer for %s\n", *pchValueBuf,
MSIRECORD *row = NULL;
UINT r = ERROR_FUNCTION_FAILED;
LPCWSTR val = NULL;
+ DWORD len = 0;
TRACE("%u %s %p %p\n", handle, debugstr_w(name),
szValueBuf->str.w, pchValueBuf );
IWineMsiRemotePackage *remote_package;
LPWSTR value = NULL;
BSTR bname;
- DWORD len;
remote_package = (IWineMsiRemotePackage *)msi_get_remote( handle );
if (!remote_package)
return ERROR_OUTOFMEMORY;
}
- len = 0;
hr = IWineMsiRemotePackage_GetProperty( remote_package, bname, NULL, &len );
if (FAILED(hr))
goto done;
if (FAILED(hr))
goto done;
- r = msi_strcpy_to_awstring( value, szValueBuf, pchValueBuf );
+ r = msi_strcpy_to_awstring( value, len, szValueBuf, pchValueBuf );
/* Bug required by Adobe installers */
if (!szValueBuf->unicode && !szValueBuf->str.a)
row = msi_get_property_row( package->db, name );
if (row)
- val = MSI_RecordGetString( row, 1 );
+ val = msi_record_get_string( row, 1, (int *)&len );
if (!val)
val = szEmpty;
- r = msi_strcpy_to_awstring( val, szValueBuf, pchValueBuf );
+ r = msi_strcpy_to_awstring( val, len, szValueBuf, pchValueBuf );
if (row)
msiobj_release( &row->hdr );