X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Fdll%2Fwin32%2Fmsi%2Fmedia.c;h=82fb414667e1ae3984c552d40fef167f2b2733cd;hp=0ec76bd1ca9e8b098cc4603ceb430a7afe955d01;hb=07bd1f96bd7fcaa812701b8bd481a01b8d06b893;hpb=d2a93c234a43b61e671ce9a248adfbcfb52d8017;ds=sidebyside diff --git a/reactos/dll/win32/msi/media.c b/reactos/dll/win32/msi/media.c index 0ec76bd1ca9..82fb414667e 100644 --- a/reactos/dll/win32/msi/media.c +++ b/reactos/dll/win32/msi/media.c @@ -70,7 +70,6 @@ static BOOL source_matches_volume(MSIMEDIAINFO *mi, LPCWSTR source_root) static UINT msi_change_media(MSIPACKAGE *package, MSIMEDIAINFO *mi) { - LPSTR msg; LPWSTR error, error_dialog; LPWSTR source_dir; UINT r = ERROR_SUCCESS; @@ -78,24 +77,34 @@ static UINT msi_change_media(MSIPACKAGE *package, MSIMEDIAINFO *mi) 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_MASK) == - INSTALLUILEVEL_NONE && !gUIHandlerA) + INSTALLUILEVEL_NONE && !gUIHandlerA && !gUIHandlerW && !gUIHandlerRecord) return ERROR_SUCCESS; error = generate_error_string(package, 1302, 1, mi->disk_prompt); error_dialog = msi_dup_property(package, error_prop); source_dir = msi_dup_property(package, cszSourceDir); - while (r == ERROR_SUCCESS && - !source_matches_volume(mi, source_dir)) + while (r == ERROR_SUCCESS && !source_matches_volume(mi, source_dir)) { r = msi_spawn_error_dialog(package, error_dialog, error); - if (gUIHandlerA) + if (gUIHandlerW) { - msg = strdupWtoA(error); + gUIHandlerW(gUIContext, MB_RETRYCANCEL | INSTALLMESSAGE_ERROR, error); + } + else if (gUIHandlerA) + { + char *msg = strdupWtoA(error); gUIHandlerA(gUIContext, MB_RETRYCANCEL | INSTALLMESSAGE_ERROR, msg); msi_free(msg); } + else if (gUIHandlerRecord) + { + MSIHANDLE rec = MsiCreateRecord(1); + MsiRecordSetStringW(rec, 0, error); + gUIHandlerRecord(gUIContext, MB_RETRYCANCEL | INSTALLMESSAGE_ERROR, rec); + MsiCloseHandle(rec); + } } msi_free(error);