Переносимый TC: рецепт приготовления

Материал из TCKB 2.0
Перейти к:навигация, поиск


© Copyright
Эта статья защищена авторским правом, и на её правку наложены ограничения.

Всё своё ношу с собой

Не знаю, как вы, а я очень некомфортно себя чувствую, садясь за чужой компьютер. Мало того, что привычные программы просто-напросто отсутствуют, так зачастую и прав на их установку нет. А если Total Commander отсутствует - чувствуешь себя совсем уж беспомощным, как только речь заходит о чём-то более сложном, чем набрать пару строк в консоли. Есть и ещё одна мучающая меня проблема: синхронизация нескольких рабочих мест. Стационарная машина, ноутбук, да ещё дома такой же набор - как не следи, рано или поздно окажется, что где-то какая-то нужная программа не установлена, устарела, либо не так настроена. Решений у проблемы может быть несколько. Но я расскажу о том, к чему пришёл сам, методом умозаключений проб и ошибок - всё оказывается далеко не так очевидно, как кто-то уже подумал, поэтому рекомендую дочитать до конца.

Речь пойдёт о сборке, причём о сборке переносимой на 100%. Поэтому сразу важная оговорка: сборка делается лично для себя, и, по сути, ничем не будет отличаться от обычной установки. Публичное распространение получившегося набора файлов (и любой сборки TC вообще) я не одобряю и всячески призываю вас подобной ерундой не заниматься. А если кто-то попросит поделиться - дайте ссылку на TCKB ;).

Что мы хотим

Основная идея - создать такую среду, работа в которой была бы абсолютно идентична на любом рабочем месте. Казалось бы - таскай все нужные программы с собой. Но на практике оказывается, что множество программ намертво привязываются к месту, куда их установили, и при переносе работать отказываются, либо теряют настройки. Если с тем, что Winamp постоянно "теряет" каталог со шкурками я ещё могу смириться, то поведение норвежского чуда с названием Opera иногда выводит меня из себя - "вытащенная" Opera напрочь теряет все настройки и ведёт себя словно свежеустановленная, плюс ко всему ещё и раскидывая кеш по всему жёсткому диску. Именно с Оперой я бился больше всего - и, в итоге, победил упрямый (но всё равно любимый) браузер. Найденный способ достаточно универсален, хотя и тут стоит оговориться: есть софт, который намертво привязывается к системе, раскидывая по системным каталогам кучу своих библиотек, делая тысячи записей в реестре и инако имитируя поведение колючек репейника - сделать его переносимым можно лишь с некоторой вероятностью, и с большими усилиями. А есть софт, который не является нативным для Windows и использует виртуальные машины (например программы на .NET и Java) - с его переносимостью тоже не всё гладко, хотя принципиально и решаемо.

Хорошо то, что TC уже давным-давно научился работать без привязки к системе - для нас это главное и основное. А ведь если вспомнить, какую мороку приходилось устраивать с разными запускалками и прочей дребеденью... бррр!

Ингридиенты

Первое, что понадобится - это переносной накопитель, на котором рабочее место и будет организовано. Проблема выбора и поиска такого накопителя даже не обсуждается: оптические диски громоздки, неудобны в обращении и недостаточно объёмны, переносные USB/SATA/FireWire HDD-диски дороги и тоже достаточно громоздки, различные карты памяти слишком медленны и не везде для них найдётся карт-ридер. Так что выбираем компактный, дешёвый и объёмный накопитель - флешку. Вряд ли у вас нет такой, а если нет - то постарайтесь выбрать модель побыстрее, для нашей задумки это будет критично. В принципе, описываемый далее способ позволяет работать с приемлимой скоростью даже не на особо быстрых флешках, но тут лучше подстраховаться.

Далее потребуется собственно Total Commander, набор используемых плагинов и софта и (внимание!) замечательная утилита Dekart Private Disk Light (PDL). Назначение программы - создание шифрованных дисков, и достоинств у неё - вагон и маленькая тележка. Она бесплатна (есть и Pro-версия, разница в функционале с которой для нас абсолютно незначительна), работает под любой версией Windows без установки, может управляться из командной строки и с помощью горячих клавиш.

Всё, можно приступать.

Наш диск - всем дискам диск

Главное окно программы Dekart Private Disk Light

Для начала установим PDL, неважно куда. Запускаем его, и нажимаем кнопку "Создать". Указываем путь к файлу, в котором будет храниться образ нашего диска (имя файла произвольное), выбираем новому диску букву и указываем желаемый размер.

Создание диска в PDL

