Commit d17ebc40 authored by Hans Leidekker's avatar Hans Leidekker Committed by Alexandre Julliard

msi: Advance to the right cabinet in ACTION_MsiPublishAssemblies.

parent 8bfc0877
...@@ -6919,33 +6919,33 @@ static UINT ACTION_MsiPublishAssemblies( MSIPACKAGE *package ) ...@@ -6919,33 +6919,33 @@ static UINT ACTION_MsiPublishAssemblies( MSIPACKAGE *package )
if (assembly->installed && !mi->is_continuous) if (assembly->installed && !mi->is_continuous)
continue; continue;
if (assembly->file->Sequence > mi->last_sequence || mi->is_continuous || if (assembly->file->IsCompressed)
(assembly->file->IsCompressed && !mi->is_extracted))
{ {
MSICABDATA data; if (assembly->file->disk_id != mi->disk_id || mi->is_continuous)
r = ready_media(package, assembly->file, mi);
if (r != ERROR_SUCCESS)
{ {
ERR("Failed to ready media\n"); MSICABDATA data;
break;
}
data.mi = mi; r = ready_media(package, assembly->file, mi);
data.package = package; if (r != ERROR_SUCCESS)
data.cb = installassembly_cb; {
data.user = &assemblies; ERR("Failed to ready media\n");
break;
}
if (assembly->file->IsCompressed && data.mi = mi;
!msi_cabextract(package, mi, &data)) data.package = package;
{ data.cb = installassembly_cb;
ERR("Failed to extract cabinet: %s\n", debugstr_w(mi->cabinet)); data.user = &assemblies;
r = ERROR_FUNCTION_FAILED;
break; if (!msi_cabextract(package, mi, &data))
{
ERR("Failed to extract cabinet: %s\n", debugstr_w(mi->cabinet));
r = ERROR_FUNCTION_FAILED;
break;
}
} }
} }
else
if (!assembly->file->IsCompressed)
{ {
LPWSTR source = resolve_file_source(package, assembly->file); LPWSTR source = resolve_file_source(package, assembly->file);
......
...@@ -629,12 +629,10 @@ static UINT msi_load_media_info(MSIPACKAGE *package, MSIFILE *file, MSIMEDIAINFO ...@@ -629,12 +629,10 @@ static UINT msi_load_media_info(MSIPACKAGE *package, MSIFILE *file, MSIMEDIAINFO
static const WCHAR query[] = { static const WCHAR query[] = {
'S','E','L','E','C','T',' ','*',' ', 'F','R','O','M',' ', 'S','E','L','E','C','T',' ','*',' ', 'F','R','O','M',' ',
'`','M','e','d','i','a','`',' ','W','H','E','R','E',' ', '`','M','e','d','i','a','`',' ','W','H','E','R','E',' ',
'`','L','a','s','t','S','e','q','u','e','n','c','e','`',' ','>','=', '`','L','a','s','t','S','e','q','u','e','n','c','e','`',' ','>','=',' ','%','i',
' ','%','i',' ','A','N','D',' ','`','D','i','s','k','I','d','`',' ','>','=', ' ','O','R','D','E','R',' ','B','Y',' ','`','D','i','s','k','I','d','`',0};
' ','%','i',' ','O','R','D','E','R',' ','B','Y',' ',
'`','D','i','s','k','I','d','`',0};
row = MSI_QueryGetRecord(package->db, query, file->Sequence, mi->disk_id); row = MSI_QueryGetRecord(package->db, query, file->Sequence);
if (!row) if (!row)
{ {
TRACE("Unable to query row\n"); TRACE("Unable to query row\n");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment