Инструменты пользователя

Инструменты сайта


ru:autorun:documentation:config_update_3x

Переход на версию 3.х

В целом совместимость со старыми файлами конфигурации сохраняется, но некоторые изменения в новой версии могут вызвать неработоспособность:

  1. Строки без кавычек в условиях и выражениях теперь не разрешены по умолчанию.
  2. Убрана команда AutorunBlockUnload.
  3. Убран старый синтаксис FileExists в условиях.
  4. Убрана директива AutorunAllowWriteEnv.
  5. Исправлена опечатка в имени директивы AutorunLoadInSubprocess.
  6. Изменён язык перевода по умолчанию.
  7. Изменён вывод команды 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
ru/autorun/documentation/config_update_3x.txt · Последнее изменение: 2023/05/06 23:59 — loopback

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki