msi: Restrict the match on files from cabinets to the disk ID.
Hans Leidekker
hans at codeweavers.com
Thu Jun 20 03:32:11 CDT 2013
Fixes regression bug http://bugs.winehq.org/show_bug.cgi?id=32911
---
dlls/msi/files.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/dlls/msi/files.c b/dlls/msi/files.c
index d53da91..ec46ae3 100644
--- a/dlls/msi/files.c
+++ b/dlls/msi/files.c
@@ -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;
}
--
1.7.10.4
More information about the wine-patches
mailing list