diff --git a/dlls/msi/action.c b/dlls/msi/action.c index 0c5306c..9d8198b 100644 --- a/dlls/msi/action.c +++ b/dlls/msi/action.c @@ -5659,15 +5659,30 @@ static UINT ITERATE_PublishAssembly( MSIRECORD *rec, LPVOID param ) file = msi_find_file(package, comp->KeyPath); GetTempPathW(MAX_PATH, path); - r = msi_extract_file(package, file, path); - if (r != ERROR_SUCCESS) + + if (file->IsCompressed) { - ERR("Failed to extract temporary assembly\n"); - return r; + r = msi_extract_file(package, file, path); + if (r != ERROR_SUCCESS) + { + ERR("Failed to extract temporary assembly\n"); + return r; + } + + PathAddBackslashW(path); + lstrcatW(path, file->FileName); } + else + { + PathAddBackslashW(path); + lstrcatW(path, file->FileName); - PathAddBackslashW(path); - lstrcatW(path, file->FileName); + if (!CopyFileW(file->SourcePath, path, FALSE)) + { + ERR("Failed to copy temporary assembly: %d\n", GetLastError()); + return ERROR_FUNCTION_FAILED; + } + } r = install_assembly(path); if (r != ERROR_SUCCESS) -- 1.5.4.3