Module: wine Branch: master Commit: 31a9b087c15b7798d7c5b7766f151522add47028 URL: http://source.winehq.org/git/wine.git/?a=commit;h=31a9b087c15b7798d7c5b7766f...
Author: James Hawkins truiken@gmail.com Date: Mon Nov 13 14:18:54 2006 -0800
msi: Notify the external UI handler when changing media.
---
dlls/msi/dialog.c | 4 ++++ dlls/msi/files.c | 12 +++++++++++- 2 files changed, 15 insertions(+), 1 deletions(-)
diff --git a/dlls/msi/dialog.c b/dlls/msi/dialog.c index d928edc..a134aea 100644 --- a/dlls/msi/dialog.c +++ b/dlls/msi/dialog.c @@ -3505,6 +3505,7 @@ UINT msi_spawn_error_dialog( MSIPACKAGE DWORD size = MAX_PATH; int res;
+ static const WCHAR szUILevel[] = {'U','I','L','e','v','e','l',0}; static const WCHAR pn_prop[] = {'P','r','o','d','u','c','t','N','a','m','e',0}; static const WCHAR title_fmt[] = {'%','s',' ','W','a','r','n','i','n','g',0}; static const WCHAR error_abort[] = {'E','r','r','o','r','A','b','o','r','t',0}; @@ -3512,6 +3513,9 @@ UINT msi_spawn_error_dialog( MSIPACKAGE 'M','S','I','E','r','r','o','r','D','i','a','l','o','g','R','e','s','u','l','t',0 };
+ if ( msi_get_property_int(package, szUILevel, 0) == INSTALLUILEVEL_NONE ) + return ERROR_SUCCESS; + if ( !error_dialog ) { LPWSTR product_name = msi_dup_property( package, pn_prop ); diff --git a/dlls/msi/files.c b/dlls/msi/files.c index dc81e6a..8d3992e 100644 --- a/dlls/msi/files.c +++ b/dlls/msi/files.c @@ -69,21 +69,31 @@ struct media_info {
static UINT msi_change_media( MSIPACKAGE *package, struct media_info *mi ) { + LPSTR msg; LPWSTR error, error_dialog; UINT r = ERROR_SUCCESS;
static const WCHAR szUILevel[] = {'U','I','L','e','v','e','l',0}; static const WCHAR error_prop[] = {'E','r','r','o','r','D','i','a','l','o','g',0};
- if ( msi_get_property_int(package, szUILevel, 0) == INSTALLUILEVEL_NONE ) + if ( msi_get_property_int(package, szUILevel, 0) == INSTALLUILEVEL_NONE && !gUIHandlerA ) return ERROR_SUCCESS;
error = generate_error_string( package, 1302, 1, mi->disk_prompt ); error_dialog = msi_dup_property( package, error_prop );
while ( r == ERROR_SUCCESS && GetFileAttributesW( mi->source ) == INVALID_FILE_ATTRIBUTES ) + { r = msi_spawn_error_dialog( package, error_dialog, error );
+ if (gUIHandlerA) + { + msg = strdupWtoA( error ); + gUIHandlerA( gUIContext, MB_RETRYCANCEL | INSTALLMESSAGE_ERROR, msg ); + msi_free(msg); + } + } + msi_free( error ); msi_free( error_dialog );