Module: wine Branch: master Commit: bb40bebd2b62a8a6e8dd8fdf34aa8a3908a91a24 URL: http://source.winehq.org/git/wine.git/?a=commit;h=bb40bebd2b62a8a6e8dd8fdf34...
Author: Hans Leidekker hans@codeweavers.com Date: Wed Mar 16 09:22:59 2011 +0100
msi: Let the InstallFiles action determine which private assembly files to install.
---
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));