===================================================================== AJPscripts - CherryTree proxy SL Линда Кайе 2019. Посвящается Ариэль ===================================================================== Этот скрипт призван бороться с непониманием программой CherryTree кириллицы в командной строке. Например, если попытаться открыть через командную строку файл "Вишня.ctd", то CherryTree запустится и покажет пустой документ вместо того, который мы хотели открыть. Чтобы исправить такое поведение, следует запускать данный скрипт с именем файла в командной строке. Скрипт создаст во временном каталоге симлинк, имя которого будет содержать только латиницу, кириллица будет транслитерирована, а всё остальное заменено на чёрточки, и сам запустит CherryTree с симлинком в командной строке. Очистку временного каталога от симлинков скрипт не производит. Скрипт работает только в системе Windows 2000 и более поздних. История создания ---------------- Этот скрипт появился после того как выяснились неприятные недостатки скрипта CherryTree proxy, а именно невозможность открытия новых файлов при уже запущенном CherryTree. Тоесть открываешь один файл - грузится программа и в ней файл открывается. Открываешь другой файл - программа грузится, но с пустым документом. Должно быть, программа проверяет, запущена ли она уже, и, если да, не пытается открыть последний документ, имя которого конфиг записывал скрипт. Требовалось другое решение, что-то, что временно приведёт имя файла к одной латинице, но оставит его читаемым. Переименовывать туда-сюда непродуктивно, использовать имена файлов только с латиницей - ненадёжно, ведь кириллица может оказаться ещё и в имени родительских папок. Была надежда на короткое имя файла, но по какой-то причине оно не работало, выглядело не очень читаемо и всё равно могло содержать кириллицу. И тогда я подумала: а что если задействовать симлинки? Симлинк может называться как угодно, лежать в каком-нибудь временном каталоге и указывать на нужный нам файл. Нам нужно всего лишь транслитерировать кириллицу, выкинуть всё остальное и добавить GUID чтобы не мучиться с уже существующими файлами и симлинками, а программа уже будет способна открыть такое. Была опасность, что при сохранении, CherryTree удалит симлинк и сохранит новый файл, нарушив эту схему, но оказалось, что и тут проблем нет, файл просто открывается для записи, очищается и наполняется новыми данными! Правда, в скором времени оказалось, что в Windows Vista и выше работа с симлинками требует прав администратора, но и эту проблему можно так или иначе решить. История изменений ----------------- • 3.05.2019 Первый публичный релиз. • 4.05.2019 [+] Теперь скрипт проверяет существование переданного файла. • 23.08.2019 [-] Поправлен пример вызова команды mklink в Settings.VBS. Использование ------------- Запуск производится как-то так: > WScript.EXE //NoLogo "C:\Scripts\CherryTreeProxySL.WSF" "C:\Docs\Вишня.ctd" Если имя передаваемого файла содержит пробелы, то его обязательно нужно заключать в кавычки. Если нет - кавычки можно опустить. Если имя файла не указано, то скрипт просто запустит CherryTree без аргументов. > WScript.EXE //NoLogo "C:\Scripts\CherryTreeProxySL.WSF" Настройка --------- В начале работы придётся немного настроить скрипт. Для этого в файле Settings.VBS необходимо модифицировать значения следующих констант: • LN_COMMAND - здесь указывается команда запуска программы, создающей симлинки (см. следующий раздел). Переменные "%SOURCE%" и "%TARGET%" при выполнении скрипта будут заменены на имена исходного файла и имя файла симлинка, соответственно. Больше никаких модификаций производится, скрипт не добавит кавычки, не допишет параметры - всё это нужно указать самостоятельно. • EXE_FILE_NAME - здесь указывается полное имя исполняемого файла CherryTree, собственно, файл cherrytree.exe и путь к нему. • SYMLINK_FOLDER - здесь указывается каталог, в котором будут создаваться симлинки. Если в этой константе пустая строка, то симлинки будут создаваться во временном каталоге. Важно что бы каталог располагался на NTFS разделе. Данные константы уже заполнены какими-то значениями, поэтому их придётся лишь аккуратно их поправить. Обратите внимание, что строки в VBScript начинаются и заканчиваются кавычкой, а кавычки внутри самой строки нужно задваивать. Например: > "Это ""пример"" строки" Вспомогательная программа ------------------------- Для работы данного скрипта используется внешняя утилита, которая создаёт симлинки. Сама утилита в комплект не входит, и может использоваться любая, умеющая это делать. Например, начиная с Windows Vista, такая есть в системе в виде внутренней команды mklink (вызывается через cmd.exe как dir, copy и тому подобное). Кроме того, есть сторонние утилиты с такой же функциональностью, например: http://schinagl.priv.at/nt/ln/ln.html В Windows 2000 и Windows XP поддержку симлинков нужно активировать специальным драйвером, почитать о котором можно тут: http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html#symboliclinksforwindowsxp Так же в конце страницы находятся ссылки на драйвер и более простую версию утилиты ln (ссылка на которую была выше). Обратите внимание, что начиная с Windows Vista для создания симлинков требуются права администратора. Поэтому могут возникнуть трудности с функционированием данного скрипта. О том, как обойти их, можно прочитать тут: http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html#VistaAndUAC http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html#changesymboliclinkprivilege Если победить эти трудности не удалось, то всегда можно воспользоваться альтернативной версией скрипта - CherryTree Proxy (без "SL" на конце). Маленький копирайт ------------------ 1. Программа и исходный код распространяются бесплатно. 2. Вы имеете право распространять их на тех же условиях. 3. Вы не имеете права использовать имя автора после модификации исходного кода. 4. При этом желательно указывать ссылку на автора оригинальной версии исходного кода. 5. Вы не имеете права на платное распространение исходного кода, а также программных модулей, содержащих данный исходный код. 6. Программа и исходный код распространяются как есть. Автор не несёт ответственности за любые трагедии или несчастные случаи, вызванные использованием программы и исходного кода. 7. Для любого пункта данного соглашения может быть сделано исключение с разрешения автора программы. 8. По любым вопросам, связанным с данной программой, обращайтесь по адресу lindaoneesama@gmail.com Контакты -------- Почта: lindaoneesama@gmail.com Сайт: https://www.lindachan.net