From: Paul Gofman pgofman@codeweavers.com
--- dlls/msi/files.c | 9 +++++++++ dlls/msi/tests/install.c | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/dlls/msi/files.c b/dlls/msi/files.c index 8dd2b67a792..218851646cf 100644 --- a/dlls/msi/files.c +++ b/dlls/msi/files.c @@ -159,10 +159,19 @@ static BOOL apply_filepatch( MSIPACKAGE *package, const WCHAR *patch, const WCHA
BYTE *msi_get_file_version_info( MSIPACKAGE *package, const WCHAR *path ) { + WCHAR temppath[MAX_PATH]; DWORD size; BYTE *buffer = NULL;
msi_disable_fs_redirection( package ); + if (is_wow64 && is_platform_64bit( package->platform ) && !wcsnicmp( path, sysdir, sysdir_len )) + { + SIZE_T len = sysdir_len; + + while (len && sysdir[len] != '\') --len; + swprintf( temppath, ARRAY_SIZE(temppath), L"%.*s\sysnative%s", len, sysdir, path + sysdir_len ); + path = temppath; + } if (!(size = GetFileVersionInfoSizeW( path, NULL ))) goto done; if (!(buffer = malloc( size ))) goto done; if (!GetFileVersionInfoW( path, 0, size, buffer )) diff --git a/dlls/msi/tests/install.c b/dlls/msi/tests/install.c index 57ee48c2d7a..4b967d1aa4b 100644 --- a/dlls/msi/tests/install.c +++ b/dlls/msi/tests/install.c @@ -6315,7 +6315,7 @@ static void test_wow64(void) sprintf(path, "%s\msitest\cabout\new\five.txt", system_dir); ret = GetFileAttributesExA(path, GetFileExInfoStandard, &attr); ok(ret, "got error %lu.\n", GetLastError()); - todo_wine ok(attr.nFileSizeLow == dll_size, "got %lu, expected %lu.\n", attr.nFileSizeLow, dll_size); + ok(attr.nFileSizeLow == dll_size, "got %lu, expected %lu.\n", attr.nFileSizeLow, dll_size);
ok(delete_pf_dir("msitest\cabout\new\five.txt", TRUE, system_dir), "File not installed\n"); ok(delete_pf_dir("msitest\cabout\new", FALSE, system_dir), "Directory not created\n");