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

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

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

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

  • ADN Club
  • ****
  • Сообщений: 259
  • Карма: 22
  • Геодезист
Свой инсталлятор
« : 06-09-2016, 17:36:08 »
Всем привет.
Удобная штука инсталлятор, раньше каждому 2-му объяснял как lisp\vlx использовать, даже видео-инструкцию 6 лет назад записал
Извините, вам запрещён просмотр содержимого спойлеров.

А тут выкладывая приложения в Autodesk App Store они мои приложения в инсталлятор завернули. Но так как приложения распространяю не только чрез магазин Autodesk, но и соцсети\форумы и вот тут возникает загвоздка, приложение готово, но ждёшь неделю\две пока его в магазине в инсталлятор завернут, потом такой радостный публикуешь везде, а там ошибка всплывает и по новой 2-3 недели ждать, пока они его персоберут  :( и всем объясняешь, "подождите, я ошибку исправил, но вам только через месяц исправление покажу..."
Я так понимаю делов-то, свой бондл записать в %Appdata%\Autodesk\ApplicationPlugins, да для удаления куда-то что-то ещё прописать, чтоб приложение появилось в "программах и компонентах"
Подскажите варианты, как и в чём это сделать можно?

Может раздел и не совсем тот, но другого не придумал.
« Последнее редактирование: 06-09-2016, 18:38:16 от Geobuilder »

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 716
  • Карма: 145
    • Мои плагины к Автокаду
Re: Свой инстаялтор
« Ответ #1 : 06-09-2016, 17:42:17 »
Я распространяю программу просто как архив с бондл-папкой внутри. Ну и небольшая инструкция на своем сайте, куда его прописать.  Проблем нет, пользователи довольны. Даже радуются, что не надо инсталлятор на всех компах запускать. А на App Store - там всегда лежит старая версия с Автодесковским инсталлятором. Пока там обновят - я уже случается три версии опубликовать успеваю.

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

  • ADN
  • *
  • Сообщений: 2439
  • Карма: 687
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Re: Свой инстаялтор
« Ответ #2 : 06-09-2016, 18:31:33 »
Как-то года 2 тому назад озадачился этим вопросом. Рассматривал различные варианты, которые удалось найти на тот момент в интернете. Самым лучшим для меня оказался WIX Toolset. Остальные были либо платные, либо не имели нужных возможностей, либо были очень сложны в освоении. Я использую его совместно с Visual Studio для .NET проектов. Не знаю, насколько удобно будет на нем писать инсталяторы для LISP приложений.
Насколько я помню, неплохой был вариант - Inno Setup. Но чем он меня лично не устроил, уже точно не помню. Вроде бы, он не все мог сделать, что мне было нужно.

P.S> Исправь название темы :)

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

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 128
    • ПГСу Бложик
Re: Свой инсталлятор
« Ответ #3 : 07-09-2016, 09:20:50 »
Inno Setup пробовал, не понравилось то, что мусорит много и скопированные файлы автокад не подхватывал.

Я так понимаю делов-то, свой бондл записать в %Appdata%\Autodesk\ApplicationPlugins,
Для себя написал простейший "инсталятор", который именно это и делает.
Вся подготовка сводится к тому, что бы положить exe рядышком с .bundle и переименовать его.



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

  • ADN Club
  • ****
  • Сообщений: 259
  • Карма: 22
  • Геодезист
Re: Свой инсталлятор
« Ответ #4 : 07-09-2016, 10:24:48 »
Нашёл один вариант, это создание sfx архива, который сам распаковывается куда нужно.
Но вот засада, он упорно к моему пути добавляет впереди "C:\Program Files"

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

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 128
    • ПГСу Бложик
Re: Свой инсталлятор
« Ответ #5 : 07-09-2016, 10:30:32 »
Но вот засада, он упорно к моему пути добавляет впереди "C:\Program Files"
Он все правильно делает.  PROGRAMDATA    Возвращает путь к каталогу C:\ProgramData\ (аналогично ALLUSERSPROFILE).
Я использую "%APPDATA%\Autodesk\ApplicationPlugins\", APPDATA в Windows 7 - C:\Users\%UserName%\AppData\Roaming





https://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D1%80%D0%B5%D0%B4%D1%8B_Windows
« Последнее редактирование: 07-09-2016, 11:13:25 от Boxa.Shu »

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

  • ADN Club
  • ****
  • Сообщений: 259
  • Карма: 22
  • Геодезист
