Hans Leidekker : msi: Let the InstallFiles action determine which private assembly files to install .
Alexandre Julliard
julliard at winehq.org
Wed Mar 16 12:22:36 CDT 2011
Module: wine
Branch: master
Commit: bb40bebd2b62a8a6e8dd8fdf34aa8a3908a91a24
URL: http://source.winehq.org/git/wine.git/?a=commit;h=bb40bebd2b62a8a6e8dd8fdf34aa8a3908a91a24
Author: Hans Leidekker <hans at 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));
More information about the wine-cvs
mailing list