Создание пользовательского установщика в visual Studio, который допускает раздельную установку для клиента и сервера

#c# #visual-studio-2008 #windows-installer

#c# #visual-studio-2008 #windows-установщик

Вопрос:

Я планировал создать установщик, используя «Setup Project», включенный в Visual Studio. Я хочу создать это таким образом, чтобы он допускал раздельную установку клиента / службы с использованием одного MSI-файла. Кто-нибудь может подсказать мне правильное направление / шаги, которым нужно следовать. Чтобы уточнить это немного подробнее, клиентское приложение будет настольным приложением, а серверное приложение будет службой Windows.

Ответ №1:

Как правило, вы добавляете диалоговое окно RadioButtons (2) в свою программу установки из готового списка и заставляете пользователя выбрать одно из них или установить флажки, если оба разрешены. Если это переключатели, то есть свойство BUTTON2, которое будет равно 1 или 0 в зависимости от того, что было выбрано. Затем для каждого файла для клиента или сервера вы устанавливаете соответствующее условие BUTTON2= 1.

Есть несколько неприятных ошибок. Во-первых, исправление будет проходить через переустановку, а значение BUTTON2 будет неопределенным, поэтому вы получите неожиданные результаты. Один из способов справиться с этим — создать элемент реестра со значением [BUTTON2], чтобы значение было сохранено в реестре, затем вы можете добавить поиск по этому значению, чтобы повторно инициализировать его в случае исправления.

В установках VS нет хорошего способа сделать это, потому что у них нет множества функций, из которых вы можете выбирать, и которые можно изменить, перейдя в Programs amp; Features и изменив их. Все настройки VS имеют единую функцию, поэтому все, что вы можете сделать, это настроить устанавливаемые файлы / компоненты на основе флажков и переключателей.

Окно свойств каждого устанавливаемого файла (панель Обозревателя решений) содержит свойство Condition. При выборе файла в Solution Explorer, а затем при нажатии F4 открывается окно свойств.

Комментарии:

1. Какой основной вывод будет установлен. Допустим, у меня есть основной вывод из приложения для настольных компьютеров и другой основной вывод, т. е. служба Windows, которая будет установлена, когда пользователь выберет переключатель, создающий свойство BUTTON2 = 1.

2. Я никогда не беспокоюсь о первичном выводе — просто перетаскиваю файлы из сборок в папку приложения на в представлении файла в проекте установки. Затем вы можете добавить условия для файлов.

3. @PhilDW: Я не получил это условие для файлов или компонентов. Не могли бы вы, пожалуйста, подробно рассказать, как это сделать на этом шаге, который я ищу именно для той же операции. Как добавить условия к файлам?