msi: Search the patch package for source cabinet files.

This commit is contained in:
Mike McCormack 2006-11-01 15:09:23 +09:00 committed by Alexandre Julliard
parent ecd35a0267
commit 9a4ba8c114
3 changed files with 19 additions and 8 deletions

View File

@ -526,6 +526,13 @@ static UINT msi_apply_patch_package( MSIPACKAGE *package, LPCWSTR file )
}
msi_parse_patch_summary( package, patch_db );
/*
* There might be a CAB file in the patch package,
* so append it to the list of storage to search for streams.
*/
append_storage_to_db( package->db, patch_db->storage );
msiobj_release( &patch_db->hdr );
return ERROR_SUCCESS;

View File

@ -563,6 +563,7 @@ extern UINT read_raw_stream_data( MSIDATABASE*, LPCWSTR stname,
extern UINT msi_table_apply_transform( MSIDATABASE *db, IStorage *stg );
extern UINT MSI_DatabaseApplyTransformW( MSIDATABASE *db,
LPCWSTR szTransformFile, int iErrorCond );
extern void append_storage_to_db( MSIDATABASE *db, IStorage *stg );
/* action internals */
extern UINT MSI_InstallPackage( MSIPACKAGE *, LPCWSTR, LPCWSTR );

View File

@ -2101,14 +2101,7 @@ UINT msi_table_apply_transform( MSIDATABASE *db, IStorage *stg )
}
if ( ret == ERROR_SUCCESS )
{
MSITRANSFORM *t;
t = msi_alloc( sizeof *t );
t->stg = stg;
IStorage_AddRef( stg );
list_add_tail( &db->transforms, &t->entry );
}
append_storage_to_db( db, stg );
end:
if ( stgenum )
@ -2119,6 +2112,16 @@ end:
return ret;
}
void append_storage_to_db( MSIDATABASE *db, IStorage *stg )
{
MSITRANSFORM *t;
t = msi_alloc( sizeof *t );
t->stg = stg;
IStorage_AddRef( stg );
list_add_tail( &db->transforms, &t->entry );
}
void msi_free_transforms( MSIDATABASE *db )
{
while( !list_empty( &db->transforms ) )