[GH-ISSUE #3242] [Bug]: Системная ошибка "icu.dll не обнаружена" на Windows 10 v1809 начиная с версии 5.0.2.1 / System Error "icu.dll not found" on Windows 10 v1809 starting from v5.0.2.1 #1501

Open
opened 2026-10-13 20:43:54 +00:00 by bsakaguchi · 1 comment
Owner

Originally created by @Siltorei on GitHub (Sep 29, 2026).
Original GitHub issue: https://github.com/amnezia-vpn/amnezia-client/issues/3242

Image

--- RUSSIAN VERSION ---

Окружение

  • ОС: Windows 10 x64 Корпоративная LTSC (Версия 1809 / Сборка 17763)
  • Microsoft Visual C++ Redistributable: 14.44.35211 (установлены x86 и x64). Примечание: в дистрибутив версий 5.0.2.1 и 5.0.3.0 встроен vc_redist.x64.exe версии 14.42.34438.0, в предыдущих версиях (5.0.1.5) его не было.
  • ==== Installed .NET Frameworks ====
    .NET FW 2.0 SP 2 (CLR 2.0)
    .NET FW 3.0 SP 2 (CLR 2.0)
    .NET FW 3.5 SP 1 (CLR 2.0)
    .NET FW 4.6.2 General release(CLR 4.0)
    .NET FW 4.7 General release(CLR 4.0)
    .NET FW 4.7.1 General release(CLR 4.0)
    .NET FW 4.7.2 General release(CLR 4.0)
    .NET FW 4.8 General release(CLR 4.0)
  • Версия AmneziaVPN: 5.0.2.1 / 5.0.3.0
  • Рабочая версия: 5.0.1.5 (работает без ошибок)

Описание проблемы

При обновлении AmneziaVPN с версии 5.0.1.5 на 5.0.2.1 или 5.0.3.0 программа не запускается и выдаёт системную ошибку:

"Не удается продолжить выполнение кода, поскольку система не обнаружила icu.DLL. Для устранения этой проблемы попробуйте переустановить программу."

В директории установки присутствует файл icuuc.dll (версия 72.1.0.4), однако файл icu.dll отсутствует. В сборке Windows 10 v1809 (LTSC 2019) библиотека icu.dll ещё не входит в стандартный состав системных компонентов System32 (она появилась только с версии 1903).

При этом обновление Microsoft Visual C++ Redistributable (который начал поставляться вместе с инсталлятором начиная с 5.0.2.1) проблему не решает, так как в системе уже установлена более свежая версия (14.44.35211).

Ожидаемое поведение

Приложение должно корректно запускаться на Windows 10 v1809, либо все необходимые файлы зависимостей ICU должны поставляться вместе с инсталлятором.

Шаги для воспроизведения

  1. Установить AmneziaVPN v5.0.2.1 или v5.0.3.0 на Windows 10 v1809.
  2. Запустить приложение.
  3. Получить всплывающее окно с системной ошибкой об отсутствии icu.dll.

--- ENGLISH VERSION ---

Environment

  • OS: Windows 10 x64 Enterprise LTSC (Version 1809 / Build 17763)
  • Microsoft Visual C++ Redistributable: 14.44.35211 (both x86 and x64 installed). Note: Versions 5.0.2.1 and 5.0.3.0 now include vc_redist.x64.exe v14.42.34438.0 in the installer bundle, which was not present in 5.0.1.5.
  • ==== Installed .NET Frameworks ====
    .NET FW 2.0 SP 2 (CLR 2.0)
    .NET FW 3.0 SP 2 (CLR 2.0)
    .NET FW 3.5 SP 1 (CLR 2.0)
    .NET FW 4.6.2 General release(CLR 4.0)
    .NET FW 4.7 General release(CLR 4.0)
    .NET FW 4.7.1 General release(CLR 4.0)
    .NET FW 4.7.2 General release(CLR 4.0)
    .NET FW 4.8 General release(CLR 4.0)
  • AmneziaVPN version: 5.0.2.1 / 5.0.3.0
  • Working version: 5.0.1.5 (works fine)

Description

When updating AmneziaVPN from 5.0.1.5 to 5.0.2.1 or 5.0.3.0, the application fails to launch with a system error:

"The code execution cannot proceed because icu.DLL was not found. Reinstalling the program may fix this problem."

In the installation directory, the icuuc.dll file (version 72.1.0.4) is present, but icu.dll is missing. On Windows 10 v1809 (LTSC 2019), icu.dll is not yet included as a default system library in System32 (it was introduced in v1903).
Updating or reinstalling the VC++ Redistributable (which started being bundled with the installer in v5.0.2.1) does not resolve the issue, as a newer version (14.44.35211) is already installed on the system.

Expected behavior

The application should launch without errors on Windows 10 v1809, or all required ICU dependency files should be bundled with the installer.

Steps to reproduce

  1. Install AmneziaVPN v5.0.2.1 or v5.0.3.0 on Windows 10 v1809.
  2. Launch the application.
  3. Observe the missing icu.dll system error popup.
Originally created by @Siltorei on GitHub (Sep 29, 2026). Original GitHub issue: https://github.com/amnezia-vpn/amnezia-client/issues/3242 <img width="382" height="159" alt="Image" src="https://github.com/user-attachments/assets/136bd9e7-456f-4d45-bbfd-eba596013360" /> --- RUSSIAN VERSION --- ### Окружение * **ОС:** Windows 10 x64 Корпоративная LTSC (Версия 1809 / Сборка 17763) * **Microsoft Visual C++ Redistributable:** 14.44.35211 (установлены x86 и x64). *Примечание: в дистрибутив версий 5.0.2.1 и 5.0.3.0 встроен vc_redist.x64.exe версии 14.42.34438.0, в предыдущих версиях (5.0.1.5) его не было.* * ==== Installed .NET Frameworks ==== .NET FW 2.0 SP 2 (CLR 2.0) .NET FW 3.0 SP 2 (CLR 2.0) .NET FW 3.5 SP 1 (CLR 2.0) .NET FW 4.6.2 General release(CLR 4.0) .NET FW 4.7 General release(CLR 4.0) .NET FW 4.7.1 General release(CLR 4.0) .NET FW 4.7.2 General release(CLR 4.0) .NET FW 4.8 General release(CLR 4.0) * **Версия AmneziaVPN:** 5.0.2.1 / 5.0.3.0 * **Рабочая версия:** 5.0.1.5 (работает без ошибок) ### Описание проблемы При обновлении AmneziaVPN с версии 5.0.1.5 на 5.0.2.1 или 5.0.3.0 программа не запускается и выдаёт системную ошибку: > "Не удается продолжить выполнение кода, поскольку система не обнаружила icu.DLL. Для устранения этой проблемы попробуйте переустановить программу." В директории установки присутствует файл `icuuc.dll` (версия 72.1.0.4), однако файл `icu.dll` отсутствует. В сборке Windows 10 v1809 (LTSC 2019) библиотека `icu.dll` ещё не входит в стандартный состав системных компонентов `System32` (она появилась только с версии 1903). При этом обновление Microsoft Visual C++ Redistributable (который начал поставляться вместе с инсталлятором начиная с 5.0.2.1) проблему не решает, так как в системе уже установлена более свежая версия (14.44.35211). ### Ожидаемое поведение Приложение должно корректно запускаться на Windows 10 v1809, либо все необходимые файлы зависимостей ICU должны поставляться вместе с инсталлятором. ### Шаги для воспроизведения 1. Установить AmneziaVPN v5.0.2.1 или v5.0.3.0 на Windows 10 v1809. 2. Запустить приложение. 3. Получить всплывающее окно с системной ошибкой об отсутствии `icu.dll`. --- ENGLISH VERSION --- ### Environment * **OS:** Windows 10 x64 Enterprise LTSC (Version 1809 / Build 17763) * **Microsoft Visual C++ Redistributable:** 14.44.35211 (both x86 and x64 installed). *Note: Versions 5.0.2.1 and 5.0.3.0 now include vc_redist.x64.exe v14.42.34438.0 in the installer bundle, which was not present in 5.0.1.5.* * ==== Installed .NET Frameworks ==== .NET FW 2.0 SP 2 (CLR 2.0) .NET FW 3.0 SP 2 (CLR 2.0) .NET FW 3.5 SP 1 (CLR 2.0) .NET FW 4.6.2 General release(CLR 4.0) .NET FW 4.7 General release(CLR 4.0) .NET FW 4.7.1 General release(CLR 4.0) .NET FW 4.7.2 General release(CLR 4.0) .NET FW 4.8 General release(CLR 4.0) * **AmneziaVPN version:** 5.0.2.1 / 5.0.3.0 * **Working version:** 5.0.1.5 (works fine) ### Description When updating AmneziaVPN from 5.0.1.5 to 5.0.2.1 or 5.0.3.0, the application fails to launch with a system error: > "The code execution cannot proceed because icu.DLL was not found. Reinstalling the program may fix this problem." In the installation directory, the `icuuc.dll` file (version 72.1.0.4) is present, but `icu.dll` is missing. On Windows 10 v1809 (LTSC 2019), `icu.dll` is not yet included as a default system library in `System32` (it was introduced in v1903). Updating or reinstalling the VC++ Redistributable (which started being bundled with the installer in v5.0.2.1) does not resolve the issue, as a newer version (14.44.35211) is already installed on the system. ### Expected behavior The application should launch without errors on Windows 10 v1809, or all required ICU dependency files should be bundled with the installer. ### Steps to reproduce 1. Install AmneziaVPN v5.0.2.1 or v5.0.3.0 on Windows 10 v1809. 2. Launch the application. 3. Observe the missing `icu.dll` system error popup.
Author
Owner

@0serg commented on GitHub (Oct 9, 2026):

Это скорее всего вот этот баг: likely https://github.com/microsoft/STL/issues/1911

При использовании С++ STL компонента std::chrono, версия STL от Microsoft реализует фичи добавленные в стандарте C++20 (поддержку time zones) через библиотеку ICU.DLL․ По мере миграции приложений и библиотек на стандарт C++20 народ пытается использовать новые (реально удобные) методы для работы с date/time, на девелоперских машинах все работает отлично, а вот в старых версиях винды на релизе внезапно падает.

Эта библиотечка by design задумывалась как база данных которая должна периодически обновляться, поэтому ее не включают в redistributable чтобы старые приложения не начинали через некоторое время давать неправильные результаты. Штатно ее можно взять только от операционной системы, даже если положить icu.dll в папку с приложением то STL ее проигнорирует и полезет за системной. В версиях Windows до 1903 этой библиотеки, как уже замечено, нет и скопировать ее туда из более новых версий тоже нельзя, так как она зависит от других компонентов винды.

Из фиксов, как я понимаю, либо убрать использование нового функционала в STL, либо icu.dll самостоятельно из исходников (чтобы залинковать ее с рантаймом приложения), после чего тащить ее с приложением и вручную (!) грузить до первого обращения к релевантной части STL чтобы перехватить загрузку.

<!-- gh-comment-id:6081913912 --> @0serg commented on GitHub (Oct 9, 2026): Это скорее всего вот этот баг: likely https://github.com/microsoft/STL/issues/1911 При использовании С++ STL компонента std::chrono, версия STL от Microsoft реализует фичи добавленные в стандарте C++20 (поддержку time zones) через библиотеку ICU.DLL․ По мере миграции приложений и библиотек на стандарт C++20 народ пытается использовать новые (реально удобные) методы для работы с date/time, на девелоперских машинах все работает отлично, а вот в старых версиях винды на релизе внезапно падает. Эта библиотечка by design задумывалась как база данных которая должна периодически обновляться, поэтому ее не включают в redistributable чтобы старые приложения не начинали через некоторое время давать неправильные результаты. Штатно ее можно взять только от операционной системы, даже если положить icu.dll в папку с приложением то STL ее проигнорирует и полезет за системной. В версиях Windows до 1903 этой библиотеки, как уже замечено, нет и скопировать ее туда из более новых версий тоже нельзя, так как она зависит от других компонентов винды. Из фиксов, как я понимаю, либо убрать использование нового функционала в STL, либо icu.dll самостоятельно из исходников (чтобы залинковать ее с рантаймом приложения), после чего тащить ее с приложением и вручную (!) грузить до первого обращения к релевантной части STL чтобы перехватить загрузку.
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
amnezia-vpn/amnezia-client#1501
No description provided.