Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: MeatAll от 21-01-2022, 17:02:24

Название: Автозагрузка dll в автокад
Отправлено: MeatAll от 21-01-2022, 17:02:24
Добрый день. Не работает автозагрузка плагина в автокаде. Скомпилил dll, которая создает вкладку, на ней кнопки, которые вызывают WPF форму, не буду вдаваться в подробности. Пытался сделать автозагрузку этой dll - в %appdata% сделал папку MyApp.bundle, в ней лежит PackageContents.xml и папка Contents. в папке Contents лежит сама dll и папка Resources, в которой в свою очередь лежат иконка и help.html, которые я, в попытке сделать этот автозапуск, скопировал с установленного рабочего расширения, которое в свою очередь, было скачано с apps.autodesk. Когда запускаю автокад он не предалает загрузить мою dll, в отличие от других расширений. Через netload подрузить dll получается, все работает, разве что выпадает fatalerror при открытии на ленте вкладки "рекомендованные приложения". Вот код PackageContents.xml
Код - XML [Выбрать]
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <ApplicationPackage SchemaVersion="1.0" ProductType="Application"
  3.  AutodeskProduct="AutoCAD"
  4.  ProductType="Application"
  5.  AppVersion="1.0.0"
  6.  Name="My App"
  7.  Description="My App"
  8.  Icon="./Contents/Resources/Appicon.ico"
  9.  HelpFile="./Contents/Resources/help.html"
  10.  ProductCode="{00000000-0000-0000-0000-0000000A0000}"
  11.  <CompanyDetailsName="IAM"Url="www.aaaa.com"Email="1111@1111.com" />
  12.     <ComponentsDescription="Runtime parts">
  13.  
  14.     <RuntimeRequirementsOS="Win32|Win64|MacOS"Platform="AutoCAD|AutoCAD*"SeriesMin="R18.2"SeriesMax="R24.4" />
  15.  
  16.     <ComponentEntryAppName="MyApp"Version="1.0.0"ModuleName="./Contents/MyApp.dll" PerDocument="True"/>
  17.  
  18.   </Components>
  19.  
  20. </ApplicationPackage>
  21.  
создание и подгрузка вкладки с кнопками делались по данному примеру: https://habr.com/ru/post/263373/ (https://habr.com/ru/post/263373/) , только из кода был выкинуто
//и раз уж лента запустилась, то отключаем обработчик событий
                Autodesk.Windows.ComponentManager.ItemInitialized -=
                    new EventHandlerRibbonItemEventArgs>(ComponentManager_ItemInitialized);
так как с ним не компилилось. Делал на .NET Framework 4.7.2 и запускал на 2022 автокаде.
Название: Re: Автозагрузка dll в автокад
Отправлено: Александр Ривилис от 21-01-2022, 17:08:53
Пытался сделать автозагрузку этой dll - в %appdata% сделал папку MyApp.bundle
Странное место для приложения. Может всё-таки как-то так: http://docs.autodesk.com/ACD/2014/ENU/files/GUID-5E50A846-C80B-4FFD-8DD3-C20B22098008.htm
Название: Re: Автозагрузка dll в автокад
Отправлено: Александр Ривилис от 21-01-2022, 17:12:51
Делал на .NET Framework 4.7.2 и запускал на 2022 автокаде.
Нужен .NET Framework 4.8 для AutoCAD 2022: https://knowledge.autodesk.com/support/autocad/learn-explore/caas/CloudHelp/cloudhelp/2022/ENU/AutoCAD-ReleaseNotes/files/installation/INSTALLATION-REQUIREMENTS-ONE-AUTOCAD-2022-html.html
Название: Re: Автозагрузка dll в автокад
Отправлено: Александр Ривилис от 21-01-2022, 17:15:27
P.S.: Я предпочитаю помещать плагины сюда: C:\Program Files\Autodesk\ApplicationPlugins
В этом случае они работают для всех пользователей компьютера. Но помещение в этот каталог требует прав Администратора.
Название: Re: Автозагрузка dll в автокад
Отправлено: MeatAll от 21-01-2022, 17:22:02
Пытался сделать автозагрузку этой dll - в %appdata% сделал папку MyApp.bundle
Странное место для приложения. Может всё-таки как-то так: http://docs.autodesk.com/ACD/2014/ENU/files/GUID-5E50A846-C80B-4FFD-8DD3-C20B22098008.htm

попробовал по тем путям, как там указано - без изменений
Название: Re: Автозагрузка dll в автокад
Отправлено: MeatAll от 21-01-2022, 17:23:08
P.S.: Я предпочитаю помещать плагины сюда: C:\Program Files\Autodesk\ApplicationPlugins
В этом случае они работают для всех пользователей компьютера. Но помещение в этот каталог требует прав Администратора.

да вот перебрал разные варианты, в том числа и предложенные Вами - пока не помогает
Название: Re: Автозагрузка dll в автокад
Отправлено: MeatAll от 21-01-2022, 17:23:40
Делал на .NET Framework 4.7.2 и запускал на 2022 автокаде.
Нужен .NET Framework 4.8 для AutoCAD 2022: https://knowledge.autodesk.com/support/autocad/learn-explore/caas/CloudHelp/cloudhelp/2022/ENU/AutoCAD-ReleaseNotes/files/installation/INSTALLATION-REQUIREMENTS-ONE-AUTOCAD-2022-html.html

понял, попробую перекомпилить
Название: Re: Автозагрузка dll в автокад
Отправлено: Александр Ривилис от 21-01-2022, 17:28:42
1. Скачай http://adn-cis.org/assets/gallery/AutoCAD/MgdDbg.zip
2. Разблокируй zip-архив
3. Разархивируй в %ProgramFiles%\Autodesk\ApplicationPlugins
Подробности здесь: https://adn-cis.org/forum/index.php?topic=7274.0
Проанализируй файл C:\Program Files\Autodesk\ApplicationPlugins\Autodesk DWG MgdDBG.bundle\PackageContents.xml - сравни чем отличается от твоего. Возможно причина в этом.
Похоже что на уровне  <ApplicationPackage> у тебя нет <RuntimeRequirements>, которые обязательно должны присутствовать. И причем здесь MacOS???
Название: Re: Автозагрузка dll в автокад
Отправлено: Александр Ривилис от 21-01-2022, 17:36:01
И вообще у тебя куча ошибок в PackageContents.xml - проверь парность знаков ">" и "<"
Название: Re: Автозагрузка dll в автокад
Отправлено: Александр Ривилис от 21-01-2022, 17:45:14
Попробуй вот такой вариант. Я его не тестировал, но он значительно ближе к истине чем твой:

Код - XML [Выбрать]
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <ApplicationPackage SchemaVersion="1.0" ProductType="Application"
  3.  AutodeskProduct="AutoCAD"
  4.  ProductType="Application"
  5.  AppVersion="1.0.0"
  6.  Name="My App"
  7.  Description="My App"
  8.  Icon="./Contents/Resources/Appicon.ico"
  9.  HelpFile="./Contents/Resources/help.html"
  10.  ProductCode = "{E67ADF67-D351-499D-BC37-3933783C39F5}">
  11.   <RuntimeRequirements OS="Win32|Win64" Platform="AutoCAD|AutoCAD*" SeriesMin="R18.2" SeriesMax="R24.2" />
  12.   <Components Description="My AutoCAD APP">
  13.     <RuntimeRequirements OS="Win32|Win64" Platform="AutoCAD|AutoCAD*" SeriesMin="R18.2" SeriesMax="R24.2" />
  14.     <ComponentEntry AppName="MyApp" Version="1.0.0" ModuleName="./Contents/MyApp.dll" PerDocument="True" />
  15.   </Components>
  16. </ApplicationPackage>
Название: Re: Автозагрузка dll в автокад
Отправлено: MeatAll от 21-01-2022, 18:17:26
1. Скачай http://adn-cis.org/assets/gallery/AutoCAD/MgdDbg.zip
2. Разблокируй zip-архив
3. Разархивируй в %ProgramFiles%\Autodesk\ApplicationPlugins
Подробности здесь: https://adn-cis.org/forum/index.php?topic=7274.0
Проанализируй файл C:\Program Files\Autodesk\ApplicationPlugins\Autodesk DWG MgdDBG.bundle\PackageContents.xml - сравни чем отличается от твоего. Возможно причина в этом.
Похоже что на уровне  <ApplicationPackage> у тебя нет <RuntimeRequirements>, которые обязательно должны присутствовать. И причем здесь MacOS???

просто взял Вашу xml, скопировал и заменил в ней ModuleName на свое. Теперь у меня, по крайней мере, на кнопке "вход в службы" появляется всплывающее уведомление, что мой плагин подгружен, хотя вкладка на ленте не появляется
Название: Re: Автозагрузка dll в автокад
Отправлено: Александр Ривилис от 21-01-2022, 18:23:22
Вкладка наверное не подгружается именно из-за того, что ты убрал часть кода из примера.
Но главное, что сам плагин грузится.
Название: Re: Автозагрузка dll в автокад
Отправлено: MeatAll от 21-01-2022, 18:30:07
Вкладка наверное не подгружается именно из-за того, что ты убрал часть кода из примера.
Но главное, что сам плагин грузится.

я попробовал в ContentPackage.xml прописать ссылку на lsp файл, который через _netload должен dll подгружать. когда я в запущенном акаде гружу dll через netload, то все ок.
(command "_netload" "C:\\Program Files\\Autodesk\\ApplicationPlugins\\MyApp.bundle\\Contents\\MyApp.dll")
выдает "; ошибка: команда Autocad: _netload отвергнута". Скажите пожалуйста, почему такое может быть?
Название: Re: Автозагрузка dll в автокад
Отправлено: MeatAll от 21-01-2022, 18:34:48
Даже когда в запущенный акад закидываю этот lisp файл, то вкладка отстраивается
Название: Re: Автозагрузка dll в автокад
Отправлено: Александр Ривилис от 21-01-2022, 19:09:28
я попробовал в ContentPackage.xml прописать ссылку на lsp файл, который через _netload должен dll подгружать. когда я в запущенном акаде гружу dll через netload, то все ок.
Зачем ты это пытаешься делать? В момент, когда загружается твой плагин еще нет Ленты (Ribbon) и соответственно вкладку ты добавить не можешь. Твой плагин должен дождаться момента, когда Лента готова и тогда добавлять свою вкладку.
Название: Re: Автозагрузка dll в автокад
Отправлено: Александр Ривилис от 21-01-2022, 19:12:40
Читай:
https://adn-cis.org/forum/index.php?topic=10085.0
https://adn-cis.org/forum/index.php?topic=7912.0