Total Commander Knowledge Base

Есть вопрос?

Поищите ответ в самой большой русскоязычной базе знаний по Total Commander!

Обновление копии своей сборки с сохранением некоторых настроек

Одна сборка, много профилей

Итак, когда мы уже настроили под себя TC и имеем свою личную сборку, возникает вопрос: а под какой стиль работы с программой мы подстраивались? А что есть разница? Оказывается, есть: для домашнего компьютера и для рабочего нужны разные истории каталогов, закладок, поисков, шаблонов и других свойств, связанных с разным содержимым файловой системы компьютеров и задачами по использованию программы. Конечно можно таскать одну копию TC на флешке и работать с неё. Но у такого способа есть ряд минусов: флешка не всегда под рукой, она медленней винчестера, кроме того рабочие истории, шаблоны и т.п переплетаются с домашними. Ну ладно, если нам постоянно приходится пользоваться несколькими компьютерами, на каждом мы разместим копию своей сборки. Всё бы хорошо, но если мы захотим поднастроить сборку на работе, например, добавить пару новых модулей или изменить раскрас, или что-то ещё, то захотим такие же изменения внести и в домашнюю сборку (и наоборот) и без замены ряда сфецифических для работы/дома настроек. Первое, что приходит на ум, просто повторить такие изменения вручную, притащить плагины, ещё раз покопаться в конфигурационном файле, однако постоянно что-то делать по два раза начнет надоедать. Что же делать? Копировать всю папку с TC? - затрутся история панелей, вкладки, шаблоны поиска и другие наработки с домашнего на рабочие (или наоборот). Вот тут-то всплывает термин "профили пользователя".

Не обновляемые профили (разные сборки на одной программе)

Свойства ярлыка с командой запуска TC

Прежде чем рассказать о настройке профилей для одного пользователя в разных копиях TC, надо сказать несколько слов об отличии настройки профилей для разных пользователей одной копии.

В этом случае профили будут использовать одну программу и одни и те же её модули, но их настройка может различаться, в том числе и хранение историй поиска, командной строки, раскраски файлов и т.д.
Для второго пользователя создаем копируем файл настроек (wincmd.ini) в отдельную папку и с помощью ярлыка запуска пропишем путь к нужному профилю в свойствах

C:\tc\TOTALCMD.EXE /i=%commander_path%\Bart\wincmd.ini

Вы запускаете TC с обычного ярлыка, а Bart с персонального.
Теперь если вы решили обновить свою сборку, то не трогаете папку с файлом настроек второго пользователя, и на его настройках изменения не скажутся.

Разбиваем файл настроек на несколько файлов

Итак мы выяснили, что нам нужно обезопасить ряд профильных настроек от затирания при обновлении wincmd.ini. Для помощи в разрешении такой задачи придуман ключ RedirectSection. Суть ключа - вынести секцию настроек в другой файл, и в дальнейшем использовать для считывания и записи настроек только этот файл, а не wincmd.ini. Таким образом, нам при обновлении своей сборки, нужно всего-то не обновлять один файл с вынесенными настройками.
Итак, дописываем в свой wincmd.ini в нужную для переноса секцию настроек:

RedirectSection=имя_файла.ini

если файл в каталоге не существует, то после перезапуска TС он будет создан
для удобства обновления сборки можно вынести не обновляемые в нашей сборке файл настроек в отдельную папку, которую не будем обновлять:

RedirectSection=%commander_path%\ini\имя_файла.ini

Итак, можно определить для себя - какие части файла настроек мы не хотим затирать при обновлении и в каждой такой секции настроек добавить указанный ключ.
Кроме того для каждой секции можно указать свой файл. Это удобно в случаях, если нам не нужно сохранять изменения определенных секций настроек после работы в TC. Например, мы хотим всегда после запуска TC иметь строгий набор истории командной строки. Для этого мы выносим секцию в отдельный файл, правим его как нам нужно, и присваиваем ему атрибут «только чтение». Таким образом, записанные там настройки Total Commander не сможет изменять.

Выносим пользовательские настройки оптом

Не торопитесь сразу прописывать в ряд секций ключ RedirectSection, так как для выноса в отдельный файл большинства пользовательских настроек можно воспользоваться универсальным ключом AlternateUserIni.
Он записывается в секции Configuration файла настроек и переносит пользовательские секции настроек в указанный ini файл.

[Configuration]
AlternateUserIni=%commander_path%\ini\имя_файла.ini

При необходимости оставить какую-либо пользовательскую секцию в основном файле настроек, используем ключ RedirectSection с параметром 0.
В список пользовательских секций не попадают, т.е. не переносятся по умолчанию, следующие настройки:

  • [Configuration] – основные настройки
  • [Layout] – настройки интерфейса, так же одинаковы
  • [Packer] – настройки архиваторов
  • [Confirmation] – настройки подтверждений
  • [Extensions] - ассоциации для внешних просмотрщиков
  • [Shortcuts] – комбинации клавиш
  • [PackerPlugins] – настройки архиваторных плагинов
  • [FileSystemPlugins] - настройки файлсистемных плагинов
  • [ListerPlugins] - настройки плагинов просмотра
  • [ContentPlugins] - настройки контентных плагинов

Эти секции как правило одним человеком используются одинаково в любых условиях. Их то мы и обновляем при добавлении/изменении плагинов, изменении горячих клавиш и других существенных изменениях своей сборки.
Тем не менее, если надо вынести заодно и какую-то из этих секций, с целью её отличия для разных профилей, то также пользуемся ключом RedirectSection с параметром 1, и секция настроек вынесется в файл, указанный ключом AlternateUserIni

[Extensions]
RedirectSection=1

Вместо параметра 1 можно указать отдельный путь для файла хранения настроек.