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

ADN Club => ObjectARX => Тема начата: Ura от 09-08-2016, 12:16:55

Название: Как добавить своё arx-приложение в доверенные
Отправлено: Ura от 09-08-2016, 12:16:55
Когда загружаю приложение - кружки (точки останова) становятся пустыми.

Еще один вопрос.
Сейчас, при каждой загрузке программы в AutoCAD выводится сообщение
Make sure that this file commes from a trusted source and does not contain malicious code.
И спрашивает загрузить программу или нет.

Как сделать, чтобы это сообщение не выводилось при каждой загрузке программы?
Название: Re: Как добавить своё arx-приложение в доверенные
Отправлено: Александр Ривилис от 09-08-2016, 12:22:49
Когда загружаю приложение - кружки (точки останова) становятся пустыми.
Совсем плохо. Значит pdb-файл не загружается. Должно быть так:
1) До запуска отладки они заполненные.
2) Запуск отладки - стартует AutoCAD - они становятся пустыми.
3) Загрузка arx-файла - они становятся заполненными.
Может быть ты грузишь arx-файл не оттуда или компилируешь/линкуешь в Release, а не в Debug???
Как сделать, чтобы это сообщение не выводилось при каждой загрузке программы?
http://docs.autodesk.com/MAP/2014/RUS/index.html?url=filesACD/GUID-2FB4611D-F141-48D5-9B6E-460EB59351AF.htm,topicNumber=ACDd30e442950
Название: Re: Как добавить своё arx-приложение в доверенные
Отправлено: Ura от 09-08-2016, 15:19:07
Спасибо за ссылку

Нашел в реестре 2 места, где устанавливается эта переменная
Если записать в профиль пользователя
HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R20.0\ACAD-E001:409\Profiles\<<Unnamed Profile>>\Variables
TRUSTEDPATHS
приложение загружается нормально и не спрашивает подтверждения пользователя

Но было бы хорошо установить эту переменную при инсталляции программы один раз и для всех пользователей
Это можно сделать???
Садя по всему, нужно настраивать
HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R20.0\ACAD-E001\Variables\TRUSTEDPATHS
Пробовал записать пути в переменную - (По умолчанию)
Не получилось, требует подтверждение
Название: Re: Как добавить своё arx-приложение в доверенные
Отправлено: Александр Ривилис от 09-08-2016, 15:41:00
Садя по всему, нужно настраивать
HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R20.0\ACAD-E001\Variables\TRUSTEDPATHS
Пробовал записать пути в переменную - (По умолчанию)
Не получилось, требует подтверждение
Сделал всё правильно, но (!!!) при этом нужно убедится что этой переменной нет в HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R20.0\ACAD-E001:LANG\Profiles\<<имя профиля>>\Variables
В этом случае берётся значение из HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R20.0\ACAD-E001\Variables\TRUSTEDPATHS
Фактически это будет значением по-умолчанию, которое в каждом из профилей каждого из пользователей может быть изменено.
Название: Re: Как добавить своё arx-приложение в доверенные
Отправлено: Александр Ривилис от 09-08-2016, 16:03:18
Вообще же правильный способ для приложений - это создание BUNDLE и помещение его в один из подкаталогов %ProgramFiles%\Autodesk\ApplicationPlugins, которые являются всегда доверенными.
Название: Re: Как добавить своё arx-приложение в доверенные
Отправлено: Ura от 09-08-2016, 16:05:41
Спасибо, получилось

Странно сделали разработчики, я думал строки должны объединяться

В профиле пользователя по умолчанию создается переменная TRUSTEDPATHS инициализированная ";"
Просто очистить значение оказалось недостаточно, только после удаления самой переменной
Но проблема в том, что эта переменная в профилях всех пользователей...

Наверное будет все таки проще прописывать в каждый профиль, при запуске программы...
Название: Re: Как добавить своё arx-приложение в доверенные
Отправлено: Александр Ривилис от 09-08-2016, 16:08:06
Наверное будет все таки проще прописывать в каждый профиль, при запуске программы...
Лучше создай BUNDLE: https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2015/ENU/AutoCAD-Customization/files/GUID-BC76355D-682B-46ED-B9B7-66C95EEF2BD0-htm.html
Название: Re: Как добавить своё arx-приложение в доверенные
Отправлено: Ura от 10-08-2016, 17:54:31
Да, это то, что нужно

Создал XML файл, но вопрос - откуда взять ProductCode и UpgradeCode
должно быть типа
ProductCode="{845962F4-7E1F-469F-88E4-CF9808E84F2C}"
UpgradeCode="{04B9FE5C-E71B-47DF-B623-601AADFFACD5}"

Код ProductCode является обязательным
Название: Re: Как добавить своё arx-приложение в доверенные
Отправлено: Александр Ривилис от 10-08-2016, 18:09:41
но вопрос - откуда взять ProductCode и UpgradeCode
Сам сгенерируй при помощи утилиты guidgen.exe из состава Visual Studio, или здесь: https://www.guidgen.com/
Название: Re: Как добавить своё arx-приложение в доверенные
Отправлено: Ura от 11-08-2016, 00:55:18
Не получается

Попробовал сделать пример, как указано в
http://help.autodesk.com/view/ACD/2015/ENU/?guid=GUID-CBDC037A-9B84-4ED2-B0A6-6552ECF59540 (http://help.autodesk.com/view/ACD/2015/ENU/?guid=GUID-CBDC037A-9B84-4ED2-B0A6-6552ECF59540)
Создал структуру папок и указанные файлы. В строке ProductCode ввел сгенерированный код
ProductCode="{35029214-DD5F-4998-A9C3-6110DAF1FCBB}"
Но при загрузке приложения, AutoCAD требует подтверждение загрузки пользователем

Мониторил загрузку приложений при наличии файла PackageContents.xml
Получается, что AutoCAD этот файл вообще не загружает, по крайней мере в AutoCAD 2015
AutoCAD только читает список файлов в директории, а содержимое файла PackageContents.xml не загружается

На странице http://help.autodesk.com/view/ACD/2015/ENU/?guid=GUID-5E50A846-C80B-4FFD-8DD3-C20B22098008 (http://help.autodesk.com/view/ACD/2015/ENU/?guid=GUID-5E50A846-C80B-4FFD-8DD3-C20B22098008)  написано
Цитировать
Starting with AutoCAD 2014-based products, custom applications must work under secure mode; when the SECURELOAD system variable is set to 1 or 2. When operating under secure mode, the program is restricted to loading and executing files that contain code from trusted locations; trusted locations are specified by the TRUSTEDPATHS system variable.

Получается, что в любом случае нужно устанавливать значение системной переменной TRUSTEDPATHS
Тогда нет смысла во всех этих процедурах...

Как вариант, чтобы отключить проверку, можно установить значение системной переменной SECURELOAD в 0
В этом случае все файлы загружаются без подтверждения
С другой стороны это не совсем правильно...
Название: Re: Как добавить своё arx-приложение в доверенные
Отправлено: Александр Ривилис от 11-08-2016, 01:00:55
Мониторил загрузку приложений при наличии файла PackageContents.xml
Получается, что AutoCAD этот файл вообще не загружает, по крайней мере в AutoCAD 2015
AutoCAD только читает список файлов в директории, а содержимое файла PackageContents.xml не загружается
А куда ты его поместил и какая структура твоего каталога? Может быть посмотришь готовые примеры? Да и взглянуть на содержимое твоего PackageContents.xml интересно.
Получается, что в любом случае нужно устанавливать значение системной переменной TRUSTEDPATHS
Тогда нет смысла во всех этих процедурах...
Нет.  Все подкаталоги каталога %ProgramFiles%\Autodesk\ApplicationPlugins являются доверенными автоматически.
Название: Re: Как добавить своё arx-приложение в доверенные
Отправлено: Александр Ривилис от 11-08-2016, 01:09:10
Вот пример готового BUNDLE: http://adn-cis.org/assets/gallery/AutoCAD/Autodesk%20DWG%20MgdDBG.bundle.zip
Название: Re: Как добавить своё arx-приложение в доверенные
Отправлено: Ura от 11-08-2016, 01:23:55
Сначала я создал файл для своей программы, ничего не получилось, тогда сделал как указано в примере
http://help.autodesk.com/view/ACD/2015/ENU/?guid=GUID-CBDC037A-9B84-4ED2-B0A6-6552ECF59540 (http://help.autodesk.com/view/ACD/2015/ENU/?guid=GUID-CBDC037A-9B84-4ED2-B0A6-6552ECF59540)
В начале текста указана структура папок и куда должны входить файлы
Создал все папки и указанные файлы

Для тестов сделал папку вне каталогов AutoCAD, чтобы они не оказались доверенными по умолчанию
Создал папку C:\OfficeSymbols.bundle
Создал файл  C:\OfficeSymbols.bundle\PackageContents.xml
Текст файла скопировал из примера, указав только
ProductCode="{35029214-DD5F-4998-A9C3-6110DAF1FCBB}"

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

Ожидал, что AutoCAD будет обращаться к реестру и пытаться прочитать указанный мной ключ  {35029214-DD5F-4998-A9C3-6110DAF1FCBB}
из строки ProductCode="{35029214-DD5F-4998-A9C3-6110DAF1FCBB}"
Такого обращения не было, AutoCAD его даже не пытался прочитать
Название: Re: Как добавить своё arx-приложение в доверенные
Отправлено: Александр Ривилис от 11-08-2016, 01:35:23
Для тестов сделал папку вне каталогов AutoCAD, чтобы они не оказались доверенными по умолчанию
Создал папку C:\OfficeSymbols.bundle
Создал файл  C:\OfficeSymbols.bundle\PackageContents.xml
Значит ты ничего не понял. Структура BUNDLE читается только из четко определённых каталогов. Читай внимательно: http://help.autodesk.com/view/ACD/2015/ENU/?guid=GUID-5E50A846-C80B-4FFD-8DD3-C20B22098008
Еще раз. Тебе лучше всего добавлять твой BUNDLE в  %ProgramFiles%\Autodesk\ApplicationPlugins. В этом случае твоё приложение будет грузится для всех пользователей и для всех выбранных тобой версий AutoCAD.
Ожидал, что AutoCAD будет обращаться к реестру и пытаться прочитать указанный мной ключ  {35029214-DD5F-4998-A9C3-6110DAF1FCBB}
из строки ProductCode="{35029214-DD5F-4998-A9C3-6110DAF1FCBB}"
Такого обращения не было, AutoCAD его даже не пытался прочитать
Чего вдруг он должен читать что-то из реестра??? Ты что-то себе нафантазировал.
Название: Re: Как добавить своё arx-приложение в доверенные
Отправлено: Александр Ривилис от 11-08-2016, 01:46:45
Вот готовый пример BUNDLE для ARXDBG, который я только что сделал: http://adn-cis.org/assets/gallery/AutoCAD/ArxDbg.bundle.zip
Разархивируй его в  каталог  %ProgramFiles%\Autodesk\ApplicationPlugins и проверь, что ARXDBG грузится в твой AutoCAD.
Если у тебя система установлена по-умолчанию, то это должен быть каталог "C:\Program Files\Autodesk\ApplicationPlugins" и в нём появятся два подкаталога: Support и ArxDbg.bundle
Название: Re: Как добавить своё arx-приложение в доверенные
Отправлено: Ura от 11-08-2016, 02:17:57
Спасибо за архивы с примерами

Попробовал переместить в каталог "C:\Program Files\Autodesk\ApplicationPlugins" - все загружается без
дополнительных вопросов. Мои файлы тоже корректно загружаются

Я помню, что если разместить в этот каталог, AutoCAD будет их загружать как доверенные
Так все и работает

Я хотел сделать второй вариант, когда программы будут находиться вне каталогов AutoCAD,
чтобы не мешать файлы AutoCAD и свои в одну кучу.

По определению, каталоги программы должны содержать только родные файлы
Посторонние файлы должны лежать в отдельном каталоге.

Если AutoDesk выделил для приложений отдельную папку, придется пользоваться ей.
Название: Re: Как добавить своё arx-приложение в доверенные
Отправлено: Андрей Бушман от 17-08-2016, 21:02:45
В официальной документации AutoCAD (не ObjectARX SDK) подробно разжёвано всё то, что касается BUNDLE-пакетов. Читать лучше англоязычную справку, ибо по обозначенной теме русский вариант справки, мягко говоря плохой (утилита-переводчик спонтанно переводила на русский язык тэги, атрибуты и т.п. в местах, где этого делать было нельзя).