msi: Search the patch package for source cabinet files.
This commit is contained in:
parent
ecd35a0267
commit
9a4ba8c114
|
@ -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;
|
||||
|
|
|
@ -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 );
|
||||
|
|
|
@ -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 ) )
|
||||
|
|
Loading…
Reference in New Issue