From: Hans Leidekker Subject: [6/6] msi: Check file state before installing global assemblies. Message-Id: <1427290428.3059.15.camel@codeweavers.com> Date: Wed, 25 Mar 2015 14:33:48 +0100 --- 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; } }