[ZIPFLDR] Show error when compression method is not supported

CORE-17255
This commit is contained in:
Stanislav Motylkov 2021-10-06 01:04:50 +03:00
parent 5da934e34d
commit 7e3a7a0e84
No known key found for this signature in database
GPG key ID: AFE513258CBA9E92
16 changed files with 36 additions and 4 deletions

View file

@ -590,7 +590,6 @@ public:
break; break;
case eExtractAbort: case eExtractAbort:
case eOpenError:
case eUnpackError: case eUnpackError:
{ {
Close(); Close();
@ -627,6 +626,20 @@ public:
} }
break; break;
} }
case eOpenError:
{
if (err == UNZ_BADZIPFILE &&
Info.compression_method != 0 &&
Info.compression_method != Z_DEFLATED &&
Info.compression_method != Z_BZIP2ED)
{
if (ShowExtractError(hDlg, FullPath, Info.compression_method, eOpenError) == IDYES)
break;
}
Close();
return false;
}
} }
if (Result == eNoError && is_dir) if (Result == eNoError && is_dir)
continue; continue;
@ -643,7 +656,7 @@ public:
CStringA strErr, strText; CStringA strErr, strText;
PSTR Win32ErrorString; PSTR Win32ErrorString;
if (ErrorType == eFileError) if (ErrorType == eFileError || ErrorType == eOpenError)
strText.LoadString(IDS_CANTEXTRACTFILE); strText.LoadString(IDS_CANTEXTRACTFILE);
else else
strText.LoadString(GetModuleHandleA("shell32.dll"), 128); // IDS_CREATEFOLDER_DENIED strText.LoadString(GetModuleHandleA("shell32.dll"), 128); // IDS_CREATEFOLDER_DENIED
@ -660,7 +673,9 @@ public:
LocalFree(Win32ErrorString); LocalFree(Win32ErrorString);
} }
} }
if (strErr.GetLength() == 0) if (ErrorType == eOpenError)
strErr.Format(IDS_DECOMPRESSERROR, Error);
else if (strErr.GetLength() == 0)
strErr.Format(IDS_UNKNOWNERROR, Error); strErr.Format(IDS_UNKNOWNERROR, Error);
strText.Append("\r\n\r\n" + strErr); strText.Append("\r\n\r\n" + strErr);
@ -670,6 +685,8 @@ public:
mbFlags |= MB_RETRYCANCEL; mbFlags |= MB_RETRYCANCEL;
else if (ErrorType == eFileError) else if (ErrorType == eFileError)
mbFlags |= MB_ABORTRETRYIGNORE; mbFlags |= MB_ABORTRETRYIGNORE;
else if (ErrorType == eOpenError)
mbFlags |= MB_YESNO;
return MessageBoxA(hDlg, strText, strTitle, mbFlags); return MessageBoxA(hDlg, strText, strTitle, mbFlags);
} }

View file

@ -77,6 +77,7 @@ BEGIN
IDS_CANTREADFILE "Datei '%s' konnte nicht gelesen werden." IDS_CANTREADFILE "Datei '%s' konnte nicht gelesen werden."
IDS_EXTRACTING "Extrahieren..." IDS_EXTRACTING "Extrahieren..."
IDS_CANTEXTRACTFILE "Datei '%1' konnte nicht extrahiert werden." IDS_CANTEXTRACTFILE "Datei '%1' konnte nicht extrahiert werden."
IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?"
IDS_UNKNOWNERROR "Unbekannter Fehler 0x%08x." IDS_UNKNOWNERROR "Unbekannter Fehler 0x%08x."
IDS_WIZ_TITLE "Extrahier-Assistent" IDS_WIZ_TITLE "Extrahier-Assistent"

View file

@ -77,6 +77,7 @@ BEGIN
IDS_CANTREADFILE "Cannot read file '%s'." IDS_CANTREADFILE "Cannot read file '%s'."
IDS_EXTRACTING "Extracting..." IDS_EXTRACTING "Extracting..."
IDS_CANTEXTRACTFILE "Cannot extract file '%1'." IDS_CANTEXTRACTFILE "Cannot extract file '%1'."
IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?"
IDS_UNKNOWNERROR "Unknown error 0x%08x." IDS_UNKNOWNERROR "Unknown error 0x%08x."
IDS_WIZ_TITLE "Extraction Wizard" IDS_WIZ_TITLE "Extraction Wizard"

View file

