msi: Add support for the ActionInfo progress message subtype.

This commit is contained in:
Hans Leidekker 2012-05-15 09:40:22 +02:00 committed by Alexandre Julliard
parent 6c7d0993f0
commit 4b32c09376
4 changed files with 14 additions and 2 deletions

View File

@ -7340,6 +7340,7 @@ UINT ACTION_PerformUIAction(MSIPACKAGE *package, const WCHAR *action, UINT scrip
TRACE("Performing action (%s)\n", debugstr_w(action)); TRACE("Performing action (%s)\n", debugstr_w(action));
package->action_progress_increment = 0;
handled = ACTION_HandleStandardAction(package, action, &rc); handled = ACTION_HandleStandardAction(package, action, &rc);
if (!handled) if (!handled)

View File

@ -664,7 +664,9 @@ void msi_dialog_handle_event( msi_dialog* dialog, LPCWSTR control,
SendMessageW( ctrl->hwnd, PBM_SETPOS, 0, 0 ); SendMessageW( ctrl->hwnd, PBM_SETPOS, 0, 0 );
} }
break; break;
case 1: /* FIXME: not sure what this is supposed to do */ case 1: /* action data increment */
if (val2) dialog->package->action_progress_increment = val1;
else dialog->package->action_progress_increment = 0;
break; break;
case 2: /* move */ case 2: /* move */
if (ctrl->progress_backwards) if (ctrl->progress_backwards)

View File

@ -369,6 +369,7 @@ typedef struct tagMSIPACKAGE
struct list cabinet_streams; struct list cabinet_streams;
LPWSTR ActionFormat; LPWSTR ActionFormat;
LPWSTR LastAction; LPWSTR LastAction;
UINT action_progress_increment;
HANDLE log_file; HANDLE log_file;
IAssemblyCache *cache_net[CLR_VERSION_MAX]; IAssemblyCache *cache_net[CLR_VERSION_MAX];
IAssemblyCache *cache_sxs; IAssemblyCache *cache_sxs;

View File

@ -1905,8 +1905,16 @@ INT MSI_ProcessMessage( MSIPACKAGE *package, INSTALLMESSAGE eMessageType, MSIREC
msi_free(deformated); msi_free(deformated);
ControlEvent_FireSubscribedEvent(package, szActionData, uirow); ControlEvent_FireSubscribedEvent(package, szActionData, uirow);
msiobj_release(&uirow->hdr); msiobj_release(&uirow->hdr);
if (package->action_progress_increment)
{
uirow = MSI_CreateRecord(2);
MSI_RecordSetInteger(uirow, 1, 2);
MSI_RecordSetInteger(uirow, 2, package->action_progress_increment);
ControlEvent_FireSubscribedEvent(package, szSetProgress, uirow);
msiobj_release(&uirow->hdr);
}
break; break;
case INSTALLMESSAGE_ACTIONSTART: case INSTALLMESSAGE_ACTIONSTART: