Установка бинарного файла, если он уже есть, с помощью установщика WIX - PullRequest
0 голосов
/ 13 июня 2018

Справочная информация : клиенты копируют набор двоичных файлов и помещают его в определенное место для запуска индикаторов NinjaTrader.Например: предположим, Клиент "A " использовал First.dll, second.dll и Клиент "B" использовал First.dll и Third.dll (они не использовалилюбые установщики, но только скопированные из местоположения сервера)

Текущее требование : мне нужно создать установщик WIX со всеми возможными обновленными библиотеками DLL с оговоркой, что он должен устанавливать только те обновленные DLL, чьипредыдущая версия клиента уже на его машине.Таким образом, если новый установщик WIX имеет First_1000.dll, Second_1000.dll, Third_1000.dll и Fourth_1000.dll, то он должен вести себя на Customer "A" и "B" следующим образом:

Клиент "A" : использует этот установщик, его машина должна иметь только First_1000.dll и Second_1000.dll, а не другие.

Клиент "B" : используетэтот установщик, его машина должна иметь только First_1000.dll и Third_1000.dll, а не другие.

Что я попробовал : Использование directorySearch и FileSearch, но я не могу установить по условию, либо он устанавливает все, либо не устанавливает.Другая проблема с этим заключается в том, что он не удалит предыдущую версию двоичного файла.

Что мне нужно : как вызвать метод CustomAction и использовать возвращаемый результат, чтобы принять решение об установке или нет,с этим я могу удалить и предыдущую версию файла.

Ответы [ 2 ]

0 голосов
/ 14 июня 2018

Общий подход, который должен работать, заключается в следующем:

  1. Сгруппировать компоненты (содержащие по одному файлу каждый) в Функции, которые после установки будут подходить для каждого клиента.

  2. Использовать условия объекта на основе результатов поиска в файле и значений свойств, установленных в результате поиска.

Этот пример в документах WiX, Условная установка , кажется, делает почти то, что вы ищете.

В долгосрочной перспективе вы должны создать установку, которая не требует такого типа поиска.Вы не говорите, почему имена файлов меняются, но я предполагаю, что вы используете разные имена как своего рода контроль версий.Установка, исправления, пакеты обновления, обновления и т. Д. Заменяют все файлы в зависимости от их двоичных версий.В хорошо спроектированном приложении и установке бинарные версии существующих файлов могут быть 1.0.Если все новые файлы имеют версию 1.1, тогда все старые файлы будут заменены.Если бы была версия 1.0 (и, следовательно, без изменений), она не была бы заменена.Имена файлов не будут изменены.Контроль версий является основой для обновлений, поэтому я рекомендую двигаться в этом направлении.

0 голосов
/ 13 июня 2018

Общий совет : не рассматривайте развертывание как задачу разработки в первую очередь.Разверните ваши файлы и настройки и выполните любую расширенную настройку при запуске приложения.

Не применяйте никакой пользовательской логики, если все, что вам нужно, это копия файла и некоторые ключи реестра - и, конечно, не делайте все это водно пользовательское действие, использующее WiX / MSI только в качестве «оболочки» или «контейнера».

Существует множество инструментов, которые могут помочь вам в развертывании программного обеспечения: Как создать установщик Windows (также перечисленыустаревшие инструменты, которые не являются инструментами MSI).

В какой-то момент я написал этот пошаговый ответ для установщика WiX .


Если вы спроситеМне проще всего добиться того, чего вы хотите, тогда я бы установил все файлы с помощью одного MSI и использовал само приложение для настройки любого доступа к расширенным функциям (если применимо) с помощью кода лицензии (если таковой имеется).Это сводит к минимуму сложность развертывания и помещает расширенные функции в привычный контекст: отладка приложений в пользовательском контексте (наиболее вероятно).

Это позволяет избежать огромного количества боли в пользовательской логике настройки - чтоочень сильно усложняется проблемами sequencing, impersonation и conditioning, не говоря уже о runtime dependencies и других проблемах.В совокупности это вызывает общую проблему, заключающуюся в том, что логика установки very hard to debug - из-за коллективного воздействия всех этих аспектов сложности.

...