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

ADN Club => Inventor API => Тема начата: OwnWay от 05-02-2020, 20:31:54

Название: Ошибка активации iLogic
Отправлено: OwnWay от 05-02-2020, 20:31:54
Добрейшего. Подключаю Dll в уже запущенный Inventor, вылетает ошибка.
(https://i.ibb.co/BgMjkSL/i-Logic.png)
Код - C# [Выбрать]
  1.         public void Activate(Inventor.ApplicationAddInSite addInSiteObject, bool firstTime)
  2.         {
  3.             m_inventorApplication = addInSiteObject.Application;
  4.             ApplicationAddIns appAddins = m_inventorApplication.ApplicationAddIns;
  5.  
  6.             //Код добавления Dll в необходимую директорию ...
  7.  
  8.             appAddins.UpdateAddInList();//Обновление списка dll. < = Скорее всего проблема в этом
  9.         }

Пробовал подключать через VBA, такая же ошибка.
Код - Visual Basic [Выбрать]
  1. Public Sub ListDrawingResources()
  2.    Dim aDoc As ApplicationAddIns
  3.    Set aDoc = ThisApplication.ApplicationAddIns
  4.    aDoc.UpdateAddInList
  5.  End Sub

Забавно то, что какое-то время все прекрасно работало.
Как справиться с ошибкой?
Название: Re: Ошибка активации iLogic
Отправлено: mikazakov от 05-02-2020, 20:40:24
Ну другом компе пробовали действия повторить?
Название: Re: Ошибка активации iLogic
Отправлено: Александр Ривилис от 05-02-2020, 21:42:10
Забавно то, что какое-то время все прекрасно работало.
А что за это время произошло? Обновления Windows? Обновления Inventor?
Нашел аналогичную тему: https://forums.autodesk.com/t5/inventor-customization/ilogic-activation-error/td-p/8997418
Может что-то с этой dll не так?
Название: Re: Ошибка активации iLogic
Отправлено: OwnWay от 05-02-2020, 23:24:19
mikazakov, Да, пробовал, результат тот же.

Александр Ривилис, Ничего не менялось.
Я тоже её находил, но там нет ответов на вопрос.
С dll все так. Они в отдельности все работают нормально, но подгружаться в уже запущенный Inventor не хотят.
Название: Re: Ошибка активации iLogic
Отправлено: mikazakov от 06-02-2020, 05:44:38
Они в отдельности все работают нормально, но подгружаться в уже запущенный Inventor не хотят.
CLSID у эддинов случаем не совпадает?
Название: Re: Ошибка активации iLogic
Отправлено: OwnWay от 06-02-2020, 09:49:05
mikazakov, нет, не совпадает.

Я так понимаю, используя UpdateAddInList, в Inventor заново подключаются уже подключённые dll. От этого и ошибка. Вопрос в том, как подключить новую dll в запущенный Inventor?
Название: Re: Ошибка активации iLogic
Отправлено: mikazakov от 06-02-2020, 13:14:13
Я так понимаю, используя UpdateAddInList, в Inventor заново подключаются уже подключённые dll.
В хэлпе написано, поиск новых надстроек, про перезагрузку старых не говорится. Но вопрос: зачем это делать? Обычно, для работы все надстройки загружаются во время запуска самого инвентора пользователем. Зачем что то потом пытаться копировать в папки с манифестами эддинов после загрузки инвентора а затем это все подключать?
Если в данном случае Эддин не нужен или мешает то можно просто его деактивировать, а при необходимости снова активировать
ApplicationAddIn.Activate
ApplicationAddIn.Deactivate
Название: Re: Ошибка активации iLogic
Отправлено: OwnWay от 07-02-2020, 13:44:44
mikazakov, деактивация не освобождает dll из процесса Inventor. И при повторном включении он снова подхватывает её. А я бы сначала хотел проверить актуальность версии этой dll.
Название: Re: Ошибка активации iLogic
Отправлено: mikazakov от 07-02-2020, 19:39:37
А я бы сначала хотел проверить актуальность версии этой dll.
У ApplicationAddIn есть некоторые свойства типа
ApplicationAddIn.DataVersion
ApplicationAddIn.ProgId
ApplicationAddIn.ClientId
может что то поможет.
Название: Re: Ошибка активации iLogic
Отправлено: Александр Ривилис от 07-02-2020, 20:23:11
А я бы сначала хотел проверить актуальность версии этой dll.
Что имеется в виду под актуальностью? Версию dll-файла? Например так:
https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.fileversioninfo.fileversion
или так:
https://docs.microsoft.com/en-us/dotnet/api/system.reflection.assemblyname.version
Название: Re: Ошибка активации iLogic
Отправлено: OwnWay от 09-02-2020, 21:42:29
Александр Ривилис, так, проверю я версию. А как обновить то? Inventor сразу подвязывает dll, что не дает обновить её. Или делать сторонний код для контроля актуальности версии?
Название: Re: Ошибка активации iLogic
Отправлено: Александр Ривилис от 09-02-2020, 22:32:56
Или делать сторонний код для контроля актуальности версии?
Конечно. IMHO это неправильно из под запущенного Inventor обновлять его плагины. .NET-приложение, загруженное в AppDomain выгрузить из него нельзя. Только выгрузив AppDomain: https://docs.microsoft.com/en-us/dotnet/standard/assembly/load-unload
Название: Re: Ошибка активации iLogic
Отправлено: Александр Ривилис от 09-02-2020, 23:38:07
А вот и подтверждение о невозможности выгрузить .NET addin из Inventor: https://adndevblog.typepad.com/manufacturing/2013/10/unload-net-addin-without-closing-inventor.html
Название: Re: Ошибка активации iLogic
Отправлено: mikazakov от 10-02-2020, 08:31:59
так, проверю я версию. А как обновить то?
при установке эддина можно посмотреть манифесты нужного эдиина, все манифесты лежат в определенном месте.
вот выдержка из хэлпа про местоположение манифестов:


Where to Put Your Files
Now that you have your add-in dll and have created your .addin file you need to know where to place those files so that Inventor can find and load your add-in.

The following four locations are supported. You can choose any one of the four depending on the needs of your add-in. Your .addin file can exist in any one of the following four locations or any subdirectory. The "%XXXX%" portion of each of the paths is an operating system defined variable. When using Explorer you can enter it as part of the path and Explorer will evaluate it to use the actual path defined by the variable.

All Users, Version Independent

Windows 7/8.1/10 - %ALLUSERSPROFILE%\Autodesk\Inventor Addins\

All Users, Version Dependent

Windows 7/8.1/10 - %ALLUSERSPROFILE%\Autodesk\Inventor 20xx\Addins\

Per User, Version Dependent

In Window 7/8.1/10 - %APPDATA%\Autodesk\Inventor 20xx\Addins\
Per User, Version Independent

In Window 7/8.1/10 - %APPDATA%\Autodesk\ApplicationPlugins