Автозагрузка приложений 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
К вопросу о справке
В справке, уж не знаю почему, но переменные типа %ProgramFiles% прописаны как c:\program files. ИМХО косячок-с, ну да не сильно критично

Нну, ок, оставлю в покое мою полубезумную страсть все поломать как только можно и нельзя, попробую делать "вот прямо как написано". Чисто для тестовых целей в каталоге 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, структура и возможности

Файл nApp.ini следует расположить в одном из двух мест:
%AppData%\Nanosoft\nanoCADx64\Config\nApp.ini
или
%ProgramFiles%\Nanosoft\nanoCADx64\nApp.ini

Имя файла не является регистрозависимым (как в Windows, так и в Linux).
Если файл находится в обоих каталогах, используется только тот, который в %ProgramFiles%.
Расположение файла в других каталогах, даже если эти пути прописаны как пути поиска, ничего не даст (скорее всего).
Кодировка файла – UTF-8-BOM
В конце файла перевод на новую строку не является обязательным. Пустые строки игнорируются. Символы табуляции при разборе файла игнорируются и заменяются на пустую строку.

Возможные группы:
Net-сборки : [\NetModules] Nrx-модули : [\NrxModules] Пакеты (packages) : [\ФигПоймиЧегоНаверно \App_Packages] Lisp-модули : [\LspModules] Nsf-модули : [\ТожеПопробуйДогадайсяВозможно \NsfModules] MAPI-модули (что бы под этим не понималось) : [\Угадай_в_третий_раз \MapiModules]

Имена групп не являются (как потом подсказали – действительно пофиг на регистр) регистрозависимыми. В случае повторения групп учитываются данные только из первой группы (но это не точно).
Внутри каждой группы указывается путь к загружаемому модулю. Путь может быть как относительным, так и абсолютным. Путь указывается без кавычек, даже если он содержит пробелы.

Элементы загружаются, игнорируя повторения, т.е. если в [\NetModules] будет несколько раз указано приложение c:\test\tes.dll, то оно будет загружено только первый раз.

Если файл приложения не найден, строка игнорируется и загрузка остальных приложений не останавливается.

Приложения загружаются в том порядке, как они указаны в nApp.ini-файле. Дублирование групп разрешается (или нет?)

Для перевода строки в разряд “комментарий” вначале ставится символ “;”

Файл userdata.ini также может использоваться для подобных целей (но вот на фига было дублировать функционал – вопрос).

Ну и возвращаясь к вопросу о последовательности загрузки.
Сначала выполняется загрузка из nApp.ini, следом - userdata.ini. Прописанные в автозагрузке приложения, как и следовало ожидать, загружаются в последнюю очередь.

Размещено в nanoCAD, Новости · Метки: , ,



Комментарии

Есть 1 комментарий к “Автозагрузка приложений nanoCAD и ее последовательность”
  1. Кулик Алексей aka kpblc пишет:

    Важное замечание: в смежных темах на форуме нанокада мелькнула информация о кириллице в именах модулей. Подтверждаю:
    В случае наличия кириллицы кодировка файла должна быть Windows-1251!

Поделитесь своим мнением


Я не робот.