Инсталлятор для новичков

Автор Тема: Инсталлятор для новичков  (Прочитано 8831 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн JohnLenninАвтор темы

  • .Net Teapot
  • ADN OPEN
  • Сообщений: 49
  • Карма: 1
Инсталлятор для новичков
« : 14-01-2016, 11:51:59 »
Приветствую "коллег по цеху". Жизнь никогда не стоит на месте и развивается по спирали, вот пришлось заново вернуться к программированию.
Написал в свое время dll - все работает. Но чтобы установить ее каждый раз на новом месте необходимо выполнять инструкции по установке dll через реестр, и вписывать команды в ленту в адаптации.  Назрела потребность сделать инсталлятор, чтобы пользователь мог просто запустить setup и dll сама зарегистрируется в реестре и пропишутся необходимые команды в ленте со значками.
Суть вопроса - где почитать и что посмотреть на примерах по созданию инсталляторов для модулей .net под AutoCAD? В частности как создавать файлы cuix и ресурсы меню для AutoCad, ну и как инсталлятором прописать пути к доверенным каталогам?
Что посоветуете?


Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Инсталлятор для новичков
« Ответ #2 : 14-01-2016, 11:59:29 »
Хотя вот я лично делал все сам - прописывание в реестр, создание ленты и т.п. Чтобы самому, так сказать, все прочувствовать )) В итоге достаточно один раз выполнить процедуру загрузки dll через NETLOAD - она сама все дальше сделает

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Инсталлятор для новичков
« Ответ #3 : 14-01-2016, 12:00:02 »
Указанную Александром ссылку не рекомендую в виду того, что изложенная по этой ссылке информация на сегодняшний день, отчасти, не соответствует действительности. Более актуальный [надёжный] вариант информации о Bundle-пакетах и о структуре файла PackageContents.xml лучше смотреть в английском варианте справки AutoCAD. Локализованный вариант справки по обозначенной теме весьма кривой (содержит огромное количество ошибок).

Отмечено как Решение JohnLennin 25-01-2016, 08:36:44

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Инсталлятор для новичков
« Ответ #4 : 14-01-2016, 12:05:59 »
Назрела потребность сделать инсталлятор, чтобы пользователь мог просто запустить setup и dll сама зарегистрируется в реестре и пропишутся необходимые команды в ленте со значками.
Суть вопроса - где почитать и что посмотреть на примерах по созданию инсталляторов для модулей .net под AutoCAD? В частности как создавать файлы cuix и ресурсы меню для AutoCad, ну и как инсталлятором прописать пути к доверенным каталогам?
Что посоветуете?
Можешь писать свой инсталлятор, например MSI. В составе пакета можно определить набор изменений, которые должны вноситься в реестр при установке.  Информация о создании Partial CUI\CUIX присутствует в справке AutoCAD. Создавать эти файлы программно не вижу смысла - гораздо проще и быстрее создать их один раз вручную средствами GUI, представленными в AutoCAD и результат включить в состав MSI. Создавать MSI-пакеты можно с помощью Wix.

Оффлайн JohnLenninАвтор темы

  • .Net Teapot
  • ADN OPEN
  • Сообщений: 49
  • Карма: 1
Re: Инсталлятор для новичков
« Ответ #5 : 14-01-2016, 12:16:31 »
Александр Пекшев aka Modis и Андрей Бушман, благодарю за ответы и советы.
Хотя вот я лично делал все сам - прописывание в реестр, создание ленты и т.п. Чтобы самому, так сказать, все прочувствовать )) В итоге достаточно один раз выполнить процедуру загрузки dll через NETLOAD - она сама все дальше сделает
Ну это понятно, это я уже много раз делал. Пользователи хотят сами ставить ее, а вот это все им проделывать как-то лень, да и не у всех хватате компетенции - хотят чтобы было все красиво - инсталлятор что бы сам все сделал.
Андрей Бушман, про файл CUI\CUIX - логично. Спасибо за совет. Про реестр понятно, а как добавить каталог в доверенные? тоже через реестр? И еще - стоит ли тащить dll из SDK или напрямую прописывать их из каталога autocad?
Пойду читать про wix.

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Инсталлятор для новичков
« Ответ #6 : 14-01-2016, 12:26:15 »
Про реестр понятно, а как добавить каталог в доверенные? тоже через реестр?
Я бы рекомендовал делать это средствами AutoCAD .NET API в коде метода Initialize(): проверять наличие нужных путей (и добавлять их в случае надобности). Пример кода (правда применительно к каталогам поиска) можешь глянуть здесь. Предполагаю, что записи о доверенных каталогах так же хранятся в реестре по аналогичному принципу и подправить их можно аналогично.

Можно было бы и в коде MSI-пакета править соответствующую запись реестра, однако в этом случае может возникнуть проблема: если в момент установки MSI-пакета работает AutoCAD, то он не подхватит внесённые тобой в реестр изменения и перезапишет их при завершении своей работы. Поэтому вариант с Initialize() более предпочтителен.

