Здравствуйте, vdimas, Вы писали:
V>Ну, право, это как критиковать сегодня морально устаревший набор кодов Интел-совместимых процессоров, со всеми их расширениями SSEx, где итоговая бинарная кодировка одна из САМЫХ НЕОПТИМАЛЬНЫХ В ИНДУСТРИИ! И чё??? Да ничё. Все понимают, никто и не спорит, но это никого не парит.
Это должно парить
разработчиков CPU, нет?
На всякий случай напомню вам посмотреть в заголовок топика и перечитать моё сообщение, на которое вы отвечаете.
V>Ну, вообще-то, в той информации достоверно прослеживаются уникальные ключи и связи. Таки стоит взглянуть на схему базы — она относительно несложная.
О да. Какие-то 100 таблиц.
V>Т.е. реляции предоставляются предметной областью, поэтому огульно высмеять её не получится никак, увы.
Конечно же получится. Из "предметной области" там только две таблицы (плюс одна со связями). Всё остальное — чистая придумка мегаархитекторов.
V> Можно лишь поспорить относительно отдельных таблиц и связей. Я соглашусь только с иронией по поводу представления UI, но блин, в сотый раз оговорюсь, что эта ирония бессмыслена изначально, бо с выходом самой первой версии инсталлера в его SDK был тул по визуальному редактированию и тестированию UI.
Тул здесь совершенно ни при чём. Речь о том, что негодна сама идея реляционного описания UI.
Во-первых, это новый стандарт, требующий разработки отдельного тула, который стоит денег. Во-вторых, этот стандарт сразу ещё более ограниченный, чем даже dialog templates, т.к. не допускает расширения.
Хорошая платформа — это та, где для объём рукописного кода линеен относительно "площади поверхности". А в MSI для того, чтобы добавить на форму один контрол, не предусмотренный реляционной структурой, надо полностью отказаться от стандартного UI и воспроизводить и тестировать весь boilerplate руками.
С точки зрения пользователя такое решение — спорно. С точки зрения архитектуры — некомпететно.
V>Аналогично языка представления зависимостей. Он полон в декларативном смысле в терминах ВСЕХ объектов, описываемых базой инсталлера. Поэтому, да, некие вещи, выходящие за рамки информации, оперируемой инсталлерами, в нем описать нереально. Но это и хорошо — иначе бы это была дыра в безопасности.
Вы сегодня решили побить рекорд плотности чуши на одно сообщение? Включение custom action, которые выполняются под elevated privileges — это не дыра в безопасности, а описание в Condition "вещей, выходящих за рамки информации, оперируемой инсталлерами" — дыра? Поздравляю.
V>Мы используем Wise для чего-то уникального и только для совсем типовых пакетов — WiX, так что ничего сказать не могу. Последний раз, когда я пользовался InstallShield в 2003-м, он полностью удовлетворял всем моим нуждам.
Это много говорит о ваших нуждах. Кроме того, в 2003 вы запросто могли использовать InstallShield в режиме wrapper. Был у них такой подход одно время: их самопальный инсталлер тупо заворачивался в один transient компонент в MSI, который был, фактически, только запускальщиком инсталляции.
V>Я изучал подробно, но для чуть других целей — для целей генерирования скриптов автоматической установки софта.
В прошлый раз вы, помнится, "подробно изучали исходники SQL Server". На этот раз вы решили изучить устройство MSI, чтобы научиться писать скрипт, вызывающий msiexec.exe с нужными ключами? Похвально, похвально.
V>Нет, это ты спросил, как обойтись без ВСЕЙ "наркоманской" базы, я тебе подсказал. Тебе достаточно использовать ту её часть, где реляционное представление как нельзя к месту. Ну вот подыграл твоему "чувству прекрасного", не более того.
Ну, безо всей, как выясняется, обойтись нельзя. Вы же в курсе, что если у ваших компонентов есть понятие версии, то без файлов обойтись никак не удастся? Или этот уровень подробностей остался за пределами вашего "подробного изучения"?
V>Ну тогда опять и снова для особо одарённых — я подсказал простой способ получения достоверно работающего результата на имеющемся почти у всех девелоперов инструментарии. Это был ответ на "ай-ай, проблемы с custom actions". )))
Вы подсказали простой способ написать hello world. Спасибо, конечно, но этот этап я давно прошёл.
V>Можно подробнее — в чем именно геморрой?
В том, чтобы написать custom action, который корректно отрабатывает все режимы.
Вы почитайте немножко вот здесь:
http://msdn.microsoft.com/en-us/library/aa368070(v=vs.85).aspx
V>Я понимаю для чего нужен WiX, но вижу непонимание у тебя. Этот DSL всё еще низкоуровневый, он плохо маскирует низлежащую платформу, поэтому пользоваться им напрямую для чего-то повторяемого — глупо.
Как раз им и пользуются. В MSI сделать повторно используемый custom action практически невозможно. А в WiX их дофига, и можно добавлять свои:
http://wixtoolset.org/documentation/manual/v3/customactions/