Автозагрузка приложений nanoCAD и ее последовательность
Возможно, подобная информация уже была, но я ее не нашел.
Суть прикола: хочется один не сильно замороченный лиспик засунуть в автозагрузку, да так, чтоб пользователь не мог его отключить. По крайней мере, за пару секунд.
Дома была только версия 23, но ведь уже вышла 23.1.6486 (последняя на момент написания статьи) - ок, качаю. 2 с гаком гига, конечно, вызывает вопросы - ну да ладно.
Установка, лицензирование (плевать на все, работаю только с платформой), все дела - ок, наник запускается. Что уже радует Попутно, скачав SDK, в документации обнаруживаю интересные фразы:
Поддерживаемые форматы APPLOAD:
- Модули Teigha (.tx, .dll)
- Файлы NSF (.nsf, .nsc)
- Пакет приложений (.package)
- Модули .NET (.dll)
- Модули NRX (.nrx)
- Файлы LISP (.lsp, .lsc)
- Модули MAPI (.dll)
<...>
Для автоматической загрузки приложения используйте один из представленных способов
<...>
Добавьте имя файла с приложением в nApp.ini.
<...>
Файл nApp.ini следует расположить в одном из двух мест:
1 %AppData%\Nanosoft\nanoCADx64\Config\nApp.iniили
1 %ProgramFiles%\Nanosoft\nanoCADx64\nApp.ini
Нну, ок, оставлю в покое мою полубезумную страсть все поломать как только можно и нельзя, попробую делать "вот прямо как написано". Чисто для тестовых целей в каталоге c:\test организовываю не сильно сложный лиспик napp.lsp:
1 2 3 4 5 | (defun c:napp () (alert "c:napp") ) (c:napp) (alert "napp") |
Ну и рядом, чтоб примерно понимать про последовательно загрузки - лиспик, который буду руками (по крайней мере вначале) засовывать в автозагрузку (autoload.lsp):
1 2 3 4 5 | (defun c:autoload() (alert "c:autoload") ) (c:autoload) (alert "autoload") |
alert'ы выбраны не просто так - во-первых, их хрен пропустишь, во-вторых, print / princ / write-line могут себя вести не совсем корректно. По крайней мере, в ACAD - а тут ставить подобные эксперименты как-то не сильно тянет.
Ну ок, материал готов, пора создавать ini-файл. Понятно, что в реальных условиях в %ProgramFiles% мне никто не даст лезьть, так что останавливаюсь на %AppData%\Nanosoft\nanoCAD x64 23.1\Config
В каталоге болтается cfg.ini - пока забываю по его существование, но посмотреть его кодировку ИМХО не помешает. О как, UTF-8-BOM! Немного странноватое решение, но свой napp.ini буду делать именно в этой кодировке. Эй, notepad++, ты там где?
Ок, в справке показаны примеры для nrx / net модулей. А как быть с лиспом? Попробую чисто по аналогии (как-то информацию найти мне не удалось,- скорее всего, искал не то и не там):
1 2 | [\LispModules] "c:\test\napp.lsp" |
Запуск NC23.1, и... И тишина. всплывающих окон нет, команда c:napp не зарегистрирована. Может, я не так назвал раздел? Надо не LispModules, а LspModules или вообще LSPModules? Угу, ага, каэшн. Ни фига, не работает от слова совсем.
Короче, на форуме подсказали:
Во-первых, путь надо указывать без кавычек. Наплевав на все и вся.
Во-вторых, группу надо называть не [/LispModules], а [/LspModules]
Сначала выполняется загрузка из nApp.ini, следом - userdata.ini. Прописанные в автозагрузке приложения, как и следовало ожидать, загружаются в последнюю очередь.
Важное замечание: в смежных темах на форуме нанокада мелькнула информация о кириллице в именах модулей. Подтверждаю:
В случае наличия кириллицы кодировка файла должна быть Windows-1251!