MPC-BE forum

MPC-BE => Обсуждение / Discussion => Тема начата: V0lt от 13 сентября 2024, 20:48:02

Название: Поддержка длинных путей для Windows 10
Отправлено: V0lt от 13 сентября 2024, 20:48:02
Решил улучшить поддержку длинных путей (более 260 символов) для Windows 10 v1607 или новее.

MPC-BE и раньше ограниченно поддерживал длинные пути, когда проводник подсовывал укороченный путь. Но там было много ограничений.
Поэтому за несколько дней сделал следующее:
1. Избавился от ATL CPath, т.к. он не работает с длинными путями.
2. Избавился от некоторых функций Path* из "shlwapi.h" по той же причине.
3. Постепенно ухожу от MAX_PATH для путей к медиафайлам.
Надеюсь, что для обычных путей (до 260 символов) ничего не поломалось. :-)

Начиная с MPC-BE 1.7.3.58 через манифест включена поддержка длинных путей. Чтобы все работало наилучшим образом, надо чтобы в Windows 10 были включены длинные пути (https://learn.microsoft.com/ru-ru/windows/win32/fileio/maximum-file-path-limitation?tabs=registry#enable-long-paths-in-windows-10-version-1607-and-later).

У меня на Windows 10 22H2 x64 длинные видеофайлы открываются, внешние аудиодорожки подхватываются. В свойствах показывается путь БЕЗ всяких префиксов '\\?\'.

Поддержка длинных путей не работает:
1. Через Drag-and-Drop. Возможно недоработка винды. В MPC-HC также.
2. Через двойной клик в проводнике. Решается установкой новой версии и регистрацией расширений через интерфейс плеера.
3. В диалоге сохранения файлов. Сам диалог работает, но отдает обрезанные пути. В MPC-HC также не работает. Это надо как-то детектить, чтобы не сохранять туда куда не нужно. Похоже недоработка MFC. Исправлено в 1.7.3.61.
4. Для внешних субтитров. Надо менять базовый класс для работы с тестовыми файлами. Исправлено в 1.7.3.66.
Возможны и другие ограничения...
Название: От: Поддержка длинных путей
Отправлено: V0lt от 14 сентября 2024, 07:16:11
Провел тесты с файлами с длинными путями
Открываю через "Быстро открыть файл".
После изменения LongPathsEnabled  перезагружался.

Windows 10 22H2 с LongPathsEnabled = 0.
1.7.3.57 (без longPathAware) - файл открылся с префиксом '\\?\'.
1.7.3.58 (longPathAware = true) - файл открылся с префиксом '\\?\'.

Windows 10 22H2 с LongPathsEnabled = 1.
1.7.3.57 (без longPathAware) - файл открылся с префиксом '\\?\'.
1.7.3.58 (longPathAware = true) - файл открылся без префикса.

Windows 7 SP1.
1.7.3.57 (без longPathAware) - файл открылся с укороченным путем.
1.7.3.58 (longPathAware = true) - файл открылся с укороченным путем.