![](https://habrastorage.org/webt/wk/as/x5/wkasx5o5qgdboxzfzsdpgemaj-w.png)
Для значительного числа пользователей установка приложения равнозначна появлению ярлыка на рабочем столе или кнопки на панели инструментов. В данной статье мы рассмотрим механизм добавления меню и панелей инструментов для пользовательских приложений, устанавливаемых на nanoCAD Plus 8.5, а также разберём процедуру создания ярлыка, который позволит запускать конкретное пользовательское приложение в среде nanoCAD.
Для тех, кому интереснее попробовать, чем читать описание, сразу же приводим ссылку на дистрибутив приложения «Примеры nanoCAD SDK 8.5». После установки данного приложения при запуске nanoCAD Plus 8.5 будут автоматически загружаться примеры, созданные на LISP, C++, С#, VB.NET, JScript и VBScript, а в пользовательский интерфейс будут добавляться выпадающее меню и панель инструментов (как на заглавном скриншоте), позволяющие вызывать команды примеров.
Для начала проиллюстрируем готовое приложение для установки примеров, идущих в комплекте с nanoCAD Plus 8.5 — «Примеры nanoCAD SDK 8.5», а затем рассмотрим, как включить в его состав файл описания меню и панелей инструментов.
![](https://habrastorage.org/webt/yg/lf/uf/yglfufltcwhbisu3v-fusadpcno.png)
Обзор установщика примеров
Инсталлятор примеров для nanoCAD представляет собой файл в формате Windows Installer с именем SamplesApp<версия>.msi. После запуска он построит список установленных версий nanoCAD, совместимых с инсталлятором, и предложит выбрать, на какие версии устанавливать приложение, а на какие — нет:
![](https://habrastorage.org/webt/b5/wv/kp/b5wvkp9pwsllcatarxiujk_ybhm.png)
![](https://habrastorage.org/webt/2_/l4/wi/2_l4wisvky7wp7pebenrbgbc_ui.png)
![](https://habrastorage.org/webt/gp/ej/pi/gpejpiiph0k_rat0rackq8zfhps.png)
Папка установки: C:\Program Files (x86)\Nanosoft\Примеры nanoCAD SDK 8.5\NCAD80x64.
Установленное приложение «Примеры nanoCAD SDK 8.5» следует добавить в список автозагрузки:
![](https://habrastorage.org/webt/mu/o8/bb/muo8bbnn8ujco8ksscc2ej9t0m4.png)
При запуске nanoCAD 8.5 в командную строку выводится сообщение о загружаемом приложении:
![](https://habrastorage.org/webt/rm/yd/h7/rmydh7by906ih641alempg38hjk.png)
Загруженные команды можно выполнить:
• из командной строки,
• из установленного вместе с приложением выпадающим меню:
![](https://habrastorage.org/webt/ll/hd/yc/llhdyckmbyagngccbkyzfn8oc0c.png)
• или при помощи панели инструментов nanoCAD SDK, куда вынесены некоторые команды примеров SDK:
![](https://habrastorage.org/webt/w7/ir/xn/w7irxnlzgsldddyjmfuqxsibupi.png)
Что устанавливает инсталлятор
Для каждой из выбранных в процессе установки версий nanoCAD, инсталлятор создает директорию с файлами примеров:
![](https://habrastorage.org/webt/ga/7s/bz/ga7sbzbh-dwc8jyi23xrnun3ahs.png)
Для платформ 8.0-8.5 устанавливается полный набор примеров (папка NCAD80x64), а для предыдущих версий платформы устанавливаются только скрипты (JS, VBS), не требующие пересборки под каждую платформу (папки получают имена по номеру версии: NC70x64 и т.п.). Это не является ограничением технологии установки приложений: если построить примеры SDK всех предыдущих версий, то можно создать единый инсталлятор, который будет устанавливать полный набор примеров на все поддерживаемые платформы.
![](https://habrastorage.org/webt/cz/yo/pp/czyoppr3zrkq1iadt2zvdp1vt6s.png)
Файл описания приложения (*.package)
![](https://habrastorage.org/webt/at/nz/kg/atnzkgun2iy__ckb83kiljn4prk.png)
Кроме файлов приложений, в папке с установленными примерами находится файл пакета — с расширением .package, который содержит всю необходимую информацию о пользовательских конфигурациях nanoCAD (включая приложения для загрузки и пользовательские меню) и позволяет загружать выбранную конфигурацию непосредственно при старте nanoCAD.
Рассмотрим пакетный файл для загрузки NRX-модулей из комплекта примеров для nanoCAD. Содержимое файла представляет собой следующую XML-структуру:
<?xml version="1.0" encoding="utf-8" ?>
<ApplicationPackage
xmlns="hostApplicationPackage/v01"
Name="nanoCAD SDK Samples"
>
<Components>
<ConfigEntry
FileName="NCADSDK.cfg"
FileType="CFG"
/>
<ComponentEntry
AppName="HelloNRX minimal NRX sample"
ModuleName="HelloNRX.nrx"
ModuleType="NRX"
/>
<ComponentEntry
AppName="CrossCircle Object Enabler"
ModuleName="CrossCircle.nrx"
ModuleType="NRX"
/>
<ComponentEntry
AppName="CrossCircle Commands"
ModuleName="CrossCircleUI.nrx"
ModuleType="NRX"
/>
<ComponentEntry
AppName="CrossCircle Managed Wrapper"
ModuleName="CrossCircleMg.dll"
ModuleType="NRX"
/>
<ComponentEntry
AppName="CrossCircle Managed Commands"
ModuleName="CrossCircleMgdList.dll"
ModuleType="MGD"
/>
<ComponentEntry
AppName="HelloHost .NET Sample"
ModuleName="HelloHost.dll"
ModuleType="MGD"
/>
<ComponentEntry
AppName="HelloHost VB.NET Sample"
ModuleName="HelloHostVB.dll"
ModuleType="MGD"
/>
<ComponentEntry
AppName="MultiCAD Objects"
ModuleName="McsObjects.dll"
ModuleType="MultiCAD"
/>
<ComponentEntry
AppName="MultiCAD Symbols"
ModuleName="Symbols.dll"
ModuleType="MultiCAD"
/>
<ComponentEntry
AppName="MultiCAD .NET Symbols"
ModuleName="SymbolsMgd.dll"
ModuleType="MGD"
/>
<ComponentEntry
AppName="MultiCAD .NET CustomObjects"
ModuleName="CustomObjects.dll"
ModuleType="MGD"
/>
<ComponentEntry
AppName="NSF Commands"
ModuleName="hello_nsf.nsf"
ModuleType="NSF"
/>
<ComponentEntry
AppName="Tiles LISP Sample"
ModuleName="Tiles.lsp"
ModuleType="LISP"
/>
<ComponentEntry
AppName="Hello World DCL Sample"
ModuleName="helloworld.lsp"
ModuleType="LISP"
/>
<ComponentEntry
AppName="ListDialog DCL Sample"
ModuleName="listdialog.lsp"
ModuleType="LISP"
/>
<ComponentEntry
AppName="MessageBox DCL Sample"
ModuleName="messagebox.lsp"
ModuleType="LISP"
/>
<ComponentEntry
AppName="SinDialog DCL Sample"
ModuleName="sindialog.lsp"
ModuleType="LISP"
/>
</Components>
</ApplicationPackage>
Элементы, которые используются для описания пакета:
• ApplicationPackage
• Components
• ConfigEntry
• ComponentEntry
Главный элемент ApplicationPackage содержит атрибут Name для задания имени приложения, которое по окончании загрузки будет отображаться в командной строке.
Элемент Components описывает компоненты пакета: загружаемый модуль приложения – элемент ComponentEntry, а также конфигурационный файл приложения с меню – ConfigEntry.
ComponentEntry содержит атрибуты: AppName — имя приложения, ModuleName – имя исполняемого модуля, ModuleType – тип модуля. Допускается использование следующих типов:
LISP, NRX, MGD, NSF, TX, они же перечислены в списке поддерживаемых типов команды APPLOAD.
Параметры командной строки, создание ярлыка
Дистрибутив «Примеры nanoCAD SDK 8.5» добавляет приложение в автозагрузку и оно загружается при каждом запуске платформы. Рассмотрим ситуацию, когда приложение автоматически загружать не нужно, но оно должно загружаться при запуске nanoCAD с помощью специального ярлыка на рабочем столе Windows.
1. Отключим автозагрузку:
![](https://habrastorage.org/webt/91/n7/no/91n7norqjkh1e99kvggakrtnake.png)
2. Создадим ярлык для «C:\Program Files\Nanosoft\nanoCAD x64 Plus 8.5\nCad.exe» (исходим из того, что вы установили nanoCAD x64 Plus 8.5 на диск C, в папку Program Files), назовем его “nanoCAD Plus 8.5 c Примерами SDK”.lnk.
3. Добавим в командную строку параметры:
a. -r — Название стартовой конфигурации (NCADSamples),
b. -p — Название профиля (если не указан, соответствует названию стартовой конфигурации),
c. -g — путь к загружаемому приложению, может быть указан несколько раз.
При первом запуске при помощи нового ярлыка будет создан профиль, имя которого было указано в командной строке ярлыка:
![](https://habrastorage.org/webt/lk/ln/ew/lklnew6z9y_xt-q_qvxs4xtcp9y.png)
Важно не путать понятия стартовой конфигурации и профиля:
- Стартовая конфигурация – содержит информацию о том, какой основной и какие дополнительные файлы пользовательского интерфейса (*.cfg) загружены, а также ссылку на текущий профиль. Предназначена для создания независимых конфигураций (ярлыков), в которых запускаются приложения.
- Профиль – содержит настройки программы. Различные стартовые конфигурации могут как ссылаться на различные, независимые профили, так и использовать одинаковые настройки, ссылаясь на один и тот же профиль.
Заключение
Исходный код инсталлятора примеров для nanoCAD входит в состав SDK. Для того, чтобы собрать инсталлятор самостоятельно, потребуется WiX Toolset версии 3.8. Пример файла с расширением .cfg также включен в состав SDK, описание процесса создания пользовательской панели инструментов и пользовательского меню nanoCAD приведено в статье.