[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