Re: Свой инсталлятор
« Ответ #6 : 07-09-2016, 10:51:35 »
Он все правильно делает.
Да ни чего не правильно, он к "C:\ProgramData\..." спереди ещё добавляет "C:\Program Files\" и в итоге пытается найти "C:\Program Files\C:\ProgramData\..."

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

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 128
    • ПГСу Бложик
Re: Свой инсталлятор
« Ответ #7 : 07-09-2016, 11:18:09 »



Вроде все работает. На всякий случай, версия 5.31 (х64)

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

  • ADN
  • *
  • Сообщений: 2439
  • Карма: 687
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Re: Свой инсталлятор
« Ответ #8 : 07-09-2016, 12:01:24 »
Для себя написал простейший "инсталятор", который именно это и делает.
Нашёл один вариант, это создание sfx архива, который сам распаковывается куда нужно.
Ну это как-то несерьезно. Приложение при этом не добавляется в список установленных программ Windows. Удалять его придется вручную. А как же священное нажатие кнопочки "принимаю" для лицензионного соглашения? :)

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

  • ADN Club
  • ****
  • Сообщений: 259
  • Карма: 22
  • Геодезист
Re: Свой инсталлятор
« Ответ #9 : 07-09-2016, 12:11:19 »
Приложение при этом не добавляется в список установленных программ Windows. Удалять его придется вручную.
Это да :-(
А как же священное нажатие кнопочки "принимаю" для лицензионного соглашения?
А это кстати есть :-)

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

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 128
    • ПГСу Бложик
Re: Свой инсталлятор
« Ответ #10 : 07-09-2016, 14:33:16 »
Ну это как-то несерьезно. Приложение при этом не добавляется в список установленных программ Windows. Удалять его придется вручную. А как же священное нажатие кнопочки "принимаю" для лицензионного соглашения?
Потребуется большего, допишу. Про удаление, при повторном запуске программа обнаружит, что в целевом каталоге уже лежит копия и соответственно название кнопочки поменяется на Uninstall, хотя да, в списке не появиться.

ЗЫ.
Надо бы посмотреть как туда прописываются...

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

  • Administrator
  • *****
  • Сообщений: 12668
  • Карма: 1641
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Свой инсталлятор
« Ответ #11 : 07-09-2016, 16:52:57 »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN
  • *
  • Сообщений: 2439
  • Карма: 687
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Re: Свой инсталлятор
« Ответ #12 : 07-09-2016, 19:47:14 »
На неспешное создание с нуля простейшего инсталлятора для Bundle с помощью WIX требуется около 15 минут:

Подумайте, стоит ли писать свой велосипед.

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Свой инсталлятор
« Ответ #13 : 22-09-2016, 11:34:35 »
На неспешное создание с нуля простейшего инсталлятора для Bundle с помощью WIX требуется около 15 минут:
Начал смотреть обозначенное видео, но в виду отсутствия звука и каких-либо поясняющих текстовых комментариев закрыл через 15 секунд.

Инсталлятор инсталлятору рознь... Например, качественный инсталлятор для Bundle-пакетов, на мой взгляд, должен в процессе установки предоставлять пользователю возможность выбрать один из заранее предопределённых каталогов установки,  в которых загрузчик акада выполняет поиск пакетов. Так же, в зависимости от выбранного каталога, инсталляция должна выполняться либо с правами обычного юзера, либо с правами админа. В меню "Пуск -> Все программы", так же должен присутствовать соответствующий набор пунктов меню (справка, лицензия, установка, открытие в проводнике каталога пакета и т.п.). На то, чтобы разобраться в том, как такое делать - у меня когда-то ушло существенно больше времени чем 15 минут...

Это необходимый минимум для приемлемого инсталлятора BUNDLE-пакета, ИМХО.

Скрины того, о чём я писал выше, можно глянуть здесь: https://bitbucket.org/Andrey-Bushman/cadproxy/wiki/Home

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

  • ADN Club
  • ****
  • Сообщений: 259
  • Карма: 22
  • Геодезист
Re: Свой инсталлятор
« Ответ #14 : 22-09-2016, 11:59:29 »
Например, качественный инсталлятор для Bundle-пакетов, на мой взгляд, должен в процессе установки предоставлять пользователю возможность выбрать один из заранее предопределённых каталогов установки,  в которых загрузчик акада выполняет поиск пакетов. Так же, в зависимости от выбранного каталога, инсталляция должна выполняться либо с правами обычного юзера, либо с правами админа. В меню "Пуск -> Все программы", так же должен присутствовать соответствующий набор пунктов меню (справка, лицензия, установка, открытие в проводнике каталога пакета и т.п.)
Да, в целом все верно, так было бы не плохо...
Но инсталлятор от Autodesk  сам не обладает всеми этими качествами. Понятно что нужно стремится к лучшему, тут недавно про apple прочитал, что они сами ни чего революционного ни разу не придумали, просто довели до совершенства те технологи которые уже существовали до них.

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Свой инсталлятор
« Ответ #15 : 22-09-2016, 12:05:53 »
Но инсталлятор от Autodesk  сам не обладает всеми этими качествами.
Вряд ли это тот образец качества, на который стоит равняться. Если автодеск не пишет качественных инсталляторов, то это не означает, что и ты обязан поступать так же, дабы барин не обиделись... Если тебя устраивает качество\возможности твоих инсталляторов, то и ладно. А если нет - то WIX может существенно помочь.

P.S.
А если Autodesk App Store вдруг не будет принимать твои MSI (поддерживающие все обозначенные мною выше возможности), то нафиг такой App Store нужен? Вопрос риторический.

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

  • ADN Club
  • ****
  • Сообщений: 259
  • Карма: 22
  • Геодезист
Re: Свой инсталлятор
« Ответ #16 : 22-09-2016, 12:55:10 »
На неспешное создание с нуля простейшего инсталлятора для Bundle с помощью WIX требуется около 15 минут:
Посмотрел видео. Без описания, не понимаю большую часть. особенно вот этот момент, как файлы записать, ещё и с папками чтоб они потом туда устанавливались.
Код - XML [Выбрать]
  1. Id="DllFile" Name="$(var.AutoCADTestProject.TargetFileName)"
  2.           Source="$(var.AutoCADTestProject.TargetPath)" DiskId="1" />

Если тебя устраивает качество\возможности твоих инсталляторов, то и ладно.
Ну если учесть что я вообще не умею инсталляторы создавать, то я был более чем доволен, тем что мне Autodesk сделал.

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Свой инсталлятор
« Ответ #17 : 22-09-2016, 14:56:03 »
Без описания, не понимаю большую часть. особенно вот этот момент, как файлы записать, ещё и с папками чтоб они потом туда устанавливались.
Если ты захочешь взяться за WIX, то для изучения будут полезны например такие ресурсы:
http://wixtoolset.org/documentation/
http://www.allitebooks.com/wix-3-6/
http://www.allitebooks.com/wix-cookbook/

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

  • ADN
  • *
  • Сообщений: 2439
  • Карма: 687
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Re: Свой инсталлятор
« Ответ #18 : 22-09-2016, 15:42:08 »
Начал смотреть обозначенное видео, но в виду отсутствия звука и каких-либо поясняющих текстовых комментариев закрыл через 15 секунд.
На ютубе ответил. Для тех, кому некогда смотреть видео, здесь выложен проект ;)

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

  • ADN
  • *
  • Сообщений: 2439
  • Карма: 687
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Re: Свой инсталлятор
« Ответ #19 : 22-09-2016, 17:09:18 »
как файлы записать, ещё и с папками чтоб они потом туда устанавливались.
Все это описывается в файле Product.wxs. Добавил комментарии:
Код - XML [Выбрать]
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  3.   <Product
  4.    Id="B7BE0E71-F44E-44C6-BD72-DFCD82E58B40"
  5.    Name="$(var.SolutionName)"
  6.    Language="1049"
  7.    Version="1.0.0.0"
  8.    Manufacturer="DZagorulkin"
  9.    UpgradeCode="76198716-a4a2-4c1f-8acf-2cb2858b4f90"
  10.    Codepage="1251">
  11.  
  12.     <Package
  13.      SummaryCodepage="1251"
  14.      InstallerVersion="200"
  15.      Compressed="yes"
  16.      InstallScope="perMachine"
  17.      InstallPrivileges="elevated" />
  18.  
  19.     <MajorUpgrade DowngradeErrorMessage="Более новая версия [ProductName] уже установлена." />
  20.    
  21.     <!-- Здесь мы указываем настройки для отдельных медианосителей.
  22.    Несколько медианосителей нужно, если установщик большой, и его нужно разделить, например, на диски размером 700 мб.
  23.    Нам же достаточно одного. EmbedCab задает, располагать файлы установки отдельно от программы установки MSI/EXE или внутри -->
  24.     <Media Id="1" Cabinet="cab1.cab" EmbedCab="yes"/>
  25.  
  26.     <!-- Группы компонентов должны располагаться в Feature. Хотя бы один Feature должен быть в проекте. -->
  27.     <Feature Id="ProductFeature" Title="$(var.SolutionName)" Level="1">
  28.       <ComponentGroupRef Id="ProductComponents" />
  29.     </Feature>
  30.  
  31.     <!-- Здесь мы настраиваем, какие наборы диалогов будет выводить установка -->
  32.     <UI Id="WIX_UI">
  33.       <UIRef Id="WixUI_Minimal"/>
  34.       <UIRef Id="WixUI_ErrorProgressText"/>
  35.     </UI>
  36.  
  37.     <!-- Здесь указываем где взять файл лицензии -->
  38.     <WixVariable Id="WixUILicenseRtf" Overridable="yes" Value="License.rtf"/>
  39.   </Product>
  40.  
  41.   <Fragment>
  42.     <!-- Это элемент для настройки структуры папок установки -->
  43.     <Directory Id="TARGETDIR" Name="SourceDir">
  44.       <!-- Этот элемент указывает на то, что установку нужно выполнять в ProgrammData. Тут могут быть и другие варианты:
  45.      https://msdn.microsoft.com/en-us/library/windows/desktop/aa370905(v=vs.85).aspx#system_folder_properties -->
  46.       <Directory Id="CommonAppDataFolder">
  47.         <!-- Внутри ProgrammData получаем/создаем папку Autodesk -->
  48.         <Directory Id="adsk_data" Name="Autodesk">
  49.           <!-- Внутри папки Autodesk получаем/создаем папку ApplicationPlugins -->
  50.           <Directory Id ="adsk_plugins" Name="ApplicationPlugins">
  51.             <!-- Внутри нее создаем папку для нашего Bundle -->
  52.             <Directory Id="INSTALLFOLDER" Name="$(var.SolutionName).bundle" />
  53.           </Directory>
  54.         </Directory>
  55.       </Directory>
  56.     </Directory>
  57.   </Fragment>
  58.  
  59.   <Fragment>
  60.     <!-- Группа компонентов, которая будет устанавливаться в папку с Id INSTALLFOLDER -->
  61.     <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
  62.       <!-- Компонент для XML файла Bundle. Есть такая рекомендация, что отдельный
  63.      файл следует располагать в отдельном компоненте. Уже не помню, с чем связанная -->
  64.       <Component Id="ProductComponent">
  65.         <!-- Если KeyPath=true, то только по этому элементу определяется, установлено ли приложение на ПК.
  66.        DiskId=1 указывает, что нужно располагать файл в Media у которого Id=1.
  67.        Name - название файла, Source - путь к файлу (Т.к. он лежит в папке проекта, то для пути указываем только название) -->
  68.         <File Name="PackageContents.xml" Source="PackageContents.xml" DiskId="1" KeyPath="yes" />
  69.       </Component>
  70.       <!-- Компонент для файла DLL -->
  71.       <Component Id="DllComponent">
  72.         <File
  73.          Id="DllFile" Name="$(var.AutoCADTestProject.TargetFileName)"
  74.          Source="$(var.AutoCADTestProject.TargetPath)" DiskId="1" />
  75.       </Component>
  76.       <!-- Далее можно создавать еще компоненты и внутри них описания для файлов -->
  77.     </ComponentGroup>
  78.   </Fragment>
  79. </Wix>

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

  • ADN Club
  • ****
  • Сообщений: 259
  • Карма: 22
  • Геодезист
Re: Свой инсталлятор
« Ответ #20 : 23-09-2016, 06:31:44 »
Если ты захочешь взяться за WIX, то для изучения будут полезны например такие ресурсы:
http://wixtoolset.org/documentation/
http://www.allitebooks.com/wix-3-6/
http://www.allitebooks.com/wix-cookbook/
Ну как бы не очень хотелось браться, Дмитрий уже почти научил, осталось ещё чуть-чуть разобраться.
Нашёл книгу на русском http://wixbook.codeplex.com/
справка, лицензия, установка, открытие в проводнике каталога пакета и т.п.
вот это кстати вообще лишнее по-моему, кто у нас справки\лицензии читает? Я уже для своих приложений видеосправку записал с удобной навигацией, и даю ссылку на неё при всех упоминаниях о приложении, и из самого приложения нажав кнопку "Справка" запускается в браузере это видео, но нет, каждый 3 спрашивает, а как это , а как то, а можно ли так, даже 5-ти минутный ролик посмотреть не могут, а ты им хочешь ещё и лицензию на 27 страниц дать почитать?
И речь об инсталляторе я завел не для крупных мега приложений, а для мелких Lisp'ов, не прям совсем простых, а которые уже с диалогом, с панелькой на ленте, с кнопочкой... Потому что тоже уже достали, к каждой публикации таких приложений даю ссылку на "как установить" и всё спрашивают, а как, а куда, а макрос на кнопку...

Дмитрий Загорулькин, с комментами немного лучше стало, спасибо. Как создать структуру папок я понял. Но куда деть мои файлы для установки, загрузить их как ресурсы в проект? И раздел "DllComponent" мне не нужен, это только для вас Net разработчиков?

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Свой инсталлятор
« Ответ #21 : 23-09-2016, 09:01:46 »
Нашёл книгу на русском http://wixbook.codeplex.com/
Спасибо за ссылку, полистаю контент на досуге.

Я уже для своих приложений видеосправку записал с удобной навигацией, и даю ссылку на неё при всех упоминаниях о приложении, и из самого приложения нажав кнопку "Справка" запускается в браузере это видео
Интересное решение. Запомню.

но нет, каждый 3 спрашивает, а как это , а как то, а можно ли так, даже 5-ти минутный ролик посмотреть не могут
Проблема распространённая. В подобных случаях я указываю юзеру конкретный раздел справки и предлагаю обращаться ко мне с конкретными вопросами, сообщая о том, в каком месте в ходе выполнения инструкции у него возникли проблемы. Это вынуждает юзера прочитать справку\инструкцию. Как правило (в 99,9% случаях) это работает.

Время от времени, к сожалению, встречаются и такие, которые "с пеной у рта" начинают настаивать на том, что они "уже 100 раз читали" эти 10-12 строчек инструкции, "но не получается" и и что "не только у них не получается" и что они уже "второй день" безуспешно пытаются решить проблему. На мой вопрос о том, что же они прочитали в инструкции - как это ни странно, ответить при этом не могут (т.к. даже не открывали её). Такое нельзя "спускать на тормозах" (ИМХО). На примере подобных персонажей устраиваю публичную порку:

Вариант 1.

Заставляю при мне последовательно выполнить все пункты указанной им ранее в качестве ответа инструкции. В 100% случаев волшебным образом у них всё вдруг получается. Сообщаю об этом начальнику отдела IT и тот берётся за организацию "публичной порки" (с участием директора) в назидание зрителям, дабы те делали правильные выводы.

Вариант 2.

Но не обходится, к сожалению, и без уродов: Иногда встречаются персонажи, которые отказываются читать инструкцию или указанный им пункт справки. Они начинают кричать, что им "некогда всякую х@рню читать" и что "этим не они должны заниматься, а отдел IT", угрожают пойти жаловаться директору ("ха-ха" три раза). В этом случае я вызываю начальника IT в качестве тяжёлой артиллерии и с его помощью всегда очень быстро удаётся заставить "упёршегося рогами в стену" сесть за клавиатуру и начать при нас пошагово выполнять пункты инструкции, решающей его проблемы (дабы он смог продемонстрировать нам, на каком конкретном шаге он споткнулся и "промучался с этим два дня").

При этом подобные персонажи нередко начинают усердно косить под идиота: мол а что нужно сделать, если написано "запустите AutoCAD" (хотя они за ним работают каждый день)? И при этом вопросительно заглядывают мне в глаза... Или не могут найти левый верхний угол с большой красной буквой "А" главного окна приложения (автокад у них обычный, не вертикалка). Или настойчиво пытается перепрыгнуть через очередной пункт инструкции (ведь ему теперь как-то надо имитировать неудачную попытку, раз уж он перед этим заявлял, что "два дня безуспешно пытаюсь")...  Я не сгущаю краски - это реальные примеры из конкретного случая, причём "дурку лепил" руководитель группы проектирования (т.е. в теории это должен был бы быть не самый тупой сотрудник), который в AutoCAD работает каждый день (ну или почти каждый).

За всю мою практику ещё не было ни разу, чтобы в ходе выполнения инструкций (в моём присутствии) у юзера возникли какие-либо проблемы в результате которых у него не получилось её успешно выполнить: поскольку при её написании я всегда учитываю, что читать её может "усиленно косящий под идиота", то детализация действий в тексте максимальна - вплоть до того, какой кнопкой мышки куда нажимать.

Затем я требую указать мне сотрудника который, по словам персонажа, "тоже пробовал, но ничего не получилось". В этом случае у персонажа на 100% напрочь отшибает память, т.к. он "вдруг" не может вспомнить кто это "вчера" был, да и "не вчера, а давно", да и "тот уже уволился"...

Затем начальник IT отдела идёт к директору и жалуется на такого оленя, дабы того отодрали и впредь ему было неповадно вести себя подобным образом. Причём всё это делается так, чтобы все присутствующие видели, дабы у них не возникало желание вести себя подобным образом. Это работает.



а ты им хочешь ещё и лицензию на 27 страниц дать почитать?
Я не знаю, где ты там 27 страниц нашёл.

вот это кстати вообще лишнее по-моему, кто у нас справки\лицензии читает?
Я не настаиваю, это твоё личное дело.
И речь об инсталляторе я завел не для крупных мега приложений, а для мелких Lisp'ов, не прям совсем простых, а которые уже с диалогом, с панелькой на ленте, с кнопочкой...
Для меня это аргумент не убедителен (не вижу никакой связи). Но опять же повторюсь - это твоё личное дело. Не хочешь - не делай. :)

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

  • ADN
  • *
  • Сообщений: 2439
  • Карма: 687
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Re: Свой инсталлятор
« Ответ #22 : 23-09-2016, 11:08:55 »
Но куда деть мои файлы для установки, загрузить их как ресурсы в проект?
Как ресурсы не нужно. Можно вообще не добавлять в проект, просто в поле Source указать полный или относительный путь к файлу. Ну или можно добавить файл в проект, тогда никакого пути указывать не нужно. Только потом нужно будет не забыть его заменить, если он изменится. Как это сделать: http://autode.sk/2cy5Gig. Заранее прошу прощения, что снова без звука.

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

  • ADN Club
  • ****
  • Сообщений: 259
  • Карма: 22
  • Геодезист
Re: Свой инсталлятор
« Ответ #23 : 23-09-2016, 11:50:15 »
Можно вообще не добавлять в проект, просто в поле Source указать полный или относительный путь к файлу. Ну или можно добавить файл в проект, тогда никакого пути указывать не нужно.
Т.е. так для каждого файла, даже если их 43 штуки?
Нельзя сразу каталог со всеми подкаталогами и файлами разом указать?

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

  • ADN
  • *
  • Сообщений: 2439
  • Карма: 687
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Re: Свой инсталлятор
« Ответ #24 : 23-09-2016, 11:54:59 »
Нельзя сразу каталог со всеми подкаталогами и файлами разом указать?
Чего не знаю, того не знаю. Возможно, что как-то это можно сделать. Я всегда по одному файлу настраивал, но их максимум с десяток набиралось.

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Свой инсталлятор
« Ответ #25 : 23-09-2016, 12:03:49 »
Т.е. так для каждого файла, даже если их 43 штуки?
Нельзя сразу каталог со всеми подкаталогами и файлами разом указать?
Насколько я помню - нельзя. WIX оперирует понятиями "компонент", "группа компонентов" и feature ("фича" - х.з. как лучше перевести в данном контексте - это набор групп компонентов, которые ты хочешь установить, устанавливая для них галочки в окне установки). Компонентом, в свою очередь, может быть не только файл но, например, операция создания каталога и т.п. В составе одного компонента может быть определене сразу несколько элементов. Компонент - это минимальная единица, которая может быть инсталлирована, деинсталлирована или пропатчена. В виду этого WIX требует, чтобы каждый файл указывался отдельно. В мануалах, насколько я помню, пишут, что инсталлятор должен писаться (по задумке) параллельно с целевым проектом, добавляя в конфигах инсталлера новые компоненты по мере развития целевого проекта.

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

  • ADN Club
  • ****
  • Сообщений: 259
  • Карма: 22
  • Геодезист
Re: Свой инсталлятор
« Ответ #26 : 27-09-2016, 09:18:29 »
Всем спасибо, всё получилось  :)
Остались мелкие вопросы, по иконкам и картинкам в самом установщики, но это потом если что мануал полистаю.

Возник вопрос с инсталлятором для Lisp в предыдущих версиях AutoCAD не поддерживающих технологию бондул? Очень много динозавров среди пользователей не желающих переходить на новые версии...

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Свой инсталлятор
« Ответ #27 : 27-09-2016, 10:39:56 »
Возник вопрос с инсталлятором для Lisp в предыдущих версиях AutoCAD не поддерживающих технологию бондул? Очень много динозавров среди пользователей не желающих переходить на новые версии...
Добавь в инсталлятор регистрацию твоего лиспа в реестре. Хотя... Это может оказаться не так уж и просто, т.к. разные акады и их верт. приложения используют разные ключи реестра. Т.е. тебе в инсталляторе нужно будет узнать, какие акады установлены, дабы знать куда вносить правки...

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

  • ADN Club
  • ****
  • Сообщений: 259
  • Карма: 22
  • Геодезист
