https://git.reactos.org/?p=reactos.git;a=commitdiff;h=daee508516ac190e7e2197e7cc051b2968d031b4

commit daee508516ac190e7e2197e7cc051b2968d031b4
Author:     Hermès Bélusca-Maïto <hermes.belusca-ma...@reactos.org>
AuthorDate: Tue Jul 30 13:34:56 2024 +0200
Commit:     Hermès Bélusca-Maïto <hermes.belusca-ma...@reactos.org>
CommitDate: Mon Aug 12 12:46:22 2024 +0200

    [SETUP:REACTOS] Validate the installation path (#7162)
    CORE-13525
---
 base/setup/reactos/drivepage.c   | 226 +++++++++++++++++++++++++++++++++++++--
 base/setup/reactos/lang/bg-BG.rc |  19 ++++
 base/setup/reactos/lang/cs-CZ.rc |  19 ++++
 base/setup/reactos/lang/de-DE.rc |  19 ++++
 base/setup/reactos/lang/el-GR.rc |  19 ++++
 base/setup/reactos/lang/en-US.rc |  19 ++++
 base/setup/reactos/lang/es-ES.rc |  19 ++++
 base/setup/reactos/lang/et-EE.rc |  19 ++++
 base/setup/reactos/lang/eu-ES.rc |  19 ++++
 base/setup/reactos/lang/fi-FI.rc |  19 ++++
 base/setup/reactos/lang/fr-FR.rc |  19 ++++
 base/setup/reactos/lang/he-IL.rc |  19 ++++
 base/setup/reactos/lang/hi-IN.rc |  19 ++++
 base/setup/reactos/lang/hu-HU.rc |  19 ++++
 base/setup/reactos/lang/id-ID.rc |  19 ++++
 base/setup/reactos/lang/it-IT.rc |  19 ++++
 base/setup/reactos/lang/ja-JP.rc |  19 ++++
 base/setup/reactos/lang/ms-MY.rc |  19 ++++
 base/setup/reactos/lang/no-NO.rc |  19 ++++
 base/setup/reactos/lang/pl-PL.rc |  19 ++++
 base/setup/reactos/lang/pt-BR.rc |  19 ++++
 base/setup/reactos/lang/pt-PT.rc |  19 ++++
 base/setup/reactos/lang/ro-RO.rc |  19 ++++
 base/setup/reactos/lang/ru-RU.rc |  19 ++++
 base/setup/reactos/lang/sk-SK.rc |  19 ++++
 base/setup/reactos/lang/sq-AL.rc |  19 ++++
 base/setup/reactos/lang/tr-TR.rc |  19 ++++
 base/setup/reactos/lang/uk-UA.rc |  19 ++++
 base/setup/reactos/lang/vi-VN.rc |  19 ++++
 base/setup/reactos/lang/zh-CN.rc |  19 ++++
 base/setup/reactos/lang/zh-HK.rc |  19 ++++
 base/setup/reactos/lang/zh-TW.rc |  19 ++++
 base/setup/reactos/resource.h    |   9 ++
 33 files changed, 818 insertions(+), 6 deletions(-)

diff --git a/base/setup/reactos/drivepage.c b/base/setup/reactos/drivepage.c
index ce038f5887d..320e0c62fa3 100644
--- a/base/setup/reactos/drivepage.c
+++ b/base/setup/reactos/drivepage.c
@@ -48,6 +48,182 @@ static const INT  column_alignment[MAX_LIST_COLUMNS] = 
{LVCFMT_LEFT, LVCFMT_LEFT
 
 /* FUNCTIONS ****************************************************************/
 
+/**
+ * @brief
+ * Sanitize a given string in-place, by
+ * removing any invalid character found in it.
+ **/
+static BOOL
+DoSanitizeText(
+    _Inout_ PWSTR pszSanitized)
+{
+    PWCHAR pch1, pch2;
+    BOOL bSanitized = FALSE;
+
+    for (pch1 = pch2 = pszSanitized; *pch1; ++pch1)
+    {
+        /* Skip any invalid character found */
+        if (!IS_VALID_INSTALL_PATH_CHAR(*pch1))
+        {
+            bSanitized = TRUE;
+            continue;
+        }
+
+        /* Copy over the valid ones */
+        *pch2 = *pch1;
+        ++pch2;
+    }
+    *pch2 = 0;
+
+    return bSanitized;
+}
+
+/**
+ * @brief
+ * Sanitize in-place any text found in the clipboard.
+ **/
+static BOOL
+DoSanitizeClipboard(
+    _In_ HWND hWnd)
+{
+    HGLOBAL hData;
+    LPWSTR pszText, pszSanitized;
+    BOOL bSanitized;
+
+    /* Protect read-only edit control from modification */
+    if (GetWindowLongPtrW(hWnd, GWL_STYLE) & ES_READONLY)
+        return FALSE;
+
+    if (!OpenClipboard(hWnd))
+        return FALSE;
+
+    hData = GetClipboardData(CF_UNICODETEXT);
+    pszText = GlobalLock(hData);
+    if (!pszText)
+    {
+        CloseClipboard();
+        return FALSE;
+    }
+
+    pszSanitized = _wcsdup(pszText);
+    GlobalUnlock(hData);
+    bSanitized = (pszSanitized && DoSanitizeText(pszSanitized));
+    if (bSanitized)
+    {
+        /* Update clipboard text */
+        SIZE_T cbData = (wcslen(pszSanitized) + 1) * sizeof(WCHAR);
+        hData = GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE, cbData);
+        pszText = GlobalLock(hData);
+        if (pszText)
+        {
+            CopyMemory(pszText, pszSanitized, cbData);
+            GlobalUnlock(hData);
+            SetClipboardData(CF_UNICODETEXT, hData);
+        }
+    }
+    free(pszSanitized);
+
+    CloseClipboard();
+    return bSanitized;
+}
+
+static VOID
+ShowErrorTip(
+    _In_ HWND hEdit)
+{
+    EDITBALLOONTIP balloon;
+    WCHAR szTitle[512];
+    WCHAR szText[512];
+
+    /* Load the resources */
+    LoadStringW(SetupData.hInstance, IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE, 
szTitle, _countof(szTitle));
+    LoadStringW(SetupData.hInstance, IDS_ERROR_INVALID_INSTALLDIR_CHAR, 
szText, _countof(szText));
+
+    /* Show a warning balloon */
+    balloon.cbStruct = sizeof(balloon);
+    balloon.pszTitle = szTitle;
+    balloon.pszText  = szText;
+#if (_WIN32_WINNT < _WIN32_WINNT_VISTA)
+    balloon.ttiIcon  = TTI_ERROR;
+#else
+    balloon.ttiIcon  = TTI_ERROR_LARGE;
+#endif
+
+    MessageBeep(MB_ICONERROR);
+    Edit_ShowBalloonTip(hEdit, &balloon);
+
+    // NOTE: There is no need to hide it when other keys are pressed;
+    // the EDIT control will deal with that itself.
+}
+
+/**
+ * @brief
+ * Subclass edit window procedure to filter allowed characters
+ * for the ReactOS installation directory.
+ **/
+static LRESULT
+CALLBACK
+InstallDirEditProc(
+    _In_ HWND hWnd,
+    _In_ UINT uMsg,
+    _In_ WPARAM wParam,
+    _In_ LPARAM lParam)
+{
+    WNDPROC orgEditProc = (WNDPROC)GetWindowLongPtrW(hWnd, GWLP_USERDATA);
+
+    switch (uMsg)
+    {
+    case WM_UNICHAR:
+        if (wParam == UNICODE_NOCHAR)
+            return TRUE;
+        __fallthrough;
+
+    case WM_IME_CHAR:
+    case WM_CHAR:
+    {
+        WCHAR wch = (WCHAR)wParam;
+
+        /* Let the EDIT control deal with Control characters.
+         * It won't emit them as raw data in the text. */
+        if (wParam < ' ')
+            break;
+
+        /* Ignore Ctrl-Backspace */
+        if (wParam == '\x7F')
+            return 0;
+
+        /* Protect read-only edit control from modification */
+        if (GetWindowLongPtrW(hWnd, GWL_STYLE) & ES_READONLY)
+            break;
+
+        if (uMsg == WM_IME_CHAR)
+        {
+            if (!IsWindowUnicode(hWnd) && HIBYTE(wch) != 0)
+            {
+                CHAR data[] = {HIBYTE(wch), LOBYTE(wch)};
+                MultiByteToWideChar(CP_ACP, 0, data, 2, &wch, 1);
+            }
+        }
+
+        /* Show an error and ignore input character if it's invalid */
+        if (!IS_VALID_INSTALL_PATH_CHAR(wch))
+        {
+            ShowErrorTip(hWnd);
+            return 0;
+        }
+        break;
+    }
+
+    case WM_PASTE:
+        /* Verify the text being pasted; if it was sanitized, show an error */
+        if (DoSanitizeClipboard(hWnd))
+            ShowErrorTip(hWnd);
+        break;
+    }
+
+    return CallWindowProcW(orgEditProc, hWnd, uMsg, wParam, lParam);
+}
+
 static INT_PTR
 CALLBACK
 MoreOptDlgProc(
@@ -65,6 +241,8 @@ MoreOptDlgProc(
     {
         case WM_INITDIALOG:
         {
+            HWND hEdit;
+            WNDPROC orgEditProc;
             BOOL bIsBIOS;
             UINT uID;
             INT iItem, iCurrent = CB_ERR, iDefault = 0;
@@ -74,8 +252,14 @@ MoreOptDlgProc(
             pSetupData = (PSETUPDATA)lParam;
             SetWindowLongPtrW(hDlg, GWLP_USERDATA, (LONG_PTR)pSetupData);
 
-            SetDlgItemTextW(hDlg, IDC_PATH,
-                            pSetupData->USetupData.InstallationDirectory);
+            /* Subclass the install-dir edit control */
+            hEdit = GetDlgItem(hDlg, IDC_PATH);
+            orgEditProc = (WNDPROC)GetWindowLongPtrW(hEdit, GWLP_WNDPROC);
+            SetWindowLongPtrW(hEdit, GWLP_USERDATA, (LONG_PTR)orgEditProc);
+            SetWindowLongPtrW(hEdit, GWLP_WNDPROC, 
(LONG_PTR)InstallDirEditProc);
+
+            /* Set the current installation directory */
+            SetWindowTextW(hEdit, 
pSetupData->USetupData.InstallationDirectory);
 
 
             /* Initialize the list of available bootloader locations */
@@ -112,18 +296,48 @@ MoreOptDlgProc(
             break;
         }
 
+        case WM_DESTROY:
+        {
+            /* Unsubclass the edit control */
+            HWND hEdit = GetDlgItem(hDlg, IDC_PATH);
+            WNDPROC orgEditProc = (WNDPROC)GetWindowLongPtrW(hEdit, 
GWLP_USERDATA);
+            if (orgEditProc) SetWindowLongPtrW(hEdit, GWLP_WNDPROC, 
(LONG_PTR)orgEditProc);
+            break;
+        }
+
         case WM_COMMAND:
             switch (LOWORD(wParam))
             {
                 case IDOK:
                 {
+                    HWND hEdit;
+                    BOOL bIsValid;
+                    WCHAR InstallDir[MAX_PATH];
                     INT iItem;
                     UINT uBldrLoc = CB_ERR;
 
-                    /* Retrieve the installation path */
-                    GetDlgItemTextW(hDlg, IDC_PATH,
-                                    
pSetupData->USetupData.InstallationDirectory,
-                                    
ARRAYSIZE(pSetupData->USetupData.InstallationDirectory));
+                    /*
+                     * Retrieve the installation path and verify its validity.
+                     * Check for the validity of the installation directory and
+                     * pop up an error if this is not the case.
+                     */
+                    hEdit = GetDlgItem(hDlg, IDC_PATH);
+                    bIsValid = (GetWindowTextLengthW(hEdit) < 
_countof(InstallDir)); // && IsValidInstallDirectory(InstallDir);
+                    GetWindowTextW(hEdit, InstallDir, _countof(InstallDir));
+                    bIsValid = bIsValid && IsValidInstallDirectory(InstallDir);
+
+                    if (!bIsValid)
+                    {
+                        // ERROR_DIRECTORY_NAME
+                        DisplayError(hDlg,
+                                     IDS_ERROR_DIRECTORY_NAME_TITLE,
+                                     IDS_ERROR_DIRECTORY_NAME);
+                        break; // Go back to the dialog.
+                    }
+
+                    
StringCchCopyW(pSetupData->USetupData.InstallationDirectory,
+                                   
_countof(pSetupData->USetupData.InstallationDirectory),
+                                   InstallDir);
 
                     /* Retrieve the bootloader location */
                     iItem = SendDlgItemMessageW(hDlg, IDC_INSTFREELDR, 
CB_GETCURSEL, 0, 0);
diff --git a/base/setup/reactos/lang/bg-BG.rc b/base/setup/reactos/lang/bg-BG.rc
index fe86ea0ae03..cde5d823099 100644
--- a/base/setup/reactos/lang/bg-BG.rc
+++ b/base/setup/reactos/lang/bg-BG.rc
@@ -1,5 +1,7 @@
 LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "Настройка на РеактОС"
@@ -138,6 +140,8 @@ BEGIN
     LTEXT "Ако в устройството има КД, го извадете. След това натиснете 
„Приключване“, за да презапуснете компютъра.", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "РеактОС ви приветства!"
@@ -181,3 +185,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR и VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "Само VBR"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/cs-CZ.rc b/base/setup/reactos/lang/cs-CZ.rc
index d66d5577122..1c8bcd68ec4 100644
--- a/base/setup/reactos/lang/cs-CZ.rc
+++ b/base/setup/reactos/lang/cs-CZ.rc
@@ -6,6 +6,8 @@
 
 LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "Instalace systému ReactOS"
@@ -144,6 +146,8 @@ BEGIN
     LTEXT "Pokud je v mechanice instalační CD, vyjměte jej. Poté kliknutím na 
Dokončit restartujte počítač.", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "Vítejte v průvodci instalace systému ReactOS"
@@ -187,3 +191,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR a VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "Jen VBR"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/de-DE.rc b/base/setup/reactos/lang/de-DE.rc
index a32b0f4f1c8..0a76599772f 100644
--- a/base/setup/reactos/lang/de-DE.rc
+++ b/base/setup/reactos/lang/de-DE.rc
@@ -1,5 +1,7 @@
 LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "ReactOS-Setup"
@@ -138,6 +140,8 @@ BEGIN
     LTEXT "Wenn eine CD im Laufwerk ist, entfernen Sie diese. Klicken Sie zum 
Neustart auf Beenden.", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "Willkommen zum ReactOS-Setup"
@@ -181,3 +185,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR und VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "Nur VBR"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/el-GR.rc b/base/setup/reactos/lang/el-GR.rc
index f6141126f83..8348a9b228f 100644
--- a/base/setup/reactos/lang/el-GR.rc
+++ b/base/setup/reactos/lang/el-GR.rc
@@ -1,5 +1,7 @@
 LANGUAGE LANG_GREEK, SUBLANG_DEFAULT
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "Εγκατάσταση του ReactOS"
@@ -138,6 +140,8 @@ BEGIN
     LTEXT "Αν υπάρχει κάποιο CD, αφαιρέστε το. Έπειτα, για να γίνει 
επανεκκίνηση, πατήστε Ολοκλήρωση.", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "Καλώς ήλθατε στην Εγκατάσταση του ReactOS"
@@ -181,3 +185,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR and VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "VBR only"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/en-US.rc b/base/setup/reactos/lang/en-US.rc
index 0dc8e4daf55..b6ae3997385 100644
--- a/base/setup/reactos/lang/en-US.rc
+++ b/base/setup/reactos/lang/en-US.rc
@@ -1,5 +1,7 @@
 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "ReactOS Setup"
@@ -138,6 +140,8 @@ BEGIN
     LTEXT "If there is a CD in a drive, remove it. Then, to restart your 
computer, click Finish.", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "Welcome to ReactOS Setup"
@@ -181,3 +185,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR and VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "VBR only"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/es-ES.rc b/base/setup/reactos/lang/es-ES.rc
index bda7084c568..96d5468de4d 100644
--- a/base/setup/reactos/lang/es-ES.rc
+++ b/base/setup/reactos/lang/es-ES.rc
@@ -9,6 +9,8 @@
 
 LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "Instalación de ReactOS"
@@ -147,6 +149,8 @@ BEGIN
     LTEXT "Si tiene CDs en alguna unidad, retírelos. Luego, reinicie el equipo 
haciendo clic en Finalizar.", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "Bienvenido a la instalación de ReactOS"
@@ -190,3 +194,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR y VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "Solo VBR"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/et-EE.rc b/base/setup/reactos/lang/et-EE.rc
index e00f6578256..c0ee1855144 100644
--- a/base/setup/reactos/lang/et-EE.rc
+++ b/base/setup/reactos/lang/et-EE.rc
@@ -1,5 +1,7 @@
 LANGUAGE LANG_ESTONIAN, SUBLANG_DEFAULT
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "ReactOS'i paigaldamine"
@@ -138,6 +140,8 @@ BEGIN
     LTEXT "Võta CD välja ja vajuta Lõpeta, et arvuti taaskäivitada.", 
IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "Tere tulemast ReactOS'i paigaldama"
@@ -181,3 +185,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR ja VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "Ainult VBR"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/eu-ES.rc b/base/setup/reactos/lang/eu-ES.rc
index e5cdc518447..812d2d2d26e 100644
--- a/base/setup/reactos/lang/eu-ES.rc
+++ b/base/setup/reactos/lang/eu-ES.rc
@@ -7,6 +7,8 @@
 
 LANGUAGE LANG_BASQUE, SUBLANG_NEUTRAL
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "Instalación de ReactOS"
@@ -145,6 +147,8 @@ BEGIN
     LTEXT "Si tiene CDs en alguna unidad, retírelos. Luego, reinicie el equipo 
haciendo clic en Finalizar.", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "Bienvenido a la instalación de ReactOS"
@@ -188,3 +192,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR y VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "Solo VBR"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/fi-FI.rc b/base/setup/reactos/lang/fi-FI.rc
index 2e609008b04..55e67edafea 100644
--- a/base/setup/reactos/lang/fi-FI.rc
+++ b/base/setup/reactos/lang/fi-FI.rc
@@ -1,5 +1,7 @@
 LANGUAGE LANG_FINNISH, SUBLANG_DEFAULT
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "ReactOS Asennus"
@@ -138,6 +140,8 @@ BEGIN
     LTEXT "If there is a CD in a drive, remove it. Then, to restart your 
computer, click Finish.", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "Welcome to ReactOS Setup"
@@ -181,3 +185,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR and VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "VBR only"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/fr-FR.rc b/base/setup/reactos/lang/fr-FR.rc
index 9e5f79d46d3..a6d6a7f5957 100644
--- a/base/setup/reactos/lang/fr-FR.rc
+++ b/base/setup/reactos/lang/fr-FR.rc
@@ -1,5 +1,7 @@
 LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "Installation de ReactOS"
@@ -138,6 +140,8 @@ BEGIN
     LTEXT "S'il y a un CD dans le lecteur, retirez le. Appuyez ensuite sur 
Terminer pour redémarrer votre ordinateur.", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "Bienvenue dans l'installation de ReactOS"
@@ -181,3 +185,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR et VBR (par défaut)"
     IDS_BOOTLOADER_VBRONLY "VBR seulement"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Caractère invalide"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "Les seuls caractères valides sont :\n\
+alphanumériques (a-z, A-Z, 0-9), et\n . \\ - _\n\
+Les caractères d'espacement ne sont pas autorisés."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Chemin d'installation invalide"
+    IDS_ERROR_DIRECTORY_NAME "Le chemin d'installation de ReactOS doit être au 
format DOS de noms 8.3, \
+et contenir seulement des lettres, chiffres, tirets et points. Les caractères 
d'espacement ne sont pas autorisés."
+END
diff --git a/base/setup/reactos/lang/he-IL.rc b/base/setup/reactos/lang/he-IL.rc
index 58c7163ef60..f8a1f9f4efa 100644
--- a/base/setup/reactos/lang/he-IL.rc
+++ b/base/setup/reactos/lang/he-IL.rc
@@ -2,6 +2,8 @@
 
 LANGUAGE LANG_HEBREW, SUBLANG_DEFAULT
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "התקנת ReactOS"
@@ -140,6 +142,8 @@ BEGIN
     LTEXT "'אם יש דיסק בכונן, הסר אותו ואז, בשביל מחדש את המחשב לחץ על 'סיום", 
IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "ברוכים הבאים לתוכנית ההתקנה של ReactOS"
@@ -183,3 +187,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR and VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "VBR only"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/hi-IN.rc b/base/setup/reactos/lang/hi-IN.rc
index a56e99168e7..5508057de90 100644
--- a/base/setup/reactos/lang/hi-IN.rc
+++ b/base/setup/reactos/lang/hi-IN.rc
@@ -7,6 +7,8 @@
 
 LANGUAGE LANG_HINDI, SUBLANG_HINDI_INDIA
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "रिऐक्ट ओएस सेटअप"
@@ -116,6 +118,8 @@ BEGIN
     LTEXT "यदि ड्राइव में सीडी है, तो इसे हटा दें। फिर, अपने कंप्यूटर को 
पुनरारंभ करने के लिए, समाप्त क्लिक करें।", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "रिऐक्ट ओएस सेटअप में आपका स्वागत है"
@@ -151,3 +155,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR और VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "केवल VBR"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/hu-HU.rc b/base/setup/reactos/lang/hu-HU.rc
index 11f8196ad90..2721b9976a4 100644
--- a/base/setup/reactos/lang/hu-HU.rc
+++ b/base/setup/reactos/lang/hu-HU.rc
@@ -2,6 +2,8 @@
 
 LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "ReactOS telepítõ"
@@ -140,6 +142,8 @@ BEGIN
     LTEXT "If there is a CD in a drive, remove it. Then, to restart your 
computer, click Finish.", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "Welcome to ReactOS Setup"
@@ -183,3 +187,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR and VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "VBR only"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/id-ID.rc b/base/setup/reactos/lang/id-ID.rc
index 6cf0daafc68..297baa680c9 100644
--- a/base/setup/reactos/lang/id-ID.rc
+++ b/base/setup/reactos/lang/id-ID.rc
@@ -1,5 +1,7 @@
 LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "Penyetelan ReactOS"
@@ -138,6 +140,8 @@ BEGIN
     LTEXT "Jika terdapat CD pada drive, keluarkan. Lalu, untuk memulai ulang 
komputer, klik Selesai.", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "Selamat datang di Penyetelan ReactOS"
@@ -181,3 +185,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR dan VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "Hanya VBR"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/it-IT.rc b/base/setup/reactos/lang/it-IT.rc
index c31d0adbbe8..a5600a36ac1 100644
--- a/base/setup/reactos/lang/it-IT.rc
+++ b/base/setup/reactos/lang/it-IT.rc
@@ -1,5 +1,7 @@
 LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "Installazione di ReactOS"
@@ -138,6 +140,8 @@ BEGIN
     LTEXT "Se presente rimuovere il CD dal lettore e cliccare Fine per 
riavviare il computer.", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "Benvenuti nell'installazione di ReactOS"
@@ -181,3 +185,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR e VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "Solo VBR"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/ja-JP.rc b/base/setup/reactos/lang/ja-JP.rc
index cde8c5caea0..fa99cb5920f 100644
--- a/base/setup/reactos/lang/ja-JP.rc
+++ b/base/setup/reactos/lang/ja-JP.rc
@@ -1,5 +1,7 @@
 LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "ReactOS セットアップ"
@@ -138,6 +140,8 @@ BEGIN
     LTEXT "もしCDがドライブにあれば、取り除いて下さい。その後、あなたのコンピュータを再起動するには、完了をクリックして下さい。", 
IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "ReactOS セットアップにようこそ"
@@ -181,3 +185,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBRとVBR (Default)"
     IDS_BOOTLOADER_VBRONLY "VBRのみ"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/ms-MY.rc b/base/setup/reactos/lang/ms-MY.rc
index 657ca65a88f..8f9fa05cf93 100644
--- a/base/setup/reactos/lang/ms-MY.rc
+++ b/base/setup/reactos/lang/ms-MY.rc
@@ -2,6 +2,8 @@
 
 LANGUAGE LANG_MALAY, SUBLANG_DEFAULT
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "ReactOS Persediaan"
@@ -140,6 +142,8 @@ BEGIN
     LTEXT "Jika ada CD ke dalam pemacu, mengeluarkannya. Kemudian, untuk 
memulakan semula komputer anda, klik selesai.", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "Selamat datang ke persediaan ReactOS"
@@ -183,3 +187,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR dan VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "VBR sahaja"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/no-NO.rc b/base/setup/reactos/lang/no-NO.rc
index 81ecddef3e1..532c69978c8 100644
--- a/base/setup/reactos/lang/no-NO.rc
+++ b/base/setup/reactos/lang/no-NO.rc
@@ -1,5 +1,7 @@
 LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "ReactOS installering"
@@ -138,6 +140,8 @@ BEGIN
     LTEXT "Hvis du fortsatt har CD platen i stasjon, fjern denne. For å starte 
din datamaskin på nytt, trykk på Fullført.", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "Velkommen til ReactOS installering"
@@ -181,3 +185,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR og VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "Bare VBR"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/pl-PL.rc b/base/setup/reactos/lang/pl-PL.rc
index a533c9f4a16..4da8e183ba1 100644
--- a/base/setup/reactos/lang/pl-PL.rc
+++ b/base/setup/reactos/lang/pl-PL.rc
@@ -11,6 +11,8 @@
 
 LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "Instalator systemu ReactOS"
@@ -149,6 +151,8 @@ BEGIN
     LTEXT "Jeśli w napędzie jest płyta CD, wyjmij ją. Następnie Kliknij 
Zakończ, aby ponownie uruchomić komputer.", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "Witamy w Kreatorze instalacji systemu ReactOS"
@@ -192,3 +196,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR i VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "Tylko VBR"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/pt-BR.rc b/base/setup/reactos/lang/pt-BR.rc
index ca70662eb17..df377f37d10 100644
--- a/base/setup/reactos/lang/pt-BR.rc
+++ b/base/setup/reactos/lang/pt-BR.rc
@@ -1,5 +1,7 @@
 LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "Instalação do ReactOS"
@@ -138,6 +140,8 @@ BEGIN
     LTEXT "Se houver um CD no drive, remova-o. Após isto, clique em Finalizar 
para reiniciar o computador.", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "Bem-vindo(a) a Instalação do ReactOS"
@@ -181,3 +185,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR e VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "Apenas VBR"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/pt-PT.rc b/base/setup/reactos/lang/pt-PT.rc
index d780714347c..751d706b438 100644
--- a/base/setup/reactos/lang/pt-PT.rc
+++ b/base/setup/reactos/lang/pt-PT.rc
@@ -1,5 +1,7 @@
 LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "Instalação do ReactOS"
@@ -138,6 +140,8 @@ BEGIN
     LTEXT "Se houver um CD no drive, remova-o. Após isto, clique em Finalizar 
para reiniciar o computador.", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "Bem-vindo(a) a Instalação do ReactOS"
@@ -181,3 +185,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR e VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "Apenas VBR"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/ro-RO.rc b/base/setup/reactos/lang/ro-RO.rc
index 3ccc473806f..ef91e785bb8 100644
--- a/base/setup/reactos/lang/ro-RO.rc
+++ b/base/setup/reactos/lang/ro-RO.rc
@@ -9,6 +9,8 @@
 
 LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "Expert de instalare ReactOS"
@@ -147,6 +149,8 @@ BEGIN
     LTEXT "Dacă aveți vreun CD în calculator, scoateți-l, după care apăsați 
Sfârșit pentru a reporni.", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "Bun venit la instalarea ReactOS"
@@ -190,3 +194,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR și VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "Numai VBR"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/ru-RU.rc b/base/setup/reactos/lang/ru-RU.rc
index f2b7d48f67b..04217686a9c 100644
--- a/base/setup/reactos/lang/ru-RU.rc
+++ b/base/setup/reactos/lang/ru-RU.rc
@@ -1,5 +1,7 @@
 LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "Установка ReactOS"
@@ -138,6 +140,8 @@ BEGIN
     LTEXT "Вы можете извлечь установочный диск. Для перезагрузки компьютера 
нажмите клавишу ""Завершить"".", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "Вас приветствует программа установки ReactOS"
@@ -181,3 +185,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR и VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "Только VBR"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/sk-SK.rc b/base/setup/reactos/lang/sk-SK.rc
index c6f9489e2da..54e8d573ced 100644
--- a/base/setup/reactos/lang/sk-SK.rc
+++ b/base/setup/reactos/lang/sk-SK.rc
@@ -5,6 +5,8 @@
 
 LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "Inštalácia systému ReactOS" //ReactOS Setup
@@ -143,6 +145,8 @@ BEGIN
     LTEXT "If there is a CD in a drive, remove it. Then, to restart your 
computer, click Finish.", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "Víta Vás inštalátor systému ReactOS" //Welcome to ReactOS 
Setup
@@ -186,3 +190,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR a VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "Iba VBR"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/sq-AL.rc b/base/setup/reactos/lang/sq-AL.rc
index 4ab67eaa818..4d15c901b4a 100644
--- a/base/setup/reactos/lang/sq-AL.rc
+++ b/base/setup/reactos/lang/sq-AL.rc
@@ -2,6 +2,8 @@
 
 LANGUAGE LANG_ALBANIAN, SUBLANG_NEUTRAL
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "Instalimi i ReactOS"
@@ -140,6 +142,8 @@ BEGIN
     LTEXT "Nëse keni nje CD në drive, hiqeni. Pastaj, për ta rinist 
kompjuterin tuaj, klikoni mbaroj.", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "Mirë se vini në instalimin e ReactOS"
@@ -183,3 +187,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR dhe VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "VBR veq"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/tr-TR.rc b/base/setup/reactos/lang/tr-TR.rc
index 24e7ea6be9c..493d081789b 100644
--- a/base/setup/reactos/lang/tr-TR.rc
+++ b/base/setup/reactos/lang/tr-TR.rc
@@ -7,6 +7,8 @@
 
 LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "ReactOS Kur"
@@ -145,6 +147,8 @@ BEGIN
     LTEXT "Eğer bir sürücüde bir CD varsa onu çıkartınız. Sonra, 
bilgisayarınızı yeniden başlatmak için Bitir'e tıklayınız.", IDC_STATIC, 115, 
169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "ReactOS Kurulum Yöneticisine Hoş Geldiniz"
@@ -188,3 +192,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR ve VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "Yalnızca VBR"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/uk-UA.rc b/base/setup/reactos/lang/uk-UA.rc
index 9bcb3709db9..7f0cb5977c3 100644
--- a/base/setup/reactos/lang/uk-UA.rc
+++ b/base/setup/reactos/lang/uk-UA.rc
@@ -8,6 +8,8 @@
 
 LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "Встановлення ReactOS"
@@ -146,6 +148,8 @@ BEGIN
     LTEXT "Ви можете витягнути інсталяційний диск. Для перезавантаження 
комп'ютера натисніть Завершити", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "Вас вітає програма встановлення ReactOS"
@@ -189,3 +193,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR та VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "Лише VBR"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/vi-VN.rc b/base/setup/reactos/lang/vi-VN.rc
index 478268f2286..e12feda590e 100644
--- a/base/setup/reactos/lang/vi-VN.rc
+++ b/base/setup/reactos/lang/vi-VN.rc
@@ -1,5 +1,7 @@
 LANGUAGE LANG_VIETNAMESE, SUBLANG_VIETNAMESE_VIETNAM
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "Cài đặt ReactOS"
@@ -138,6 +140,8 @@ BEGIN
     LTEXT "Nếu ổ đĩa của bạn còn chứa dĩa CD cài đặt, hãy lấy nó ra. Sau đó, 
ấn Hoàn tất để khởi động lại máy tính của bạn.", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "Chào mừng tới trình Thiết lập ReactOS"
@@ -181,3 +185,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR và VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "Chỉ VBR"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/zh-CN.rc b/base/setup/reactos/lang/zh-CN.rc
index 72de7f21c9b..57a8675061c 100644
--- a/base/setup/reactos/lang/zh-CN.rc
+++ b/base/setup/reactos/lang/zh-CN.rc
@@ -1,5 +1,7 @@
 LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "ReactOS 安装程序"
@@ -138,6 +140,8 @@ BEGIN
     LTEXT "请从光盘驱动器取出所有光盘。然后点击完成来重启您的电脑。", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "ReactOS 安装程序"
@@ -181,3 +185,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR 和 VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "仅 VBR"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/zh-HK.rc b/base/setup/reactos/lang/zh-HK.rc
index 4d73e0b1510..dfdde50e38b 100644
--- a/base/setup/reactos/lang/zh-HK.rc
+++ b/base/setup/reactos/lang/zh-HK.rc
@@ -8,6 +8,8 @@
 
 LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_HONGKONG
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "ReactOS 安裝程式"
@@ -146,6 +148,8 @@ BEGIN
     LTEXT "如果光碟機內仍然有光碟,請將其取出。然後按[完成],重新啟動您的電腦。", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "ReactOS 安裝程式"
@@ -189,3 +193,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR 和 VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "僅 VBR"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/lang/zh-TW.rc b/base/setup/reactos/lang/zh-TW.rc
index 4124c4a2035..26f9362eda8 100644
--- a/base/setup/reactos/lang/zh-TW.rc
+++ b/base/setup/reactos/lang/zh-TW.rc
@@ -9,6 +9,8 @@
 
 LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
 
+/* Dialogs */
+
 IDD_STARTPAGE DIALOGEX 0, 0, 317, 193
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
WS_SYSMENU
 CAPTION "ReactOS 安裝程式"
@@ -147,6 +149,8 @@ BEGIN
     LTEXT "如果光碟機裡還有光碟,請將其取出。然後按[完成],重新啟動您的電腦。", IDC_STATIC, 115, 169, 195, 17
 END
 
+/* Strings */
+
 STRINGTABLE
 BEGIN
     IDS_TYPETITLE "ReactOS 安裝程式"
@@ -190,3 +194,18 @@ BEGIN
     IDS_BOOTLOADER_MBRVBR "MBR 和 VBR (Default)"
     IDS_BOOTLOADER_VBRONLY "僅 VBR"
 END
+
+/* Error Strings */
+
+STRINGTABLE
+BEGIN
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE "Invalid character"
+    IDS_ERROR_INVALID_INSTALLDIR_CHAR "The only valid characters are:\n\
+alphanumericals (a-z, A-Z, 0-9), and\n . \\ - _\n\
+Spaces are not allowed."
+
+// ERROR_DIRECTORY_NAME
+    IDS_ERROR_DIRECTORY_NAME_TITLE "Invalid installation path"
+    IDS_ERROR_DIRECTORY_NAME "The ReactOS installation path must follow the 
DOS 8.3 naming scheme, \
+and only contain letters, digits, dashes and periods. Spaces are not allowed."
+END
diff --git a/base/setup/reactos/resource.h b/base/setup/reactos/resource.h
index 427410ff334..ba999844251 100644
--- a/base/setup/reactos/resource.h
+++ b/base/setup/reactos/resource.h
@@ -105,3 +105,12 @@
 #define IDS_BOOTLOADER_SYSTEM       5302    // For non-MBR disks
 #define IDS_BOOTLOADER_MBRVBR       5303    // For MBR disks only
 #define IDS_BOOTLOADER_VBRONLY      5304    // ""
+
+
+/* Error Strings */
+#define IDS_ERROR_INVALID_INSTALLDIR_CHAR_TITLE 5400
+#define IDS_ERROR_INVALID_INSTALLDIR_CHAR       5401
+
+// ERROR_DIRECTORY_NAME
+#define IDS_ERROR_DIRECTORY_NAME_TITLE          5402
+#define IDS_ERROR_DIRECTORY_NAME                5403

Reply via email to