@ -77,6 +77,7 @@ BEGIN
IDS_CANTREADFILE "Cannot read file '%s'." IDS_CANTREADFILE "Cannot read file '%s'."
IDS_EXTRACTING "Ekstraktimine..." IDS_EXTRACTING "Ekstraktimine..."
IDS_CANTEXTRACTFILE "Cannot extract file '%1'." IDS_CANTEXTRACTFILE "Cannot extract file '%1'."
IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?"
IDS_UNKNOWNERROR "Unknown error 0x%08x." IDS_UNKNOWNERROR "Unknown error 0x%08x."
IDS_WIZ_TITLE "Ekstraktimise visard" IDS_WIZ_TITLE "Ekstraktimise visard"

View file

@ -77,6 +77,7 @@ BEGIN
IDS_CANTREADFILE "Cannot read file '%s'." IDS_CANTREADFILE "Cannot read file '%s'."
IDS_EXTRACTING "Extraction..." IDS_EXTRACTING "Extraction..."
IDS_CANTEXTRACTFILE "Cannot extract file '%1'." IDS_CANTEXTRACTFILE "Cannot extract file '%1'."
IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?"
IDS_UNKNOWNERROR "Unknown error 0x%08x." IDS_UNKNOWNERROR "Unknown error 0x%08x."
IDS_WIZ_TITLE "Assistant d'extraction" IDS_WIZ_TITLE "Assistant d'extraction"

View file

@ -64,6 +64,7 @@ BEGIN
IDS_CANTREADFILE "Cannot read file '%s'." IDS_CANTREADFILE "Cannot read file '%s'."
IDS_EXTRACTING "Extracting..." IDS_EXTRACTING "Extracting..."
IDS_CANTEXTRACTFILE "Cannot extract file '%1'." IDS_CANTEXTRACTFILE "Cannot extract file '%1'."
IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?"
IDS_UNKNOWNERROR "Unknown error 0x%08x." IDS_UNKNOWNERROR "Unknown error 0x%08x."
IDS_WIZ_TITLE "निष्कर्षण विज़ार्ड" IDS_WIZ_TITLE "निष्कर्षण विज़ार्ड"

View file

@ -77,6 +77,7 @@ BEGIN
IDS_CANTREADFILE "Cannot read file '%s'." IDS_CANTREADFILE "Cannot read file '%s'."
IDS_EXTRACTING "Estrazione..." IDS_EXTRACTING "Estrazione..."
IDS_CANTEXTRACTFILE "Cannot extract file '%1'." IDS_CANTEXTRACTFILE "Cannot extract file '%1'."
IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?"
IDS_UNKNOWNERROR "Unknown error 0x%08x." IDS_UNKNOWNERROR "Unknown error 0x%08x."
IDS_WIZ_TITLE "Estrazione Guidata" IDS_WIZ_TITLE "Estrazione Guidata"

View file

@ -77,6 +77,7 @@ BEGIN
IDS_CANTREADFILE "ファイル '%s' が読めません。" IDS_CANTREADFILE "ファイル '%s' が読めません。"
IDS_EXTRACTING "展開中..." IDS_EXTRACTING "展開中..."
IDS_CANTEXTRACTFILE "Cannot extract file '%1'." IDS_CANTEXTRACTFILE "Cannot extract file '%1'."
IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?"
IDS_UNKNOWNERROR "Unknown error 0x%08x." IDS_UNKNOWNERROR "Unknown error 0x%08x."
IDS_WIZ_TITLE "展開ウィザード" IDS_WIZ_TITLE "展開ウィザード"

View file

@ -78,6 +78,7 @@ BEGIN
IDS_CANTREADFILE "Błąd podczas czytania pliku '%s'." IDS_CANTREADFILE "Błąd podczas czytania pliku '%s'."
IDS_EXTRACTING "Trwa wyodrębnianie..." IDS_EXTRACTING "Trwa wyodrębnianie..."
IDS_CANTEXTRACTFILE "Cannot extract file '%1'." IDS_CANTEXTRACTFILE "Cannot extract file '%1'."
IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?"
IDS_UNKNOWNERROR "Unknown error 0x%08x." IDS_UNKNOWNERROR "Unknown error 0x%08x."
IDS_WIZ_TITLE "Kreator wyodrębniania" IDS_WIZ_TITLE "Kreator wyodrębniania"

View file

@ -77,6 +77,7 @@ BEGIN
IDS_CANTREADFILE "Não é possível ler o arquivo '%s'." IDS_CANTREADFILE "Não é possível ler o arquivo '%s'."
IDS_EXTRACTING "A extrair..." IDS_EXTRACTING "A extrair..."
IDS_CANTEXTRACTFILE "Cannot extract file '%1'." IDS_CANTEXTRACTFILE "Cannot extract file '%1'."
IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?"
IDS_UNKNOWNERROR "Unknown error 0x%08x." IDS_UNKNOWNERROR "Unknown error 0x%08x."
IDS_WIZ_TITLE "Assistente de extração" IDS_WIZ_TITLE "Assistente de extração"