Re: Свой инсталлятор
« Ответ #28 : 27-09-2016, 10:42:55 »
Добавь в инсталлятор регистрацию твоего лиспа в реестре.
А ну теперь то всё понятно стало...
Андрей, ты хороший парень, и отзывчивый и специалист в своём деле. Но ты пожалуйста учитывай подписи под аватарками, вот у тебя написано "Программист. Администратор CAD.", но у меня же  "Геодезист"
Я честно даже был смущён немного, когда меня в члены ADN Club записали.

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

  • Administrator
  • *****
  • Сообщений: 12668
  • Карма: 1641
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Свой инсталлятор
« Ответ #29 : 27-09-2016, 10:46:31 »
Добавь в инсталлятор регистрацию твоего лиспа в реестре. Хотя... Это может оказаться не так уж и просто, т.к. разные акады и их верт. приложения используют разные ключи реестра. Т.е. тебе в инсталляторе нужно будет узнать, какие акады установлены, дабы знать куда вносить правки...
Вообще-то lisp-файлы не регистрируются в реестре. Этот принцип работает только с arx/dbx/crx/dll. Можно написать arx/dll, которая будет регистрироваться в реестре и в свою очередь загружать lisp-файлы. Фактически автозагрузчик работает именно по такому принципу.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • 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
  • *****
  • Сообщений: 12668
  • Карма: 1641
  • Рыцарь 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
  • *****
  • Сообщений: 568
  • Карма: 128
    • ПГСу Бложик
Re: Свой инсталлятор
« Ответ #34 : 27-09-2016, 11:29:03 »
Это крайне ненадежная схема, которую можно использовать для себя, в крайнем случае в небольшой организации с десятком проектировщиков.
Почему? Ведь это уже гарантированно не измениться для старых версий, а для новых есть .bundle
Или я опять, что то не доглядел?

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

  • Administrator
  • *****
  • Сообщений: 12668
  • Карма: 1641
  • Рыцарь 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
  • *****
  • Сообщений: 12668
  • Карма: 1641
  • Рыцарь 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
  • *****
  • Сообщений: 12668
  • Карма: 1641
  • Рыцарь 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
  • *****
  • Сообщений: 568
  • Карма: 128
    • ПГСу Бложик
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
  • ****
  • Сообщений: 259
  • Карма: 22
  • Геодезист
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
  • *****
  • Сообщений: 12668
  • Карма: 1641
  • Рыцарь 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 видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

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

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

  • ADN
  • *
  • Сообщений: 2439
  • Карма: 687
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
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
  • ****
  • Сообщений: 259
  • Карма: 22
  • Геодезист
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:*'.


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

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

  • ADN
  • *
  • Сообщений: 2439
  • Карма: 687
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Re: Свой инсталлятор
« Ответ #60 : 21-04-2017, 11:25:16 »
Надо добавить ссылки на вспомогательные библиотеки WIX. В книге по WIX есть описание, как это сделать.
А вообще, вот:

На самом деле, мой проект установки не самый простейший. Поэтому и требуются эти расширения. Если убрать из XML файла раздел <UI>...</UI>, то они не потребуются и инсталлятор попроще будет.

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

  • ADN Club
  • ****
  • Сообщений: 259
  • Карма: 22
  • Геодезист
