msi: Restrict the match on files from cabinets to the disk ID.
This commit is contained in:
parent
b9aa0c6fbf
commit
7974b12ab1
|
@ -246,13 +246,15 @@ static UINT msi_create_directory( MSIPACKAGE *package, const WCHAR *dir )
|
|||
return ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
static MSIFILE *find_file( MSIPACKAGE *package, const WCHAR *filename )
|
||||
static MSIFILE *find_file( MSIPACKAGE *package, UINT disk_id, const WCHAR *filename )
|
||||
{
|
||||
MSIFILE *file;
|
||||
|
||||
LIST_FOR_EACH_ENTRY( file, &package->files, MSIFILE, entry )
|
||||
{
|
||||
if (file->state != msifs_installed && !strcmpiW( filename, file->File )) return file;
|
||||
if (file->disk_id == disk_id &&
|
||||
file->state != msifs_installed &&
|
||||
!strcmpiW( filename, file->File )) return file;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
@ -265,7 +267,7 @@ static BOOL installfiles_cb(MSIPACKAGE *package, LPCWSTR file, DWORD action,
|
|||
|
||||
if (action == MSICABEXTRACT_BEGINEXTRACT)
|
||||
{
|
||||
if (!(f = find_file( package, file )))
|
||||
if (!(f = find_file( package, disk_id, file )))
|
||||
{
|
||||
TRACE("unknown file in cabinet (%s)\n", debugstr_w(file));
|
||||
return FALSE;
|
||||
|
@ -394,7 +396,7 @@ UINT ACTION_InstallFiles(MSIPACKAGE *package)
|
|||
}
|
||||
else if (file->state != msifs_installed && !(file->Attributes & msidbFileAttributesPatchAdded))
|
||||
{
|
||||
ERR("compressed file wasn't installed (%s)\n", debugstr_w(file->TargetPath));
|
||||
ERR("compressed file wasn't installed (%s)\n", debugstr_w(file->File));
|
||||
rc = ERROR_INSTALL_FAILURE;
|
||||
goto done;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue