Свой инсталлятор

Автор Тема: Свой инсталлятор  (Прочитано 43071 раз)

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

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Свой инсталлятор
« Ответ #45 : 27-09-2016, 11:56:31 »
Что-то мне подсказывает, что пользователей сидящий на 2008 AutoCAD'е не совсем знает как и зачем создавать профили.
Эх... Моя практика показывает, что в AutoCAD 2009 даже далеко не самые продвинутые пользователи зачастую знают, как создавать профиль акада и делать в нём базовые, нужные им настройки. Даже если кто-то из них не знал этого, то др. сотрудники запросто показывают им как это делается.

Опять же что вот это значит  "ACAD-7001:409" они какие-то разные у разных версий.
Помнится я выкладывал исходный код проекта, который парсил подобные ключи и на форуме давал ссылку. По этому ключу ты можешь определить год выпуска акада, название верт. продукта и его локализацию.


А запускать этот arx/dll может WIX установщик?
Я не понял вопроса. Зачем тебе это?

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Свой инсталлятор
« Ответ #46 : 27-09-2016, 12:00:45 »
Опять же что вот это значит  "ACAD-7001:409" они какие-то разные у разных версий.
Вот, из-за тебя снова открыл публичный доступ: https://bitbucket.org/Andrey-Bushman/acadkeyparser/wiki/Home
Можешь воспользоваться, пока открыт. :)

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

  • ADN Club
  • ****
  • Сообщений: 270
  • Карма: 24
  • Геодезист
Re: Свой инсталлятор
« Ответ #47 : 27-09-2016, 12:02:49 »
На мой взгляд, лиспописателям проще было бы написать одну управляемую DLL, задачей которой является загрузка лиспов, перечень которых определён в некотором XML-файле
Зачем в неком, пусть сам смотрит во всех PackageContents.xml ,что найдёт во всех BUNDLE  лежащих в C:\ProgramData\Autodesk\ApplicationPlugins и если нашёл там Lisp, загружает его.
Лучше прописывать в HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\RXX.X\ACAD-YYYY:ZZZ\Applications и тогда приложение будет доступно всем пользователям.
А откуда установщик узнает все варианты этих ХХ.Х и YYY:ZZZ ?


Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Свой инсталлятор
« Ответ #48 : 27-09-2016, 12:06:58 »
Зачем в неком, пусть сам смотрит во всех PackageContents.xml ,что найдёт во всех BUNDLE  лежащих в C:\ProgramData\Autodesk\ApplicationPlugins и если нашёл там Lisp, загружает его.
Согласен, так было бы более грамотно. :)
А откуда установщик узнает все варианты этих ХХ.Х и YYY:ZZZ ?
Выше я тебе дал ссылку на проект. Там присутствует XML-файл, содержащий информацию о существующих версиях акада и его вертикалках. По мере выхода новых версий, в этот файл нужно добавлять соответствующий набор записей (копируешь предыдущий и вносишь необходимые правки, как правило - просто меняешь значение года и его маркер). Файл можешь глянуть даже онлайн: https://bitbucket.org/Andrey-Bushman/acadkeyparser/src/382a1e4287de3be2139c30526c2c21fb69c02632/AcadKeyParser/AcadKeyParser.data.xml?at=master&fileviewer=file-view-default

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

  • ADN Club
  • ****
  • Сообщений: 270
  • Карма: 24
  • Геодезист
Re: Свой инсталлятор
« Ответ #49 : 27-09-2016, 12:28:49 »
Там присутствует XML-файл, содержащий информацию о существующих версиях акада и его вертикалках.
Подожди, а нам зачем это?
Понятно что по коду  продукта ты узнаешь, что это и какого года. Но нам та это вроде не нужно.

Мне показалось, что нужно сначала прочитать HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD, а потом для всех там найденных RXX.X меньше R19.0 прочитать HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\RХХ.Х и уже во всех найденных ACAD-YYY:ZZZ проверить, если есть HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R19.0\ACAD-B001:409\Applications то туда и прописать нашу волшебную dll

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Свой инсталлятор
« Ответ #50 : 27-09-2016, 12:32:39 »
Мне показалось, что нужно сначала прочитать HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD, а потом для всех там найденных RXX.X меньше R19.0 прочитать HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\RХХ.Х и уже во всех найденных ACAD-YYY:ZZZ проверить, если есть HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R19.0\ACAD-B001:409\Applications то туда и прописать нашу волшебную dll
Кстати, R18.2 - это AutoCAD 2012, который тоже понимает BUNDLE-пакеты. Это самая первая версия, которая поддерживает BUNDLE.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • ****
  • Сообщений: 270
  • Карма: 24
  • Геодезист
Re: Свой инсталлятор
« Ответ #51 : 27-09-2016, 12:41:13 »
Кстати, R18.2 - это AutoCAD 2012, который тоже понимает BUNDLE-пакеты.
Да, но по-умолчанию тот же App Store предлагает выбирать только с 2014 версии.

Блин... чем дальше в лес... Ну научимся мы(lisp'описы) lisp подгружать, но ещё же останется панелька с кнопочкой :-D Или её (простую панель, не на ленте) можно из Lisp создать?

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Свой инсталлятор
« Ответ #52 : 27-09-2016, 12:42:03 »
Подожди, а нам зачем это?
Понятно что по коду  продукта ты узнаешь, что это и какого года. Но нам та это вроде не нужно.

Эта DLL как раз и  предназначена для предоставления ответов на вопросы, которые ты задавал выше:
Цитата: Geobuilder
Опять же что вот это значит  "ACAD-7001:409" они какие-то разные у разных версий? А откуда установщик узнает все варианты этих ХХ.Х и YYY:ZZZ ?

Если тебе это не нужно, то нафига спрашивал тогда? Вопрос риторический. Обозначенная мною DLL может использоваться инсталлятором для выяснения того, какие акады установлены на компьютере, а так же какие из них уже инициализированы в профиле пользователя. Во всяком случае я создавал её именно с таким прицелом (и не только для использования в инсталляторах). Библиотека была указана в качестве ответа на цитируемые выше вопросы. Я никого не заставляю пользоваться ею.

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Свой инсталлятор
« Ответ #53 : 27-09-2016, 12:43:44 »
Ну научимся мы(lisp'описы) lisp подгружать, но ещё же останется панелька с кнопочкой :-D Или её (простую панель, не на ленте) можно из Lisp создать?
В составе конфигурационного файла всё того же BUNDLE-пакета ты указываешь, какие менюшки и панельки (CUI\CUIX-файлы) нужно подгружать.

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

  • ADN Club
  • ****
  • Сообщений: 270
  • Карма: 24
  • Геодезист
Re: Свой инсталлятор
« Ответ #54 : 27-09-2016, 12:58:52 »
В составе конфигурационного файла всё того же BUNDLE-пакета ты указываешь, какие менюшки и панельки нужно подгружать.
Да, но 2008 AutoCAD не поймёт CUIX файл предназначенный для 2014-го, хотя можно туда прописать для всех версий AutoCDA, кому mnu, кому cui, а кому cuix
И т.е. эта волшебная dll-ка которая нам пропишет Lisp, она же может прописать и mnu\cui?

Нашёл как через Lisp меню загружать\выгружать http://forum.dwg.ru/showpost.php?p=883323&postcount=371

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Свой инсталлятор
« Ответ #55 : 27-09-2016, 13:06:31 »
Да, но 2008 AutoCAD не поймёт CUIX файл предназначенный для 2014-го, хотя можно туда прописать для всех версий AutoCDA, кому mnu, кому cui, а кому cuix
Похоже ты не очень знаком с форматом конфигурационного файла BUNDLE-пакетов. Рекомендую почитать о нём в справке акада (только английского, ни в коем случае не русского). В конфигурационном файле пакета ты создаёшь компоненты и для каждого из них указываешь условия (например целевые версии акадов), при соблюдении которых содержимое компонента должно быть подгружено. Соответственно, в зависимости от того, в какой акад грузится пакет, будут загружаться те или иные компоненты (DLL, ARX, LSP, CUI\CUIX и т.п.).

И т.е. эта волшебная dll-ка которая нам пропишет Lisp, она же может прописать и mnu\cui?
Не пропишет, а подгрузит - это уж как реализуешь. Программно подгружать MNU\CUI\CUIX можно (API предоставляет такую возможность, к счастью).

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Свой инсталлятор
« Ответ #56 : 27-09-2016, 13:16:22 »
И т.е. эта волшебная dll-ка которая нам пропишет Lisp
Здесь можешь глянуть варианты регистраций "волшебных библиотек" для их автозагрузки: https://sites.google.com/site/bushmansnetlaboratory/moi-zametki/avtomaticeskaa-zagruzka-net-bibliotek

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Свой инсталлятор
« Ответ #57 : 27-09-2016, 13:52:21 »
Да, но по-умолчанию тот же App Store предлагает выбирать только с 2014 версии.
Там заявлена поддержка только последних трёх версий.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Свой инсталлятор
« Ответ #58 : 20-04-2017, 20:19:02 »
Т.е. так для каждого файла, даже если их 43 штуки?
Нельзя сразу каталог со всеми подкаталогами и файлами разом указать?
Наткнулся на интересную статью по этому вопросу. Сам еще не проверял, но есть подозрение, что решение вполне годное: https://habrahabr.ru/post/122038/
Ну и описание на сайте WIX: http://wixtoolset.org/documentation/manual/v3/overview/heat.html

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

  • ADN Club
  • ****
  • Сообщений: 270
  • Карма: 24
  • Геодезист
Re: Свой инсталлятор
« Ответ #59 : 21-04-2017, 08:27:38 »
Я опять всё забыл, второй день сижу разбираюсь
самое начало какой проект нужно создавать?
С++ -> WIX -> Setup Project
Дальше сделал всё как обычно, но при сборке выдаёт такие ошибки:

Unresolved reference to symbol 'WixUI:WixUI_ErrorProgressText' in section 'Product:*'.   
Unresolved reference to symbol 'WixUI:WixUI_Minimal' in section 'Product:*'.


Когда тупо беру проект Дмитрия, и там всё меняю на своё, всё нормально получается :-(