И еще - стоит ли тащить dll из SDK или напрямую прописывать их из каталога autocad?
Зачем "тащить"? CopyLocal должен быть False. Я использую (как правило) то, что даётся в SDK (тем более, что использую удалённую отладку).

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Инсталлятор для новичков
« Ответ #7 : 14-01-2016, 12:35:42 »
Как вариант: в коде своего MSI-пакета ты можешь программно вычислить, какие акады установлены на компьютере. Сделать это можно путём циклического парсинга имён всех подветвей первого уровня каждой записи, присутствующей в ветке HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD. На основе этого можно принять решение о том, для каких версий акада следует выполнить регистрацию плагина в реестре для автозагрузки (у юзеров ведь могут присутствовать не только "голые" акады, но и "вертикалки"). Для парсинга ключей, опять же - как вариант, можно воспользоваться этим. Ниже, во вложенном файле, на скрине подсвечены имена, по которым можно определить к какому акаду относятся настройки в подветвях.


Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Инсталлятор для новичков
« Ответ #8 : 14-01-2016, 12:58:01 »
На всякий случай поясняю - если ты решишь оформлять свой плагин в виде Bundle-пакета и использовать его в AutoCAD 2012 или более новой версии, то регистрировать его в реестре нет необходимости.

А что касается добавления доверительных каталогов в процессе установки плагина... Я буду бить пользователей линейкой по рукам, если узнаю, что они пытаются установить себе (или соседу) подобный плагин, создавая тем самым потенциальную возможность для запуска вирусов в акаде. Где гарантия, что для каталога, который ты хочешь добавить в доверенные, нет прав для записи и у других пользователей? Если такой доступ у них есть, то кто может гарантировать, что кто-то из них (или зловредный код, работающий с их правами) не поместит в назначенный тобою доверенный каталог что-то такое, что будет запущено в акаде и нанесёт вред? Есть стандартный набор доверительных каталогов - вот их и следует использовать. Чем не устроил стандартный набор доверенных каталогов? Вопрос риторический.

Решение о добавлении нового доверительного каталога должно приниматься либо администратором домена, либо, на крайний случай - самим пользователем, но никак не разработчиком плагина.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Инсталлятор для новичков
« Ответ #9 : 14-01-2016, 15:30:42 »
%SystemDrive%:\ProgramData\Autodesk\ApplicationPlugins и все нижележащие каталоги автоматически доверенные. Так что если устанавливать BUNDLE в этот каталог и при установке есть права на запись в этот каталог, то дополнительно заботиться о разрешениях в AutoCAD не нужно.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Инсталлятор для новичков
« Ответ #10 : 14-01-2016, 15:36:55 »
%SystemDrive%:\ProgramData\Autodesk\ApplicationPlugins и все нижележащие каталоги автоматически доверенные. Так что если устанавливать BUNDLE в этот каталог и при установке есть права на запись в этот каталог, то дополнительно заботиться о разрешениях в AutoCAD не нужно.
тогда уж не %SystemDrive%:\ProgramData\Autodesk\ApplicationPlugins, а %ProgramData%\Autodesk\ApplicationPlugins.

Вообще "родные" варианты от автодеска такие:
Цитировать
%APPDATA%/Autodesk/ApplicationPlugins.
%ProgramData%/Autodesk/ApplicationPlugins (кроме AutoCAD 2012).
%ProgramFiles%/Autodesk/ApplicationPlugins (использовался в AutoCAD 2012 но, если не мне изменяет память, может использоваться и в более новых версиях).
« Последнее редактирование: 14-01-2016, 17:19:30 от Андрей Бушман »

Оффлайн JohnLenninАвтор темы

  • .Net Teapot
  • ADN OPEN
  • Сообщений: 49
  • Карма: 1
Re: Инсталлятор для новичков
« Ответ #11 : 25-01-2016, 08:34:56 »
Александр Ривилис, Андрей Бушман, Спасибо Вам огромное за помощь и нформацию. Дай Вам Бог, счастья, добра, здоровья и долгих лет жизни. Что бы я без Ваших советов делал.

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Инсталлятор для новичков
« Ответ #12 : 25-01-2016, 12:00:32 »
здоровья
Да, сейчас это актуально... :)

Оффлайн RevitTormentor

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Re: Инсталлятор для новичков
« Ответ #13 : 18-10-2017, 20:55:31 »
На всякий случай поясняю - если ты решишь оформлять свой плагин в виде Bundle-пакета и использовать его в AutoCAD 2012 или более новой версии, то регистрировать его в реестре нет необходимости.

Т.е. можно bundle пакет и в 2011 поставить, только надо где то в реестре чего то прописать? Или в принципе Bundke пакеты только после >=2012 версии?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Инсталлятор для новичков
« Ответ #14 : 18-10-2017, 21:48:29 »
Или в принципе Bundle пакеты только после >=2012 версии?
Именно так. В реестре можно прописать загрузку dll-файла в AutoCAD, но других возможностей Bundle в версиях до 2012 нет.
Пример ветки реестра для AutoCAD 2011 Русский:

Код - Microsoft Registry [Выбрать]
  1. REGEDIT4
  2.  
  3. [HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:419\Applications\DimensionPatrol]
  4. "LOADCTRLS"=dword:0000000c
  5. "LOADER"="C:\\Users\\Rivilis-AN\\AppData\\Roaming\\Autodesk\\JTBWorld-DimensionPatrol\\2011\\JTBW-DimensionPatrol-2011.dll"
  6. "DESCRIPTION"="DimensionPatrol"
  7. "MANAGED"=dword:00000001
  8.  
  9. [HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:419\Applications\DimensionPatrol\Commands]
  10. "DIMPATROL"="DIMPATROL"
  11. "DIMPATROLCOLOR"="DIMPATROLCOLOR"
  12. "-DIMPATROLCOLOR"="-DIMPATROLCOLOR"
  13. "DIMPATROLTRANSPARENCY"="DIMPATROLTRANSPARENCY"
  14.  
  15. [HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R18.1\ACAD-9001:419\Applications\DimensionPatrol\Groups]
  16. "JTBWPLUGINS"="JTBWPLUGINS"
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение