Здравствуйте, Нахлобуч, Вы писали:
Н>При работе с WiX/MSI нет простых способов сделать что бы то ни было. Абсолютно.
Частично согласен. Хочу лишь сказать что после того, как столкнешься и разберешься с отдельным use-case'ом , то потом становится все
гораздо проще.
Для меня самым стремным оказались Conditions для компонентов и т.д. Ну и разработка custom'ного UI.
Остальное потом становится привычнм, и просто пишем код б#еать (c)
Здравствуйте, alex_public, Вы писали:
_>В принципе согласен, но хочу заметить что это всё происходит только в первый раз. Т.е. надо один раз посидеть основательно, чтобы составить один xml с подходящим вам инсталлятором. А дальше можно спокойно копировать его из проекта в проект меняя незначительные детали.
Здравствуйте, RiNSpy, Вы писали:
RNS>Здравствуйте, Нахлобуч, Вы писали:
Н>>Вот какой расклад. Есть у меня продукт, ориентированный на Microsoft-centric корпоративный рынок (HgLab). Правилом хорошего тона там является наличие установщика в виде MSI-пакета, коий я и пытаюсь сочинить уже практически неделю.
RNS>Всё это сделано, чтобы вы купили InstallShield. Причём профессиональную версию. Стоит он совсем недёшево, но альтернатив, насколько я понимаю, нет.
Здравствуйте, Eye of Hell, Вы писали:
EOH>Deferred и Immediate custom actions. Поиск места, куда установить "RemoveExistingProducts". Логика апгрейда файлов. Key paths. Бутстраперы... Крепитесь.
Как в воду глядели... Хочется убивать, меееедленно.
HgLab: Mercurial Server and Repository Management for Windows
мои 5 коппек опыта:
я в качестве "тренировки" делал *.msi с помощью этого WiX в CMake based проекте...
на CMake написано что и куда устанавливать, и по команде `make package` он делает какую-то XML, запускает этот WiX и на выходе получил вполне рабочий msi файл...
нет, ничего сложного не требовалось -- просто проинсталлить кучку файлов и с этим CMake+WiX вполне справились... ничего более сложного не требовалось поэтому на этом и успокоился...
И не забываем про его великолепное, потрясающее быстродействие. Десятки минут, чтобы удалить несколько папок с файлами — где вы еще такое увидите? У меня иногда возникает подозрение, что файлы не удаляются, а запаковываются и отправляются на сервер компании для повторного использования.
Когда-то давно, лет так н-цать назад WiX небыл даже еще внутренним майкрософтовским продуктом (а был набором скриптов на VBScript!). C# в ещё только зарождался — во было время! Самое смешное, что внутри MS не было ещё никакого хорошего метода делать эти самые инсталяторы. Инсталятор для нашего продукта был на InstallShield, и это был просто какой-то 3.14-здец. Бинарные файлы, которые нужно было править с помощью какой-то типа-студии. Изменения никогда нельзя было проследить из диффов: бинарник-же. Редактировать InstallShield-довские проекты мог только один человек, потому что у нас была только одна лицензия на InstallShield. В билд эта #$@$@ня не интегрировалась никак. В общем, как я уже и сказал, полный #@@$$.
Такое положение дел меня достало. Майкрософт мы, или нет?! После того как я посмотрел, что генерирует этот InstallShield, оказалось, что не так уж и много, набор msi таблиц. Пришлось, конечно, разбираться с MSI. И да, там всё сделано через жопу. У меня была возможность посмотреть на Windows код относящийся к MSI. Мама не горюй! Поговаривали, что его написали даже не индусы, а какие-то интёрны.
С таблицами я разобрался, но руками писать эти таблицы не было никакого желания. И вот, в какой-то внутренней рассылке я узнал про чувака, который написал тулзы, генерирующие MSI таблицы по их описанию в XML. Гениальность этого подхода была в том, что XML — это всё таки текстовый формат. Он пошёл простейшим путём и тупо сделал XML формат эквивалентным схеме MSI таблиц. Т.е. если ты уже знаешь, что должно получится в MSI, написать соответствующий WiX xml файл было совсем нетрудно. И сами тулзы были скриптами, которые "распостранялись" в виде исходного кода на VBScript (скриптывых языков в то время было раз два и обчёлся, тем более внутри MS). Но эти скрипты можно было просто взять и вставить в свой в билд. Если что-то не работало, эти скрипты можно было легко поправить.
Чувак, насколько я помню, имел source depot сервер на своей девелоперской машине, где он и вёл всю разработку без какого-либо официального разрешения. Для того времени это было ново и модно. Майкрософт ещё не был горой засохшего говна. А новые идеи внутри MS бурлили и развивались. -- The end --
Здравствуйте, Нахлобуч, Вы писали:
Н>Вот какой расклад. Есть у меня продукт, ориентированный на Microsoft-centric корпоративный рынок (HgLab). Правилом хорошего тона там является наличие установщика в виде MSI-пакета, коий я и пытаюсь сочинить уже практически неделю.
Дзен в том что MSI просто не нужен!.
ps: самый первый свой инсталлер еще в 90-х годах прошлого века я делал на Installer VISE — MindVision (a справку в HelpScribble).
Потом в двухтысячных перешли на InnoSetup.
Сейчас 2014 год, у нашей программы тысячи пользователей, и ни одной жалобы на EXE инсталлятор сделанный InnoSetup-ом, подписанный сертификатом для подписи кода.
Причем по ходу дела добавляли туда дополнительный функционал на встроенном Pascal-подобном языке.
В дальнейшем может быть будем смотреть на кросс-платформенные инсталляторы. Опять же там MSI — не пришей кобыле хвост.
Здравствуйте, zaufi, Вы писали:
Z>на CMake написано что и куда устанавливать, и по команде `make package` он делает какую-то XML, запускает этот WiX и на выходе получил вполне рабочий msi файл...
Есть одно но — если нужен некий input во время установки, без ручного редактирования XML никак.
Здравствуйте, Matrix_Failure, Вы писали:
M_F>В дальнейшем может быть будем смотреть на кросс-платформенные инсталляторы. Опять же там MSI — не пришей кобыле хвост.
K>И не забываем про его великолепное, потрясающее быстродействие. Десятки минут, чтобы удалить несколько папок с файлами — где вы еще такое увидите? У меня иногда возникает подозрение, что файлы не удаляются, а запаковываются и отправляются на сервер компании для повторного использования.
Проблема не в файлах а в руках того кто пишет инсталятор.
K>То есть в руках тех, кто написал MSI.
У нас десяток инсталяций написан на WIX.
Проблем не испытываем.
MSI работает нга миллиардах компьютеров и на данный момент система инсталяций номер один в мире.
Если вы её не понимаете или не умеете использовать то в этом вина только лично ваша.
Забавно иногда наблюдать как люди выдают свои собственные неудачи либо глупость за чужие ошибки...
Здравствуйте, uncommon, Вы писали:
U>Чувак, насколько я помню, имел source depot сервер на своей девелоперской машине, где он и вёл всю разработку без какого-либо официального разрешения. Для того времени это было ново и модно. Майкрософт ещё не был горой засохшего говна. А новые идеи внутри MS бурлили и развивались. -- The end --
Вот например, MS SQL Server тим: инсталер написали свой. Во время работы интенсивно что-то компилирует через csc.exe, затем это выполняет
Здравствуйте, Tom, Вы писали:
Tom>Если вы её не понимаете или не умеете использовать то в этом вина только лично ваша.
Ух ты.
Чья вина в том, что пакет MSI нельзя "скомпилировать" для x64 и x86 одновременно? Или в том, что Minor Upgrade простым дабл-кликом не запустить? Или пляски с TARGETDIR?
HgLab: Mercurial Server and Repository Management for Windows
Н>Чья вина в том, что пакет MSI нельзя "скомпилировать" для x64 и x86 одновременно? Или в том, что Minor Upgrade простым дабл-кликом не запустить? Или пляски с TARGETDIR?
Вина ваша, в том что вы с какого то перепугу решили что вам кто то должен причём решили и даже не удосужились разобраться с сути вопроса.
Ещё раз повторюсь, 99% людей тут не понимают что такое Windows installer. Не понимают ни архитектуры ни хотя бы примерно маштаб задач которые он решает.
Огромное количество инсталяций пишутся на Wix/Windows Installer, у нас например, в самом микрософте, Visual Studio, все апдейты виндов.
И если вы чего то не понимаете это не значит что это проблема Windows Installer а значит что это проблема лично ваша.
Что касается проблем описаных у топик стартера — опять же непонимание как использовать Windows Installer.
Незнание что такое msi пакет и незнание что в мире существуют бутстрапперы, в том же Wix есть оч мощный бутстраппер.