[2/2] msi: Let the InstallFiles action determine which private assembly files to install.

Hans Leidekker hans at codeweavers.com
Wed Mar 16 03:22:59 CDT 2011


---
 dlls/msi/assembly.c |    7 +++++--
 dlls/msi/files.c    |    2 +-
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/dlls/msi/assembly.c b/dlls/msi/assembly.c
index fcca6b8..ad5e3a5 100644
--- a/dlls/msi/assembly.c
+++ b/dlls/msi/assembly.c
@@ -282,8 +282,11 @@ MSIASSEMBLY *load_assembly( MSIPACKAGE *package, MSICOMPONENT *comp )
 
     if (a->application)
     {
-        FIXME("we should probably check the manifest file here\n");
-        a->installed = (msi_get_property_int( package->db, szInstalled, 0 ) != 0);
+        /* We can't check the manifest here because the target path may still change.
+           So we assume that the assembly is not installed and lean on the InstallFiles
+           action to determine which files need to be installed.
+         */
+        a->installed = FALSE;
     }
     else
     {
diff --git a/dlls/msi/files.c b/dlls/msi/files.c
index 7f71d1a..1f61873 100644
--- a/dlls/msi/files.c
+++ b/dlls/msi/files.c
@@ -74,7 +74,7 @@ static msi_file_state calculate_install_state( MSIFILE *file )
         TRACE("file %s is not scheduled for install\n", debugstr_w(file->File));
         return msifs_skipped;
     }
-    if ((comp->assembly && !comp->assembly->installed) ||
+    if ((comp->assembly && !comp->assembly->application && !comp->assembly->installed) ||
         GetFileAttributesW( file->TargetPath ) == INVALID_FILE_ATTRIBUTES)
     {
         TRACE("file %s is missing\n", debugstr_w(file->File));
-- 
1.7.1






More information about the wine-patches mailing list