Достаточно важный момент здесь - это выбор буквы диска. Дело в том, что наш диск будет использовать эту букву под любой системой, что и является способом достижения переносимости установленных на него приложений. Но если такой диск будет занят, тогда вся переносимость летит к чёрту - PDL может примонтировать диск и под другую букву, но вот пути, используемые приложениями собьются. Поэтому выбираем какую-нибудь букву, которая вряд ли будет занята - например "Q" (а что? Много ли вы видели дисков Q? Диски С, D, E - повсеместно. Y, W, Z - встречаются. А середину алфавита редко кто использует).
С размером решайте сами, соотносясь с необходимостью и размерами флешки. Кому-то будет достаточно диска на 100 Мб, кому-то не хватит и 1 Гб. Стоит только помнить, что файл-контейнер, в котором наш диск будет храниться, занимает места чуть больше, чем сам диск (для диска размером 1 ГБ (1024 Мб) файл занимает 1073 Мб).

Установка пароля на диск, создаваемый PDL
Форматирование созданного диска

Как только определились с буквой и размером - жмём кнопку "Создать", вводим пароль и подтверждение (даже если вы не хотите использовать парольную защиту), немножко ждём. Через некоторое время PDL объявит о удачном создании диска, сразу же его подключит и предложит отформатировать, на что следует согласиться, иначе диском пользоваться не получится.

Созданный диск и его файл-контейнер

Всё, получившийся виртуальный диск системой воспринимается как физический, и с ним можно делать практически всё то же, что и с обычным накопителем. Важное для нас отличие, как уже говорилось выше - этот диск 100% переносим - достаточно просто перенести файл, в котором он хранится.

К сожалению у этого способа создания виртуального диска есть значимый недостаток: PDL готова работать, только будучи хотя бы раз запущена пользователем с правами локального администратора. В случае, если таких прав нет, придётся действовать иначе.

Как быть бесправному?

Все версии Windows имеют поддержку команды subst. Эта команда создаёт виртуальный диск, который, фактически, является ссылкой на каталог (и, что важно, работает для всех пользователей). Проще всего объяснить это на примере. Команда

subst z: c:\some_path\

создаст диск z:, содержимым которого будет являться каталог c:\some_path\. Напомню на всякий случай, что при выполнении команд все пути, содержащие пробелы, нужно заключать в кавычки, например так:

subst z: "c:\some path"

удаление созданного таким образом диска производится той же командой с параметром /D:

subst z: /D

Ещё один вариант - использование ссылок NTFS. Работа с этими ссылками абсолютно ничем не отличается от работы с реальными каталогами, и они работают даже между разными дисками. Поэтому можно создать на диске с нужной буквой ссылку на каталог с установленными программами - и ни одна из них не заподозрит, что её куда-то "утащили."
Для работы со ссылками NTFS очень хорошо подходит программа NTFS Links, а права для создания ссылок требуются самые минимальные.

Установка Total Commander и плагинов

Теперь самое время организовать на пустом диске неободимую вам рабочую среду. Начать стоит с установки и настройки Total Commander вместе с плагинами.
Советами по поводу установки TC я уже делился. Главные идеи здесь - полностью самостоятельная настройка и использование относительных путей с переменными окружения везде, где это только возможно. Если ваш TC уже настроен в соответствие с рекомендациями, то его достаточно просто скопировать на виртуальный диск, в противном случае он устанавливается туда заново.
Можно задать вопрос: зачем использовать относительные пути и переменные окружения, если мы добились того, что все пути у нас теперь неизменны? Ответов несколько: во-первых никогда не знаешь, когда и что тебе может понадобиться. А во-вторых - это хороший тон и полезная привычка.

Установка программ

Сложность этого пункта, по большей части, зависит от того, каким ПО вы пользуетесь. Как уже было сказано ранее, софт, которому достаточно просто быть установленным в определённый каталог, будет работать превосходно. Просто устанавливаем его на наш виртуальный диск, настраиваем, при необходимости - интегрируем с TC. Важным пунктом настройки может являться указание не использовать профили пользователей, если такое в программе предусмотрено. Скажем, в той же Opera обязательно стоит это указать при установке - иначе ни настройки, ни кеш переноситься не будут, оставаясь в виде мусора на машинах, где вы побывали.
Но не всякую программу можно установить и забыть о ней. Тяжёловесные программы, вроде Office или Photoshop так просто не перенести, увы. Однако, покопавшись в сети, можно найти сделанные народными умельцами портативные варианты, работающие без установки, либо устанавливающиеся моментально. Конечно, вопрос о законности использования подобного рода вариантов придётся задать собственной совести либо своему кошельку.
Имеется вопрос и с просмотром видео при отсутсвующих кодеках. Решается он довольно просто: существуют, как минимум, два плеера, в которые кодеки уже интегрированы - это mplayer (чья консольность и сложность с лихвой компенсируются гибкостью и мощью) и его потомок KMPlayer (который проще в освоении, однако более требователен к ресурсам и менее стабилен). В VLC и MPC также встроены некоторые кодеки и сплиттеры, а некоторые плееры могут работать, если нужные кодеки заранее установить в их каталог, правда мне такой способ кажется не очень удачным. Но тут уже вопрос личного опыта и предпочтений, важно то, что результата можно добиться тем или иным способом.
Впрочем, всегда есть такой софт, которому нельзя найти мобильную замену, но тут уже решайте сами, что для вас важнее. Компромиссом может стать ношение на той же флешке нужных дистрибутивов.