Re: Свой инсталлятор
« Ответ #61 : 22-04-2017, 12:42:24 »
Так, теперь новая проблема
A string was provided with characters that are not available in the specified database code page '1252'. Either change these characters to ones that exist in the database's code page, or update the database's code page by modifying one of the following attributes: Product/@Codepage, Module/@Codepage, Patch/@Codepage, PatchCreation/@Codepage, or WixLocalization/@Codepage.   
Почему он пишет про 1252 код страницы, если везде написано 1251?
Это произошло после добавления ссылки на вспомогательные библиотеки WIX
Ну и инсталлятор стал по английски разговаривать :-( Кстати как предусмотреть мультиязычность? Чтоб в России по русски, не в России по англицки?

Вы меня звените пожалуйста, я честно пытаюсь сам разобраться но даже в том что уже работает половину не понимаю :-(

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

  • ADN
  • *
  • Сообщений: 2439
  • Карма: 687
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Re: Свой инсталлятор
« Ответ #62 : 22-04-2017, 16:14:26 »
Наверное, надо добавить в свойства русскую локализацию.
В книге по WIX есть подробное описание создания самого простого инсталлятора. Все эти моменты - оттуда. Если появилось желание во всем разобраться - советую один раз сделать все по этой книге.
Я имею в виду этот мануал:
Нашёл книгу на русском http://wixbook.codeplex.com/

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

  • ADN Club
  • ****
  • Сообщений: 259
  • Карма: 22
  • Геодезист
Re: Свой инсталлятор
« Ответ #63 : 22-04-2017, 18:10:32 »
Наверное, надо добавить в свойства русскую локализацию.
Точна, как ты и показывал ещё в первом видео!
В книге по WIX есть подробное описание создания самого простого инсталлятора.
Да я начинал читать, там как обычно сначала всё просто и понятно, а потом бац и не понятно... У меня так же было и с книгой Полещука по AutoLISP, первые приложения только с помощью command и простейших функций, потом научился со списками работать, и лишь потом к актив Х перешёл,  но всё это было плавно долго и постоянно практикуясь.
Я даже книгу по С# купил, тоже читать начинал, а что толку без практики :-( Так же и с Visual studio, я её первый раз открыл, когда ресурсные dll создавать начал, чтоб иконки для разных тем светлой и тёмной для Cuix создать, второй раз когда тему про свой инсталлятор завёл.  К созданию иконок спустя год вернулся, хорошо тема уже была, как в первый раз по ней опять всё с 0 повторял, пока не вспомнил.
так же и инсталлятором, прошлый раз всё получилось, на том и успокоился, и только сейчас опять спустя много времени, вернулся к нему, потому что стоял выбор, либо закидывать бондл в магазин, и ждать месяц пока там мне инсталлятор соберут, либо по быстрому свой собрать  :D оказалось не фига не по-быстрому, но зато уже гораздо больше понял чем в прошлый раз, и уже сам с 0 простой создал.
Спасибо Дима тебе большое, что не только рыбы подкидываешь, но иногда и удочку даешь ;-)


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

  • ADN
  • *
  • Сообщений: 2439
  • Карма: 687
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Re: Свой инсталлятор
« Ответ #64 : 22-04-2017, 18:39:56 »
Да я начинал читать, там как обычно сначала всё просто и понятно, а потом бац и не понятно...
Знакомая ситуация :) Тут помогает только практика.
Я даже книгу по С# купил, тоже читать начинал, а что толку без практики :-(
Если сразу браться за серьезный мануал типа "Полное руководство по C# для профессионалов", то очень быстро желание изучать пропадает начисто и надолго. Такие мануалы лучше читать, имея за плечами уже кое-какой багаж практики. Лучше поначалу что-то типа такого: http://progbook.ru/c-sharp-net/1404-stillmen-izuchaem-c-2-e-izdanie.html. Там практика идет параллельно с теорией.
так же и инсталлятором, прошлый раз всё получилось, на том и успокоился, и только сейчас опять спустя много времени, вернулся к нему
Да у меня та же история каждый раз. Инсталлятор создаю новый от силы раз в полгода, если не реже. И каждый раз нужно вспоминать, как там и что. Но с каждым разом все легче, т.к. уже знаешь, на чем можно споткнуться. К слову, я спотыкался на этих же самых граблях, поэтому знаю что подсказать.

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

  • ADN
  • *
  • Сообщений: 2439
  • Карма: 687
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Re: Свой инсталлятор
« Ответ #65 : 05-05-2017, 17:45:13 »
Т.е. так для каждого файла, даже если их 43 штуки?
Нельзя сразу каталог со всеми подкаталогами и файлами разом указать?
Наткнулся на интересную статью по этому вопросу. Сам еще не проверял, но есть подозрение, что решение вполне годное: https://habrahabr.ru/post/122038/
Ну и описание на сайте WIX: http://wixtoolset.org/documentation/manual/v3/overview/heat.html
Сегодня почти весь день воевал с этим сборщиком. Но, должен сказать, оно того стоило! Это просто подарок! Собирает все файлы, соблюдая структуру папок. Присваивает самостоятельно GUIDы. Все что мне было нужно удалось в итоге настроить.
Есть два момента, с которыми пришлось попотеть:
Первый - фильтрация файлов. У меня в папке с файлами куча вспомогательных, генерируемых Visual Studio файлов xml и pdb. У утилиты-сборщика есть параметр -pog, который, по идее, при значении Binaries должен отсеивать все типы файлов, кроме exe и dll. Но он почему-то не срабатывает, и все xml-pdb благополучно пакуются в инсталлятор. Возможно, что так и задумано. Спасает XSL-фильтрация. Как ее сделать - описано подробно в этой статье: https://ahordijk.wordpress.com/2013/03/26/automatically-add-references-and-content-to-the-wix-installer/. Все настолько подробно описано, что даже добавить нечего.
Второй - есть такой глюк, что сборщик некорректно выводит путь к найденному файлу. Описание проблемы и решение - тут: http://stackoverflow.com/questions/6915560/wix-heat-output-not-referencing-directory-like-i-want/6920979#6920979. Т.е. нужно правильно задать значение параметра -var.
Так что, инструмент очень даже полезный и годный!