Hans Leidekker : msi: Don' t mark uncompressed global assembly files as installed until they are in the assembly cache.

Alexandre Julliard julliard at winehq.org
Mon May 14 06:54:21 CDT 2018


Module: wine
Branch: stable
Commit: 9d62d437d1b91e4591678dec1d67f2ca2cad4a1a
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=9d62d437d1b91e4591678dec1d67f2ca2cad4a1a

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Wed Feb  7 10:46:09 2018 +0100

msi: Don't mark uncompressed global assembly files as installed until they are in the assembly cache.

Signed-off-by: Hans Leidekker <hans at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
(cherry picked from commit ff754f4edef05ab967ace9dc61400b32187de699)
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>

---

 dlls/msi/files.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/dlls/msi/files.c b/dlls/msi/files.c
index 02ff8ec..adffcaf 100644
--- a/dlls/msi/files.c
+++ b/dlls/msi/files.c
@@ -200,8 +200,6 @@ static UINT copy_file(MSIFILE *file, LPWSTR source)
         return GetLastError();
 
     SetFileAttributesW(file->TargetPath, FILE_ATTRIBUTE_NORMAL);
-
-    file->state = msifs_installed;
     return ERROR_SUCCESS;
 }
 
@@ -249,7 +247,6 @@ static UINT copy_install_file(MSIPACKAGE *package, MSIFILE *file, LPWSTR source)
             MoveFileExW(file->TargetPath, NULL, MOVEFILE_DELAY_UNTIL_REBOOT) &&
             MoveFileExW(tmpfileW, file->TargetPath, MOVEFILE_DELAY_UNTIL_REBOOT))
         {
-            file->state = msifs_installed;
             package->need_reboot_at_end = 1;
             gle = ERROR_SUCCESS;
         }
@@ -365,6 +362,8 @@ UINT ACTION_InstallFiles(MSIPACKAGE *package)
 
     LIST_FOR_EACH_ENTRY( file, &package->files, MSIFILE, entry )
     {
+        BOOL is_global_assembly = msi_is_global_assembly( file->Component );
+
         msi_file_update_ui( package, file, szInstallFiles );
 
         rc = msi_load_media_info( package, file->Sequence, mi );
@@ -412,7 +411,7 @@ UINT ACTION_InstallFiles(MSIPACKAGE *package)
 
             TRACE("copying %s to %s\n", debugstr_w(source), debugstr_w(file->TargetPath));
 
-            if (!msi_is_global_assembly( file->Component ))
+            if (!is_global_assembly)
             {
                 msi_create_directory(package, file->Component->Directory);
             }
@@ -424,10 +423,11 @@ UINT ACTION_InstallFiles(MSIPACKAGE *package)
                 msi_free(source);
                 goto done;
             }
+            if (!is_global_assembly) file->state = msifs_installed;
             msi_free(source);
         }
-        else if (!msi_is_global_assembly( file->Component ) &&
-                 file->state != msifs_installed && !(file->Attributes & msidbFileAttributesPatchAdded))
+        else if (!is_global_assembly && file->state != msifs_installed &&
+                 !(file->Attributes & msidbFileAttributesPatchAdded))
         {
             ERR("compressed file wasn't installed (%s)\n", debugstr_w(file->File));
             rc = ERROR_INSTALL_FAILURE;




More information about the wine-cvs mailing list