В виду неудобства MSI для создания пользовательского интерфейса напрямую (WIX тут тоже несильно помогает), я многие настройки (БД, сеть) решил сделать через WPF-окно в CustomAction. Но одна проблема — хорошо б в минимальном виде вывести это всё всё-таки в сам диалог установки, но когда я устанавливаю свойство в коде действия, в диалоговом окне установки оно не обновляется (не предусмотрен там, вроде, аналог события PropertyChanged). Единственное, что мне удавалось найти — это использовать две одинаковых вкладки, перелистывая их после каждого закрытия диалогового окна. Но поскольку в одном случае нужно листать вперёд, в другом — назад (да и кнопка вперёд должна листать на два шага в первом из них), получается, что XML будет разным, за'include'ить не получится, а поддерживать две копии одинакового XML неудобно. Хочу узнать, какие возможны решения лучше?
Здравствуйте, Ilya81, Вы писали:
I>В виду неудобства MSI для создания пользовательского интерфейса напрямую (WIX тут тоже несильно помогает), я многие настройки (БД, сеть) решил сделать через WPF-окно в CustomAction. Но одна проблема — хорошо б в минимальном виде вывести это всё всё-таки в сам диалог установки, но когда я устанавливаю свойство в коде действия, в диалоговом окне установки оно не обновляется (не предусмотрен там, вроде, аналог события PropertyChanged). Единственное, что мне удавалось найти — это использовать две одинаковых вкладки, перелистывая их после каждого закрытия диалогового окна. Но поскольку в одном случае нужно листать вперёд, в другом — назад (да и кнопка вперёд должна листать на два шага в первом из них), получается, что XML будет разным, за'include'ить не получится, а поддерживать две копии одинакового XML неудобно. Хочу узнать, какие возможны решения лучше?
Рекомендую вообде отказаться от настройки соединения с базой из MSI инсталлятора.
Истинно говорю, это сплошная головная боль — сначала с UI, потом с правами, потом с деинсталляцией, потом еще бог знает с чем.
Просто сделай отдельную программу — конфигуратор базы (а-ля визард) которую запускай ПОСЛЕ инсталляции (по чекбоксу на последней странице например)
Здравствуйте, bnk, Вы писали:
bnk>Здравствуйте, Ilya81, Вы писали:
I>>В виду неудобства MSI для создания пользовательского интерфейса напрямую (WIX тут тоже несильно помогает), я многие настройки (БД, сеть) решил сделать через WPF-окно в CustomAction. Но одна проблема — хорошо б в минимальном виде вывести это всё всё-таки в сам диалог установки, но когда я устанавливаю свойство в коде действия, в диалоговом окне установки оно не обновляется (не предусмотрен там, вроде, аналог события PropertyChanged). Единственное, что мне удавалось найти — это использовать две одинаковых вкладки, перелистывая их после каждого закрытия диалогового окна. Но поскольку в одном случае нужно листать вперёд, в другом — назад (да и кнопка вперёд должна листать на два шага в первом из них), получается, что XML будет разным, за'include'ить не получится, а поддерживать две копии одинакового XML неудобно. Хочу узнать, какие возможны решения лучше?
bnk>Рекомендую вообде отказаться от настройки соединения с базой из MSI инсталлятора. bnk>Истинно говорю, это сплошная головная боль — сначала с UI, потом с правами, потом с деинсталляцией, потом еще бог знает с чем. bnk>Просто сделай отдельную программу — конфигуратор базы (а-ля визард) которую запускай ПОСЛЕ инсталляции (по чекбоксу на последней странице например)
+ю, инсталляторы в идеале не должны делать ничего помимо манипуляций с конфигами.
В виксе даже есть специальная приблуда с галочкой для запуска приложения после установки.
Здравствуйте, bnk, Вы писали:
bnk>Рекомендую вообде отказаться от настройки соединения с базой из MSI инсталлятора. bnk>Истинно говорю, это сплошная головная боль — сначала с UI, потом с правами, потом с деинсталляцией, потом еще бог знает с чем. bnk>Просто сделай отдельную программу — конфигуратор базы (а-ля визард) которую запускай ПОСЛЕ инсталляции (по чекбоксу на последней странице например)
Ну о том, что помещать в инсталлятор — решение не окончательное (относительно базы данных, например), но будут прочие config'и в большом количестве — всякие endpoint'ы (WCF, WebSphere и ещё заранее неизвестно что), динамически загружаемые модули и прочее. Так что 99,9%-вероятностью эта задача всё равно будет, так что хотелось б найти как можно более удобное с точки зрения maintenability решение.
Здравствуйте, Ilya81, Вы писали:
I>Здравствуйте, bnk, Вы писали:
bnk>>Рекомендую вообде отказаться от настройки соединения с базой из MSI инсталлятора. bnk>>Истинно говорю, это сплошная головная боль — сначала с UI, потом с правами, потом с деинсталляцией, потом еще бог знает с чем. bnk>>Просто сделай отдельную программу — конфигуратор базы (а-ля визард) которую запускай ПОСЛЕ инсталляции (по чекбоксу на последней странице например)
I>Ну о том, что помещать в инсталлятор — решение не окончательное (относительно базы данных, например), но будут прочие config'и в большом количестве — всякие endpoint'ы (WCF, WebSphere и ещё заранее неизвестно что), динамически загружаемые модули и прочее. Так что 99,9%-вероятностью эта задача всё равно будет, так что хотелось б найти как можно более удобное с точки зрения maintenability решение.
I>P. S. Подразумевается инсталлятор back-end'а.
Главное в кастом экшенах не тащить никаких сторонних дллок, эта фича может рандомно перестать работать. Вот прямо так вот 10 раз один и тот же пакет установился и удалился, а потом раз и навсегда перестал работать.
Кастом экшены могут работать либо из под текущего пользователя, либо из под системного.
Если нужно удалить какую-нибудь чушь, которая требует определённого пользователя да ещё под элевейтед привилегиями да ещё если там имперсонация не работает. Можно в кастом экшенах при удалении запустить сервис с нужными креденшелсами который сделает эту задачу.
Здравствуйте, UberPsychoSvin, Вы писали:
UPS>Главное в кастом экшенах не тащить никаких сторонних дллок, эта фича может рандомно перестать работать. Вот прямо так вот 10 раз один и тот же пакет установился и удалился, а потом раз и навсегда перестал работать. UPS>Кастом экшены могут работать либо из под текущего пользователя, либо из под системного.
UPS>Если нужно удалить какую-нибудь чушь, которая требует определённого пользователя да ещё под элевейтед привилегиями да ещё если там имперсонация не работает. Можно в кастом экшенах при удалении запустить сервис с нужными креденшелсами который сделает эту задачу.
Ну про удаление я не веду речь, ибо пока при удалении настраивать особенно нечего — настройки в config'ах удалятся вместе с их файлами, а БД вряд ли надо будет удалять, даже если данные больше не понадобятся, полагаю, конечные пользователи снести смогут (ломать — не строить). Настройка нужна при установке, особенно, если этот сервер у кого настраивается в первый раз.
А сделать обновление нужно, конечно, средствами MSI.