Commit 39d6b6eb authored by Hans Leidekker's avatar Hans Leidekker Committed by Alexandre Julliard

msi: Handle fdintNEXT_CABINET and fdintPARTIAL_FILE for cabinet streams.

parent d7337031
......@@ -358,6 +358,40 @@ done:
return res;
}
static INT_PTR cabinet_next_cabinet_stream( FDINOTIFICATIONTYPE fdint,
PFDINOTIFICATION pfdin )
{
MSICABDATA *data = pfdin->pv;
MSIMEDIAINFO *mi = data->mi;
UINT rc;
msi_free( mi->disk_prompt );
msi_free( mi->cabinet );
msi_free( mi->volume_label );
mi->disk_prompt = NULL;
mi->cabinet = NULL;
mi->volume_label = NULL;
mi->disk_id++;
mi->is_continuous = TRUE;
rc = msi_media_get_disk_info( data->package, mi );
if (rc != ERROR_SUCCESS)
{
ERR("Failed to get next cabinet information: %u\n", rc);
return -1;
}
msi_free( cab_stream.name );
cab_stream.name = encode_streamname( FALSE, mi->cabinet + 1 );
if (!cab_stream.name)
return -1;
TRACE("next cabinet is %s\n", debugstr_w(mi->cabinet));
return 0;
}
static INT_PTR cabinet_copy_file(FDINOTIFICATIONTYPE fdint,
PFDINOTIFICATION pfdin)
{
......@@ -494,6 +528,12 @@ static INT_PTR CDECL cabinet_notify_stream( FDINOTIFICATIONTYPE fdint, PFDINOTIF
{
switch (fdint)
{
case fdintPARTIAL_FILE:
return cabinet_partial_file( fdint, pfdin );
case fdintNEXT_CABINET:
return cabinet_next_cabinet_stream( fdint, pfdin );
case fdintCOPY_FILE:
return cabinet_copy_file( fdint, pfdin );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment