msi: Clean upstore_binary_to_temp.
This commit is contained in:
parent
1ccf944900
commit
0b7a17d282
|
@ -284,62 +284,57 @@ end:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static UINT store_binary_to_temp(MSIPACKAGE *package, LPCWSTR source,
|
static UINT store_binary_to_temp(MSIPACKAGE *package, LPCWSTR source,
|
||||||
LPWSTR tmp_file)
|
LPWSTR tmp_file)
|
||||||
{
|
{
|
||||||
DWORD sz=MAX_PATH;
|
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};
|
||||||
|
UINT rc;
|
||||||
|
MSIRECORD *row = 0;
|
||||||
|
HANDLE file;
|
||||||
|
CHAR buffer[1024];
|
||||||
static const WCHAR f1[] = {'m','s','i',0};
|
static const WCHAR f1[] = {'m','s','i',0};
|
||||||
WCHAR fmt[MAX_PATH];
|
WCHAR fmt[MAX_PATH];
|
||||||
|
DWORD sz = MAX_PATH;
|
||||||
|
|
||||||
if (MSI_GetPropertyW(package, cszTempFolder, fmt, &sz) != ERROR_SUCCESS)
|
if (MSI_GetPropertyW(package, cszTempFolder, fmt, &sz) != ERROR_SUCCESS)
|
||||||
GetTempPathW(MAX_PATH,fmt);
|
GetTempPathW(MAX_PATH, fmt);
|
||||||
|
|
||||||
if (GetTempFileNameW(fmt,f1,0,tmp_file) == 0)
|
if (GetTempFileNameW(fmt, f1, 0, tmp_file) == 0)
|
||||||
{
|
{
|
||||||
TRACE("Unable to create file\n");
|
TRACE("Unable to create file\n");
|
||||||
return ERROR_FUNCTION_FAILED;
|
return ERROR_FUNCTION_FAILED;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
/* write out the file */
|
||||||
|
file = CreateFileW(tmp_file, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,
|
||||||
|
FILE_ATTRIBUTE_NORMAL, NULL);
|
||||||
|
if (file == INVALID_HANDLE_VALUE)
|
||||||
|
return ERROR_FUNCTION_FAILED;
|
||||||
|
|
||||||
|
row = MSI_QueryGetRecord(package->db, query, source);
|
||||||
|
if (!row)
|
||||||
|
return ERROR_FUNCTION_FAILED;
|
||||||
|
|
||||||
|
do
|
||||||
{
|
{
|
||||||
/* write out the file */
|
DWORD write;
|
||||||
UINT rc;
|
sz = sizeof buffer;
|
||||||
MSIRECORD * row = 0;
|
rc = MSI_RecordReadStream(row, 2, buffer, &sz);
|
||||||
static const WCHAR fmt[] =
|
if (rc != ERROR_SUCCESS)
|
||||||
{'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};
|
|
||||||
HANDLE the_file;
|
|
||||||
CHAR buffer[1024];
|
|
||||||
|
|
||||||
the_file = CreateFileW(tmp_file, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,
|
|
||||||
FILE_ATTRIBUTE_NORMAL, NULL);
|
|
||||||
|
|
||||||
if (the_file == INVALID_HANDLE_VALUE)
|
|
||||||
return ERROR_FUNCTION_FAILED;
|
|
||||||
|
|
||||||
row = MSI_QueryGetRecord(package->db, fmt, source);
|
|
||||||
if (!row)
|
|
||||||
return ERROR_FUNCTION_FAILED;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
DWORD write;
|
ERR("Failed to get stream\n");
|
||||||
sz = 1024;
|
CloseHandle(file);
|
||||||
rc = MSI_RecordReadStream(row,2,buffer,&sz);
|
DeleteFileW(tmp_file);
|
||||||
if (rc != ERROR_SUCCESS)
|
break;
|
||||||
{
|
}
|
||||||
ERR("Failed to get stream\n");
|
WriteFile(file, buffer, sz, &write, NULL);
|
||||||
CloseHandle(the_file);
|
} while (sz == sizeof buffer);
|
||||||
DeleteFileW(tmp_file);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
WriteFile(the_file,buffer,sz,&write,NULL);
|
|
||||||
} while (sz == 1024);
|
|
||||||
|
|
||||||
CloseHandle(the_file);
|
CloseHandle(file);
|
||||||
|
msiobj_release(&row->hdr);
|
||||||
msiobj_release(&row->hdr);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue