Сообщество программистов Autodesk в СНГ
ADN Club => ObjectARX => Тема начата: Ura от 09-08-2016, 12:16:55
-
Когда загружаю приложение - кружки (точки останова) становятся пустыми.
Еще один вопрос.
Сейчас, при каждой загрузке программы в AutoCAD выводится сообщение
Make sure that this file commes from a trusted source and does not contain malicious code.
И спрашивает загрузить программу или нет.
Как сделать, чтобы это сообщение не выводилось при каждой загрузке программы?
-
Когда загружаю приложение - кружки (точки останова) становятся пустыми.
Совсем плохо. Значит 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
-
Спасибо за ссылку
Нашел в реестре 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
Пробовал записать пути в переменную - (По умолчанию)
Не получилось, требует подтверждение
-
Садя по всему, нужно настраивать
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
Фактически это будет значением по-умолчанию, которое в каждом из профилей каждого из пользователей может быть изменено.
-
Вообще же правильный способ для приложений - это создание BUNDLE и помещение его в один из подкаталогов %ProgramFiles%\Autodesk\ApplicationPlugins, которые являются всегда доверенными.
-
Спасибо, получилось
Странно сделали разработчики, я думал строки должны объединяться
В профиле пользователя по умолчанию создается переменная TRUSTEDPATHS инициализированная ";"
Просто очистить значение оказалось недостаточно, только после удаления самой переменной
Но проблема в том, что эта переменная в профилях всех пользователей...
Наверное будет все таки проще прописывать в каждый профиль, при запуске программы...
-
Наверное будет все таки проще прописывать в каждый профиль, при запуске программы...
Лучше создай BUNDLE: https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2015/ENU/AutoCAD-Customization/files/GUID-BC76355D-682B-46ED-B9B7-66C95EEF2BD0-htm.html
-
Да, это то, что нужно
Создал XML файл, но вопрос - откуда взять ProductCode и UpgradeCode
должно быть типа
ProductCode="{845962F4-7E1F-469F-88E4-CF9808E84F2C}"
UpgradeCode="{04B9FE5C-E71B-47DF-B623-601AADFFACD5}"
Код ProductCode является обязательным
-
но вопрос - откуда взять ProductCode и UpgradeCode
Сам сгенерируй при помощи утилиты guidgen.exe из состава Visual Studio, или здесь: https://www.guidgen.com/
-
Не получается
Попробовал сделать пример, как указано в
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
В этом случае все файлы загружаются без подтверждения
С другой стороны это не совсем правильно...
-
Мониторил загрузку приложений при наличии файла PackageContents.xml
Получается, что AutoCAD этот файл вообще не загружает, по крайней мере в AutoCAD 2015
AutoCAD только читает список файлов в директории, а содержимое файла PackageContents.xml не загружается
А куда ты его поместил и какая структура твоего каталога? Может быть посмотришь готовые примеры? Да и взглянуть на содержимое твоего PackageContents.xml интересно.
Получается, что в любом случае нужно устанавливать значение системной переменной TRUSTEDPATHS
Тогда нет смысла во всех этих процедурах...
Нет. Все подкаталоги каталога %ProgramFiles%\Autodesk\ApplicationPlugins являются доверенными автоматически.
-
Вот пример готового BUNDLE: http://adn-cis.org/assets/gallery/AutoCAD/Autodesk%20DWG%20MgdDBG.bundle.zip
-
Сначала я создал файл для своей программы, ничего не получилось, тогда сделал как указано в примере
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 его даже не пытался прочитать
-
Для тестов сделал папку вне каталогов 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 его даже не пытался прочитать
Чего вдруг он должен читать что-то из реестра??? Ты что-то себе нафантазировал.
-
Вот готовый пример 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
-
Спасибо за архивы с примерами
Попробовал переместить в каталог "C:\Program Files\Autodesk\ApplicationPlugins" - все загружается без
дополнительных вопросов. Мои файлы тоже корректно загружаются
Я помню, что если разместить в этот каталог, AutoCAD будет их загружать как доверенные
Так все и работает
Я хотел сделать второй вариант, когда программы будут находиться вне каталогов AutoCAD,
чтобы не мешать файлы AutoCAD и свои в одну кучу.
По определению, каталоги программы должны содержать только родные файлы
Посторонние файлы должны лежать в отдельном каталоге.
Если AutoDesk выделил для приложений отдельную папку, придется пользоваться ей.
-
В официальной документации AutoCAD (не ObjectARX SDK) подробно разжёвано всё то, что касается BUNDLE-пакетов. Читать лучше англоязычную справку, ибо по обозначенной теме русский вариант справки, мягко говоря плохой (утилита-переводчик спонтанно переводила на русский язык тэги, атрибуты и т.п. в местах, где этого делать было нельзя).