Остаётся, пожалуй, упомянуть о программах, использующих виртуальные машины, либо выполняемых интерпретатором (сюда относятся различные скрипты и приложения на VB). К первым относятся Java-приложения и программы, написанные на .NET. В первом случае проблема решается просто: достаточно использовать jar2exe конвертер, во втором случае такого решения нет. Максимум, что можно сделать - носить с собой инсталляционный файл среды .NET.
В случае интерпретируемых скриптов имеет смысл поискать конвертеры (абсолютно точно существуют perl2exe и php2exe) в случае VB - найти и скопировать нужные библиотеки (msvbvmXX.dll) в каталог с программой. Несмотря на то, что эти библиотеки должны включаться во все дистрибутивы Windows, не обязательно, что они там действительно будут.

Окончательная доводка

В итоге у нас получится файл, содержащий в себе виртуальный диск, на котором у нас полностью отвязанная от чего бы то ни было система. Правда пользоваться им не очень-то удобно - приходится запускать PDL с флешки и подключать в нём диск. Да ещё и пароль всё время требуется вводить - а ведь парольная защита нужна не всем.
Эти проблемы решаются очень просто, достаточно прочесть справку PDL. Из неё можно узнать, что PDL прекрасно понимает параметры командной строки, а через это вполне можно всю рутину свести к минимуму. Итак, для примера создадим bat-файл со следующим содержанием:

echo off
 start \PDL\PrvDiskLight.exe /path:\dshell_on_work.dsk /nosystray /noexitdialog /minimize /password:YourPassword

Здесь:

  • start - указание командному интерпретатору, что нужно запускать PDL в отдельном потоке. В принципе, не влияет ни на что, разве что позволяет избавиться от висящего в фоне окна командной оболочки во время ввода пароля.
  • \PDL\PrvDiskLight.exe - путь к PDL. Заметьте, я использовал относительный путь, так как нам может быть неизвестен абсолютный.
  • /path:totalcmd.dsk - путь до загружаемого файла-образа. По тем же причинам использован относительный путь, хотя можно использовать и абсолютный, если он известен, например так: /path:d:\some_path\totalcmd.dsk.
  • /nosystray - указание PDL не показывать иконку в трее. Если иконка нужна, параметр нужно убрать.
  • /noexitdialog - не запрашивать подтверждение при выходе.
  • /password:YourPassword - самое интересное. Если вам не нужна парольная защита, используйте этот параметр (конечно же, вместо YourPassword должен быть используемый вами пароль). В противном случае уберите параметр, и вводите пароль каждый раз при подмонтировании диска.

Всё, этот командный файл будет монтировать диск без лишних телодвижений. Для управления PDL можно использовать либо иконку в трее, либо, если она отключена, горячие клавиши. Нам, собственно, понадобится только одна комбинация: Ctrl+Alt+F12. По её нажатию PDL сразу же отмонтирует диск и выгружается из памяти.
Горячие клавиши переназначить нельзя, поэтому, если данное сочетание конфликтует с уже используемым в другой программе, его можно отключить с помощью параметра /nohotkeys.

Если требуется, чтобы при подмонтировании диска с него запускались какие-нибудь программы, то реализуем один из перечисленных способов:

  1. Добавляем в созданный bat-файл команды запуска этих программ (естественно, после команды монтирования). Пути к ним будут уже известны, так что никаких проблем с этим быть не должно. Важно: при этом способе директиву start перед вызовом PDL использовать не нужно (может возникнуть ситуация, когда оболочка попытается запустить программы ещё до того, как диск будет примонтирован).
  2. Создаём отдельный bat-файл для запуска этих программ. Его, скорее всего, потребуется запускать вручную - автозапуск для диска, созданного PDL, почему-то не работает.

Само собой, если диск создавался командой subst, то никаких лишних телодвижений уже не требуется.

Плюсы, минусы и бонусы

После всех выполненных операций получаем то, что хотели - 100% переносимое, универсальное рабочее место. Достоинства метода очевидны:

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

Минус всего один: флешка - не самый быстрый носитель, особенно склонный к торможению, когда к нему происходит сразу несколько обращений. Есть несколько способов ускорить работу:

  1. Настроить используемые программы так, чтобы минимизировать обращения к диску. К примеру, отключение дискового кеша в Opera значительно ускоряет её работу в данном случае (хотя в общем случае отключать дисковый кеш не рекомендуется).
  2. Перед работой копировать файл с виртуальным диском на жёсткий диск рабочего компьютера и работать с него, после работы копируя файл обратно, если возникнет такая необходимость. При желании процесс автоматизируется теми же bat-скриптами.

На этом, пожалуй, всё. Вопросы и предложения, как всегда, принимаются на форуме и на странице обсуждения.

Павел Дубровский
14.09.08