View file

@ -77,6 +77,7 @@ BEGIN
IDS_CANTREADFILE "Cannot read file '%s'." IDS_CANTREADFILE "Cannot read file '%s'."
IDS_EXTRACTING "Extragere..." IDS_EXTRACTING "Extragere..."
IDS_CANTEXTRACTFILE "Cannot extract file '%1'." IDS_CANTEXTRACTFILE "Cannot extract file '%1'."
IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?"
IDS_UNKNOWNERROR "Unknown error 0x%08x." IDS_UNKNOWNERROR "Unknown error 0x%08x."
IDS_WIZ_TITLE "Asistent de extracție" IDS_WIZ_TITLE "Asistent de extracție"

View file

@ -77,6 +77,7 @@ BEGIN
IDS_CANTREADFILE "Не удалось прочитать файл '%s'." IDS_CANTREADFILE "Не удалось прочитать файл '%s'."
IDS_EXTRACTING "Извлечение..." IDS_EXTRACTING "Извлечение..."
IDS_CANTEXTRACTFILE "Не удалось извлечь файл '%1'." IDS_CANTEXTRACTFILE "Не удалось извлечь файл '%1'."
IDS_DECOMPRESSERROR "Неизвестный метод компрессии %d. Продолжить?"
IDS_UNKNOWNERROR "Неизвестная ошибка 0x%08x." IDS_UNKNOWNERROR "Неизвестная ошибка 0x%08x."
IDS_WIZ_TITLE "Мастер извлечения архивов" IDS_WIZ_TITLE "Мастер извлечения архивов"

View file

@ -77,6 +77,7 @@ BEGIN
IDS_CANTREADFILE "Cannot read file '%s'." IDS_CANTREADFILE "Cannot read file '%s'."
IDS_EXTRACTING "Extraherar..." IDS_EXTRACTING "Extraherar..."
IDS_CANTEXTRACTFILE "Cannot extract file '%1'." IDS_CANTEXTRACTFILE "Cannot extract file '%1'."
IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?"
IDS_UNKNOWNERROR "Unknown error 0x%08x." IDS_UNKNOWNERROR "Unknown error 0x%08x."
IDS_WIZ_TITLE "Extraheringsguiden" IDS_WIZ_TITLE "Extraheringsguiden"

View file

@ -77,6 +77,7 @@ BEGIN
IDS_CANTREADFILE "Cannot read file '%s'." IDS_CANTREADFILE "Cannot read file '%s'."
IDS_EXTRACTING "正在解压..." IDS_EXTRACTING "正在解压..."
IDS_CANTEXTRACTFILE "Cannot extract file '%1'." IDS_CANTEXTRACTFILE "Cannot extract file '%1'."
IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?"
IDS_UNKNOWNERROR "Unknown error 0x%08x." IDS_UNKNOWNERROR "Unknown error 0x%08x."
IDS_WIZ_TITLE "解压向导" IDS_WIZ_TITLE "解压向导"

View file

@ -80,6 +80,7 @@ BEGIN
IDS_CANTREADFILE "無法讀取檔案 '%s'." IDS_CANTREADFILE "無法讀取檔案 '%s'."
IDS_EXTRACTING "正在解壓縮..." IDS_EXTRACTING "正在解壓縮..."
IDS_CANTEXTRACTFILE "Cannot extract file '%1'." IDS_CANTEXTRACTFILE "Cannot extract file '%1'."
IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?"
IDS_UNKNOWNERROR "Unknown error 0x%08x." IDS_UNKNOWNERROR "Unknown error 0x%08x."
IDS_WIZ_TITLE "解壓縮精靈" IDS_WIZ_TITLE "解壓縮精靈"

View file

@ -48,7 +48,8 @@
#define IDS_CANTREADFILE 113 #define IDS_CANTREADFILE 113
#define IDS_EXTRACTING 114 #define IDS_EXTRACTING 114
#define IDS_CANTEXTRACTFILE 115 #define IDS_CANTEXTRACTFILE 115
#define IDS_UNKNOWNERROR 116 #define IDS_DECOMPRESSERROR 116
#define IDS_UNKNOWNERROR 117
/* Wizard titles */ /* Wizard titles */
#define IDS_WIZ_TITLE 8000 #define IDS_WIZ_TITLE 8000