msi: Detect privately installed assemblies.

Another fix for the office 2007 sp1 installer.
This commit is contained in:
Hans Leidekker 2009-03-25 13:52:56 +01:00 committed by Alexandre Julliard
parent c2221f325f
commit 9c6e6efa32
1 changed files with 18 additions and 3 deletions

View File

@ -6070,6 +6070,21 @@ 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);
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);