[WIX]Обновление пользовательского интерфейса
От: Ilya81  
Дата: 27.03.14 05:32
Оценка:
В виду неудобства MSI для создания пользовательского интерфейса напрямую (WIX тут тоже несильно помогает), я многие настройки (БД, сеть) решил сделать через WPF-окно в CustomAction. Но одна проблема — хорошо б в минимальном виде вывести это всё всё-таки в сам диалог установки, но когда я устанавливаю свойство в коде действия, в диалоговом окне установки оно не обновляется (не предусмотрен там, вроде, аналог события PropertyChanged). Единственное, что мне удавалось найти — это использовать две одинаковых вкладки, перелистывая их после каждого закрытия диалогового окна. Но поскольку в одном случае нужно листать вперёд, в другом — назад (да и кнопка вперёд должна листать на два шага в первом из них), получается, что XML будет разным, за'include'ить не получится, а поддерживать две копии одинакового XML неудобно. Хочу узнать, какие возможны решения лучше?
msi wix ui customaction
Re: [WIX]Обновление пользовательского интерфейса
От: bnk СССР http://unmanagedvisio.com/
Дата: 27.03.14 08:50
Оценка: +1
Здравствуйте, Ilya81, Вы писали:

I>В виду неудобства MSI для создания пользовательского интерфейса напрямую (WIX тут тоже несильно помогает), я многие настройки (БД, сеть) решил сделать через WPF-окно в CustomAction. Но одна проблема — хорошо б в минимальном виде вывести это всё всё-таки в сам диалог установки, но когда я устанавливаю свойство в коде действия, в диалоговом окне установки оно не обновляется (не предусмотрен там, вроде, аналог события PropertyChanged). Единственное, что мне удавалось найти — это использовать две одинаковых вкладки, перелистывая их после каждого закрытия диалогового окна. Но поскольку в одном случае нужно листать вперёд, в другом — назад (да и кнопка вперёд должна листать на два шага в первом из них), получается, что XML будет разным, за'include'ить не получится, а поддерживать две копии одинакового XML неудобно. Хочу узнать, какие возможны решения лучше?


Рекомендую вообде отказаться от настройки соединения с базой из MSI инсталлятора.
Истинно говорю, это сплошная головная боль — сначала с UI, потом с правами, потом с деинсталляцией, потом еще бог знает с чем.
Просто сделай отдельную программу — конфигуратор базы (а-ля визард) которую запускай ПОСЛЕ инсталляции (по чекбоксу на последней странице например)
Re[2]: [WIX]Обновление пользовательского интерфейса
От: UberPsychoSvin  
Дата: 27.03.14 10:27
Оценка: 1 (1)
Здравствуйте, bnk, Вы писали:

bnk>Здравствуйте, Ilya81, Вы писали:


I>>В виду неудобства MSI для создания пользовательского интерфейса напрямую (WIX тут тоже несильно помогает), я многие настройки (БД, сеть) решил сделать через WPF-окно в CustomAction. Но одна проблема — хорошо б в минимальном виде вывести это всё всё-таки в сам диалог установки, но когда я устанавливаю свойство в коде действия, в диалоговом окне установки оно не обновляется (не предусмотрен там, вроде, аналог события PropertyChanged). Единственное, что мне удавалось найти — это использовать две одинаковых вкладки, перелистывая их после каждого закрытия диалогового окна. Но поскольку в одном случае нужно листать вперёд, в другом — назад (да и кнопка вперёд должна листать на два шага в первом из них), получается, что XML будет разным, за'include'ить не получится, а поддерживать две копии одинакового XML неудобно. Хочу узнать, какие возможны решения лучше?


bnk>Рекомендую вообде отказаться от настройки соединения с базой из MSI инсталлятора.

bnk>Истинно говорю, это сплошная головная боль — сначала с UI, потом с правами, потом с деинсталляцией, потом еще бог знает с чем.
bnk>Просто сделай отдельную программу — конфигуратор базы (а-ля визард) которую запускай ПОСЛЕ инсталляции (по чекбоксу на последней странице например)
+ю, инсталляторы в идеале не должны делать ничего помимо манипуляций с конфигами.

В виксе даже есть специальная приблуда с галочкой для запуска приложения после установки.
<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Run $(var.ConfiguratorName)"/>
<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOX" Value="1"/>
<Property Id="WixShellExecTarget" Value="[#configurator.exe]" />
<CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />
Re[2]: [WIX]Обновление пользовательского интерфейса
От: Ilya81  
Дата: 27.03.14 11:18
Оценка:
Здравствуйте, bnk, Вы писали:

bnk>Рекомендую вообде отказаться от настройки соединения с базой из MSI инсталлятора.

bnk>Истинно говорю, это сплошная головная боль — сначала с UI, потом с правами, потом с деинсталляцией, потом еще бог знает с чем.
bnk>Просто сделай отдельную программу — конфигуратор базы (а-ля визард) которую запускай ПОСЛЕ инсталляции (по чекбоксу на последней странице например)

Ну о том, что помещать в инсталлятор — решение не окончательное (относительно базы данных, например), но будут прочие config'и в большом количестве — всякие endpoint'ы (WCF, WebSphere и ещё заранее неизвестно что), динамически загружаемые модули и прочее. Так что 99,9%-вероятностью эта задача всё равно будет, так что хотелось б найти как можно более удобное с точки зрения maintenability решение.

P. S. Подразумевается инсталлятор back-end'а.
Re[3]: [WIX]Обновление пользовательского интерфейса
От: UberPsychoSvin  
Дата: 28.03.14 05:23
Оценка:
Здравствуйте, Ilya81, Вы писали:

I>Здравствуйте, bnk, Вы писали:


bnk>>Рекомендую вообде отказаться от настройки соединения с базой из MSI инсталлятора.

bnk>>Истинно говорю, это сплошная головная боль — сначала с UI, потом с правами, потом с деинсталляцией, потом еще бог знает с чем.
bnk>>Просто сделай отдельную программу — конфигуратор базы (а-ля визард) которую запускай ПОСЛЕ инсталляции (по чекбоксу на последней странице например)

I>Ну о том, что помещать в инсталлятор — решение не окончательное (относительно базы данных, например), но будут прочие config'и в большом количестве — всякие endpoint'ы (WCF, WebSphere и ещё заранее неизвестно что), динамически загружаемые модули и прочее. Так что 99,9%-вероятностью эта задача всё равно будет, так что хотелось б найти как можно более удобное с точки зрения maintenability решение.


I>P. S. Подразумевается инсталлятор back-end'а.

Главное в кастом экшенах не тащить никаких сторонних дллок, эта фича может рандомно перестать работать. Вот прямо так вот 10 раз один и тот же пакет установился и удалился, а потом раз и навсегда перестал работать.
Кастом экшены могут работать либо из под текущего пользователя, либо из под системного.

Если нужно удалить какую-нибудь чушь, которая требует определённого пользователя да ещё под элевейтед привилегиями да ещё если там имперсонация не работает. Можно в кастом экшенах при удалении запустить сервис с нужными креденшелсами который сделает эту задачу.
Re[4]: [WIX]Обновление пользовательского интерфейса
От: Ilya81  
Дата: 28.03.14 10:32
Оценка:
Здравствуйте, UberPsychoSvin, Вы писали:

UPS>Главное в кастом экшенах не тащить никаких сторонних дллок, эта фича может рандомно перестать работать. Вот прямо так вот 10 раз один и тот же пакет установился и удалился, а потом раз и навсегда перестал работать.

UPS>Кастом экшены могут работать либо из под текущего пользователя, либо из под системного.

UPS>Если нужно удалить какую-нибудь чушь, которая требует определённого пользователя да ещё под элевейтед привилегиями да ещё если там имперсонация не работает. Можно в кастом экшенах при удалении запустить сервис с нужными креденшелсами который сделает эту задачу.


Ну про удаление я не веду речь, ибо пока при удалении настраивать особенно нечего — настройки в config'ах удалятся вместе с их файлами, а БД вряд ли надо будет удалять, даже если данные больше не понадобятся, полагаю, конечные пользователи снести смогут (ломать — не строить). Настройка нужна при установке, особенно, если этот сервер у кого настраивается в первый раз.

А сделать обновление нужно, конечно, средствами MSI.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.