Module: wine Branch: master Commit: c66f9bef6073ad77f75ec4db7afa0d1c712020ba URL: http://source.winehq.org/git/wine.git/?a=commit;h=c66f9bef6073ad77f75ec4db7a...
Author: Hans Leidekker hans@codeweavers.com Date: Wed Mar 25 14:33:48 2015 +0100
msi: Check file state before installing global assemblies.
---
dlls/msi/files.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/dlls/msi/files.c b/dlls/msi/files.c index 4337d51..40cc3f6 100644 --- a/dlls/msi/files.c +++ b/dlls/msi/files.c @@ -340,7 +340,6 @@ WCHAR *msi_resolve_file_source( MSIPACKAGE *package, MSIFILE *file ) UINT ACTION_InstallFiles(MSIPACKAGE *package) { MSIMEDIAINFO *mi; - MSICOMPONENT *comp; UINT rc = ERROR_SUCCESS; MSIFILE *file;
@@ -418,18 +417,19 @@ UINT ACTION_InstallFiles(MSIPACKAGE *package) goto done; } } - LIST_FOR_EACH_ENTRY( comp, &package->components, MSICOMPONENT, entry ) + LIST_FOR_EACH_ENTRY( file, &package->files, MSIFILE, entry ) { - comp->Action = msi_get_component_action( package, comp ); - if (comp->Action == INSTALLSTATE_LOCAL && comp->assembly && !comp->assembly->installed) + MSICOMPONENT *comp = file->Component; + + if (!comp->assembly || (file->state != msifs_missing && file->state != msifs_overwrite)) + continue; + + rc = msi_install_assembly( package, comp ); + if (rc != ERROR_SUCCESS) { - rc = msi_install_assembly( package, comp ); - if (rc != ERROR_SUCCESS) - { - ERR("Failed to install assembly\n"); - rc = ERROR_INSTALL_FAILURE; - break; - } + ERR("Failed to install assembly\n"); + rc = ERROR_INSTALL_FAILURE; + break; } }