diff --git a/dlls/msi/dialog.c b/dlls/msi/dialog.c index 9b619374271..245bfdcc11b 100644 --- a/dlls/msi/dialog.c +++ b/dlls/msi/dialog.c @@ -556,6 +556,17 @@ static void msi_dialog_update_controls( msi_dialog *dialog, LPCWSTR property ) } } +static void msi_dialog_update_all_controls( msi_dialog *dialog ) +{ + msi_control *control; + + LIST_FOR_EACH_ENTRY( control, &dialog->controls, msi_control, entry ) + { + if ( control->property && control->update ) + control->update( dialog, control ); + } +} + static void msi_dialog_set_property( MSIPACKAGE *package, LPCWSTR property, LPCWSTR value ) { UINT r = msi_set_property( package->db, property, value, -1 ); @@ -4389,7 +4400,11 @@ static UINT event_spawn_dialog( msi_dialog *dialog, const WCHAR *argument ) { /* don't destroy a modeless dialogs that might be our parent */ event_do_dialog( dialog->package, argument, dialog, FALSE ); - if (dialog->package->CurrentInstallState != ERROR_SUCCESS) msi_dialog_end_dialog( dialog ); + if (dialog->package->CurrentInstallState != ERROR_SUCCESS) + msi_dialog_end_dialog( dialog ); + else + msi_dialog_update_all_controls(dialog); + return ERROR_SUCCESS; }