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

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

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

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Свой инсталлятор
« Ответ #30 : 27-09-2016, 10:48:12 »
Вообще-то lisp-файлы не регистрируются в реестре.
Вообще-то регистрируются. Тот самый "Чемоданчик" в известном окне хранит свои элементы в реестре. Я давно этим пользуюсь для программной регистрации лиспов в реестре.

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Свой инсталлятор
« Ответ #31 : 27-09-2016, 10:59:54 »
Вот экспортированная из реестра запись автозагрузки лиспа C:\shared\hello.lsp для обычного AutoCAD 2009:
[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R17.2\ACAD-7001:409\Profiles\<<Unnamed Profile>>\Dialogs\Appload\Startup]
"NumStartup"="1"
"1Startup"="C:\\shared\\hello.lsp"

Параметр NumStartup должен указывать количество параметров в реестре (правда почему-то в виде строки, но это уж вопрос к доске, а не ко мне). Минус в том, что подобная регистрация прописывается только в профилях AutoCAD, но это опять же вопрос не ко мне...

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Свой инсталлятор
« Ответ #32 : 27-09-2016, 11:19:11 »
Андрей, ты хороший парень, и отзывчивый и специалист в своём деле. Но ты пожалуйста учитывай подписи под аватарками, вот у тебя написано "Программист. Администратор CAD.", но у меня же  "Геодезист"
Я честно даже был смущён немного, когда меня в члены ADN Club записали.
Извини, если чем-то обидел. Я как-то не ставил себе такой задачи... Если что-то из того, что я пишу, тебе не понятно - ты не стесняйся спрашивать. Я понимаю, что то, что очевидно для одного человека, не всегда очевидно для другого (по тем или иным причинам). Так же не исключено, что временами текст, набираемый мною может кем-то быть истолкован двояко (чего я мог и не заметить в процессе его публикации).

А ну теперь то всё понятно стало...
Если ты хочешь в инсталляторе прописать конкретные версии AutoCAD и его верт. продуктов, то это действительно не будет представлять сложности, но если ты хочешь универсальный, то тут придётся попотеть. Второй вариант реализовать можно, но я такого пока не делал (т.е. такого опыта у меня ещё нет). Я знаком с WIX весьма поверхностно.

Ежели тебя интересует пример того, как в инсталляторе прописать редактирование реестра, то могу скинуть пример соответствующего кода инсталлятора (если ты ещё не разбирался с тем, как это делается).

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Свой инсталлятор
« Ответ #33 : 27-09-2016, 11:26:19 »
Вообще-то lisp-файлы не регистрируются в реестре.
Вообще-то регистрируются. Тот самый "Чемоданчик" в известном окне хранит свои элементы в реестре. Я давно этим пользуюсь для программной регистрации лиспов в реестре.
Вот экспортированная из реестра запись автозагрузки лиспа C:\shared\hello.lsp для обычного AutoCAD 2009:
[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R17.2\ACAD-7001:409\Profiles\<<Unnamed Profile>>\Dialogs\Appload\Startup]
"NumStartup"="1"
"1Startup"="C:\\shared\\hello.lsp"

Параметр NumStartup должен указывать количество параметров в реестре (правда почему-то в виде строки, но это уж вопрос к доске, а не ко мне). Минус в том, что подобная регистрация прописывается только в профилях AutoCAD, но это опять же вопрос не ко мне...
Андрей. Это крайне ненадежная схема, которую можно использовать для себя, в крайнем случае в небольшой организации с десятком проектировщиков. Но предложить хорошее альтернативное решение для старых версий AutoCAD, которое использовало бы только lisp я не могу. Увы.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 611
  • Карма: 155
    • ПГСу Бложик
Re: Свой инсталлятор
« Ответ #34 : 27-09-2016, 11:29:03 »
Это крайне ненадежная схема, которую можно использовать для себя, в крайнем случае в небольшой организации с десятком проектировщиков.
Почему? Ведь это уже гарантированно не измениться для старых версий, а для новых есть .bundle
Или я опять, что то не доглядел?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Свой инсталлятор
« Ответ #35 : 27-09-2016, 11:30:11 »
Я честно даже был смущён немного, когда меня в члены ADN Club записали.
Я надеюсь, что смущение - это единственное чувство и серьезных возражений против это нет. :)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Свой инсталлятор
« Ответ #36 : 27-09-2016, 11:31:02 »
Андрей. Это крайне ненадежная схема,
Я в курсе и обозначил это как "минус" выше. Способ обозначен мною как "на безрыбье и рак рыба" показывая, как можно обойтись только средствами лиспа. То что этот способ "плохо пахнет" - я согласен на 100%.

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Свой инсталлятор
« Ответ #37 : 27-09-2016, 11:33:07 »
Почему? Ведь это уже гарантированно не измениться для старых версий, а для новых есть .bundle
Или я опять, что то не доглядел?
Потому что очень хрупкий, в виду того, что это изменение нужно выполнять во всех существующих профилях AutoCAD. Если юзер создаст новый профиль автокада и переключится на него, то автозагрузка происходить не будет (ежели юзер сам не добавит в "чемоданчик" нового профиля соответствующий набор записей). Кстати, инсталлятору в этом случае нужно будет либо править текущий профиль акада, либо в итерации проходить по всем имеющимся (на усмотрение разработчика инсталлера).

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Свой инсталлятор
« Ответ #38 : 27-09-2016, 11:37:05 »
Почему? Ведь это уже гарантированно не измениться для старых версий, а для новых есть .bundle
Или я опять, что то не доглядел?
1. Пользователь случайно может удалить из "чемоданчика" нужные для загрузки файлы.
2. Насколько я помню там есть ограничение на количество программ в "чемоданчике"
3. Иногда (по непонятной для меня причине) содержимое "чемоданчика" очищается - это я наблюдал в версиях 2006, 2008, 2011
4. В ряде случаев appload.arx не загружается (например, если DEMANDLOAD не равен 3) и соответственно никакие программы из "чемоданчика" также не загружаются.
Это только то, что я сейчас за несколько минут вспомнил...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Свой инсталлятор
« Ответ #39 : 27-09-2016, 11:40:54 »
Если юзер создаст новый профиль автокада и переключится на него, то автозагрузка происходить не будет (ежели юзер сам не добавит в "чемоданчик" нового профиля соответствующий набор записей)
Кстати, рекомендуемый в первую очередь во всех непонятных ситуациях с неработающим/полуработающим AutoCAD сброс профиля также приводит к очистке "чемоданчика".
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Свой инсталлятор
« Ответ #40 : 27-09-2016, 11:42:29 »
Кстати, рекомендуемый в первую очередь во всех непонятных ситуациях с неработающим/полуработающим AutoCAD сброс профиля также приводит к очистке "чемоданчика".
В общем-то именно это я и имел в виду. :)

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 611
  • Карма: 155
    • ПГСу Бложик
Re: Свой инсталлятор
« Ответ #41 : 27-09-2016, 11:45:51 »
Понятно. Не сталкивался, но теперь буду иметь ввиду.

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Свой инсталлятор
« Ответ #42 : 27-09-2016, 11:47:50 »
На мой взгляд, лиспописателям проще было бы написать одну управляемую DLL, задачей которой является загрузка лиспов, перечень которых определён в некотором XML-файле. Эту библиотеку можно оформить в виде BUNDLE-пакета, а для старых версий AutoCAD полноценно регистировать в реестре (так же через инсталлятор). Инсталлятор каждого лиспового приложения должен проверять, установлена ли эта DLL - если нет, то устанавливать. Затем (после установки лиспового приложения) инсталлятор смотрит содержимое XML файла, обозначенного выше и, в случае необходимости, добавляет в него записи по загрузке нужных лиспов. Деинсталлятор лиспового приложения, соответственно, эти записи должен удалять из XML.

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

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

  • ADN Club
  • ****
  • Сообщений: 270
  • Карма: 24
  • Геодезист
Re: Свой инсталлятор
« Ответ #43 : 27-09-2016, 11:50:44 »
Ведь это уже гарантированно не измениться для старых версий, а для новых есть .bundle
Причем для новых, начиная с 2016 я такой ветки и не нашёл


серьезных возражений против это нет
Конечно нет, ещё до прихода сюда я думал что я немного программист, но пообщавшись тут, понял, что я всего-лишь инженер использующий инструменты Lisp ;-)

Если юзер создаст новый профиль автокада
Что-то мне подсказывает, что пользователей сидящий на 2008 AutoCAD'е не совсем знает как и зачем создавать профили.

Получается сначала нужно прочитать ветку "HKEY_CURRENT_USER\Software\Autodesk\AutoCAD" и во все там найденные R меньше чем 19.0 зайти и записать во все Profiles наше приложение?

Опять же что вот это значит  "ACAD-7001:409" они какие-то разные у разных версий.

Хорошо, если это не вариант. Тогда
Можно написать arx/dll, которая будет регистрироваться в реестре и в свою очередь загружать lisp-файлы.
А запускать этот arx/dll может WIX установщик?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Свой инсталлятор
« Ответ #44 : 27-09-2016, 11:56:24 »
Хорошо, если это не вариант. Тогда
Цитата: Александр Ривилис от 27-09-2016, 10:46:31

    Можно написать arx/dll, которая будет регистрироваться в реестре и в свою очередь загружать lisp-файлы.

А запускать этот arx/dll может WIX установщик?
Запускать его не нужно. Он прописывается установщиком в реестр и AutoCAD читая реестр знает, что его нужно загрузить.
Для каждой из поддерживаемых версий AutoCAD одна запись. Можно и на уровне HKEY_CURRENT_USER\SOFTWARE\Autodesk\AutoCAD\RXX.X\ACAD-YYYY:ZZZ\Applications, чтобы не требовать прав администратора, но мне такая схема не нравится. Лучше прописывать в HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\RXX.X\ACAD-YYYY:ZZZ\Applications и тогда приложение будет доступно всем пользователям.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение