Hans Leidekker : msi: Detect privately installed assemblies.
Alexandre Julliard
julliard at winehq.org
Wed Mar 25 10:31:33 CDT 2009
Module: wine
Branch: master
Commit: 9c6e6efa32976e9a91330bf5bd1c0be02d6b6167
URL: http://source.winehq.org/git/wine.git/?a=commit;h=9c6e6efa32976e9a91330bf5bd1c0be02d6b6167
Author: Hans Leidekker <hans at codeweavers.com>
Date: Wed Mar 25 13:52:56 2009 +0100
msi: Detect privately installed assemblies.
Another fix for the office 2007 sp1 installer.
---
dlls/msi/action.c | 21 ++++++++++++++++++---
1 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/dlls/msi/action.c b/dlls/msi/action.c
index ce038a1..92b95df 100644
--- a/dlls/msi/action.c
+++ b/dlls/msi/action.c
@@ -6070,9 +6070,24 @@ static UINT load_assembly(MSIRECORD *rec, LPVOID param)
assembly->manifest = strdupW(MSI_RecordGetString(rec, 3));
assembly->application = strdupW(MSI_RecordGetString(rec, 4));
assembly->attributes = MSI_RecordGetInteger(rec, 5);
- assembly->installed = check_assembly_installed(list->package->db,
- list->cache,
- assembly->component);
+
+ if (assembly->application)
+ {
+ WCHAR version[24];
+ DWORD size = sizeof(version)/sizeof(WCHAR);
+
+ /* FIXME: we should probably check the manifest file here */
+
+ if (!MsiGetFileVersionW(assembly->file->TargetPath, version, &size, NULL, NULL) &&
+ strcmpW(version, assembly->file->Version) >= 0)
+ {
+ assembly->installed = TRUE;
+ }
+ }
+ else
+ assembly->installed = check_assembly_installed(list->package->db,
+ list->cache,
+ assembly->component);
list_add_head(list->assemblies, &assembly->entry);
return ERROR_SUCCESS;
More information about the wine-cvs
mailing list