Как добавить своё arx-приложение в доверенные

Автор Тема: Как добавить своё arx-приложение в доверенные  (Прочитано 14765 раз)

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

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

  • ADN OPEN
  • Сообщений: 45
  • Карма: 0
Когда загружаю приложение - кружки (точки останова) становятся пустыми.

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

Как сделать, чтобы это сообщение не выводилось при каждой загрузке программы?

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Когда загружаю приложение - кружки (точки останова) становятся пустыми.
Совсем плохо. Значит 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
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 45
  • Карма: 0
Спасибо за ссылку

Нашел в реестре 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
Пробовал записать пути в переменную - (По умолчанию)
Не получилось, требует подтверждение

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Садя по всему, нужно настраивать
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
Фактически это будет значением по-умолчанию, которое в каждом из профилей каждого из пользователей может быть изменено.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Вообще же правильный способ для приложений - это создание BUNDLE и помещение его в один из подкаталогов %ProgramFiles%\Autodesk\ApplicationPlugins, которые являются всегда доверенными.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 45
  • Карма: 0
Спасибо, получилось

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

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

Наверное будет все таки проще прописывать в каждый профиль, при запуске программы...

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Наверное будет все таки проще прописывать в каждый профиль, при запуске программы...
Лучше создай BUNDLE: https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2015/ENU/AutoCAD-Customization/files/GUID-BC76355D-682B-46ED-B9B7-66C95EEF2BD0-htm.html
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 45
  • Карма: 0
Да, это то, что нужно

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

Код ProductCode является обязательным

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
но вопрос - откуда взять ProductCode и UpgradeCode
Сам сгенерируй при помощи утилиты guidgen.exe из состава Visual Studio, или здесь: https://www.guidgen.com/
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 45
  • Карма: 0
Не получается

Попробовал сделать пример, как указано в
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  написано
Цитировать
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
В этом случае все файлы загружаются без подтверждения
С другой стороны это не совсем правильно...

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Мониторил загрузку приложений при наличии файла PackageContents.xml
Получается, что AutoCAD этот файл вообще не загружает, по крайней мере в AutoCAD 2015
AutoCAD только читает список файлов в директории, а содержимое файла PackageContents.xml не загружается
А куда ты его поместил и какая структура твоего каталога? Может быть посмотришь готовые примеры? Да и взглянуть на содержимое твоего PackageContents.xml интересно.
Получается, что в любом случае нужно устанавливать значение системной переменной TRUSTEDPATHS
Тогда нет смысла во всех этих процедурах...
Нет.  Все подкаталоги каталога %ProgramFiles%\Autodesk\ApplicationPlugins являются доверенными автоматически.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 45
  • Карма: 0
Сначала я создал файл для своей программы, ничего не получилось, тогда сделал как указано в примере
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 его даже не пытался прочитать

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Для тестов сделал папку вне каталогов 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 его даже не пытался прочитать
Чего вдруг он должен читать что-то из реестра??? Ты что-то себе нафантазировал.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Вот готовый пример 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
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение