Переход на версию 3.х
В целом совместимость со старыми файлами конфигурации сохраняется, но некоторые изменения в новой версии могут вызвать неработоспособность:
- Строки без кавычек в условиях и выражениях теперь не разрешены по умолчанию.
- Убрана команда AutorunBlockUnload.
- Убран старый синтаксис FileExists в условиях.
- Убрана директива AutorunAllowWriteEnv.
- Исправлена опечатка в имени директивы AutorunLoadInSubprocess.
- Изменён язык перевода по умолчанию.
- Изменён вывод команды FileExist.
Как перейти на новую версию
1. Строки без кавычек в условиях и выражениях теперь не разрешены по умолчанию.
Рекомендуется прочитать раздел Виды синтаксиса для понимания различий двух видов синтаксиса в Autorun и причин их существования.
Можно просто включить директиву LegacyExpressions, но она не гарантирует 100%-ю совместимость, поэтому настоятельно рекомендуется внести изменения для поддержки актуального режима работы.
Любые проблемы, возникающие с использованием новых возможностей при включённой директиве LegacyExpressions, но не возникающие без неё, считаться ошибкой и исправляться не будут.
Необходимо, чтобы все строки в выражениях (в том числе в вычисляемых строках) были в кавычках — двойных или одинарных.
Некоторые примеры:
# Было: if %MYVAR% = text then # Стало: if MYVAR = "text" then # или if %MYVAR% = "text" then # Было: if not FileExist(%COMMANDER_PATH%\NoClose.exe) then # Стало: if not FileExist("%COMMANDER_PATH%\NoClose.exe") then # или if not FileExist(%COMMANDER_PATH% & "\NoClose.exe") then # Было: if IniRead(%COMMANDER_INI%, Configuration, LanguageIni) then # Стало: if IniRead(%COMMANDER_INI%, "Configuration", "LanguageIni") then # или if IniRead(%COMMANDER_INI%, 'Configuration', 'LanguageIni') then # Было: %"IniRead(%COMMANDER_INI%, Configuration, LanguageIni)" # Стало: %"IniRead(%COMMANDER_INI%, 'Configuration', 'LanguageIni')" # или %'IniRead(%COMMANDER_INI%, "Configuration", "LanguageIni")'
2. Убрана команда AutorunBlockUnload.
Необходимо внести следующие изменения:
# Было: AutorunBlockUnload(Yes) # Стало: Pragma AutorunBlockUnload
3. Убран командный синтаксис FileExist/ProcessExist в условиях.
Необходимо внести следующие изменения:
# Было: If FileExist "file" Then # Стало: If FileExist("file") Then
4. Убрана директива AutorunAllowWriteEnv.
К сожалению, нет другого варианта, кроме как переписать код или использовать старую версию. Работа этой директивы неприменима в новой версии.
5. Исправлена опечатка в имени директивы AutorunLoadInSubprocess.
Необходимо внести следующие изменения:
# Было: Pragma AutorunLoadInSubrocess # Стало: Pragma AutorunLoadInSubprocess
6. Изменён язык перевода по умолчанию.
Раньше при отсутствии директивы AutorunLanguage загружались строки сообщений на английском языке. Сейчас загружаются строки на языке, установленном в Total Commander. Если вас не устраивает такое поведение, можно добавить первой строчкой в скрипт:
Pragma AutorunLanguage ENG
7. Изменён вывод команды FileExist.
Вывод команды FileExist теперь зависит от типа переданного пути. Проблема может возникнуть только в случае, если вы проверяли вывод явно. Такой код не сработает, если в него передать каталог:
if FileExist(...) = 1 then
Если нет необходимости определения, файл передан или каталог, можно переписать код так:
if FileExist(...) > 0 then # или if FileExist(...) then