From fa2420d6960df77d6073e3666d375936c5999fe7 Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Mon, 12 Mar 2012 12:26:34 +0100 Subject: [PATCH] msi: Perform a case insensitive match on filenames from cabinets. --- dlls/msi/files.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/dlls/msi/files.c b/dlls/msi/files.c index 909f71f23c5..e9285648ae3 100644 --- a/dlls/msi/files.c +++ b/dlls/msi/files.c @@ -247,6 +247,17 @@ static UINT msi_create_directory( MSIPACKAGE *package, const WCHAR *dir ) return ERROR_SUCCESS; } +static MSIFILE *find_file( MSIPACKAGE *package, const WCHAR *filename ) +{ + MSIFILE *file; + + LIST_FOR_EACH_ENTRY( file, &package->files, MSIFILE, entry ) + { + if (!strcmpiW( filename, file->File )) return file; + } + return NULL; +} + static BOOL installfiles_cb(MSIPACKAGE *package, LPCWSTR file, DWORD action, LPWSTR *path, DWORD *attrs, PVOID user) { @@ -255,8 +266,7 @@ static BOOL installfiles_cb(MSIPACKAGE *package, LPCWSTR file, DWORD action, if (action == MSICABEXTRACT_BEGINEXTRACT) { - f = msi_get_loaded_file(package, file); - if (!f) + if (!(f = find_file( package, file ))) { TRACE("unknown file in cabinet (%s)\n", debugstr_w(file)); return FALSE;