Установщик Visual Studio, выполните пользовательские действия перед копированием файлов - PullRequest
0 голосов
/ 23 октября 2018

Я использую обычный проект установки Visual Studio для развертывания службы.Мне нужно выполнить пользовательское действие перед тем, как файлы скопируются установщиком.AFAIS все пользовательские действия (производные от Installer ...) выполняются после файлы были скопированы (что очевидно, так как они должны быть выполнены каким-либо образом).

Реальная проблема заключается в том, что установщик сам проверяет, какие файлы используются, и останавливает службу перед копированием (кстати, диалог установщика для остановки приложений говорит о чепухе, но это другой вопрос).В основном это хорошая идея.Однако после установки конфигурация службы настроена на перезапуск службы, если она не запущена (диспетчер управления службами выполняет эту работу).Эта конфигурация является обязательной, она не может быть изменена навсегда (только временно).Позже во время установки обновления это иногда вступает в противоречие с процессом (upgrade-) установки.Поэтому в случае установки обновления я хочу изменить (старую) конфигурацию службы на , а не , перезапустить или даже удалить (старую) службу, прежде чем файлы будут скопированы в целевую папку.В противном случае копирование файлов иногда завершается ошибкой, если файл все еще используется (поскольку старая служба снова запускается (просто перезапускается диспетчером управления службами), как описано выше).Короче говоря, мне нужно выполнить некоторый код перед тем, как (новые) файлы будут скопированы установщиком.

Это связанный вопрос, но ответ не соответствует моему вопросу: Возьмитерезервное копирование целевого каталога перед тем, как файлы скопированы в целевой каталог установщиком msi

1 Ответ

0 голосов
/ 24 октября 2018

Фактический ответ кажется: это невозможно .У меня не было времени полностью переключиться на WIX или подобные альтернативы.Это не очень хорошее решение, но оно работает.Я решил проблему следующим образом:

  • Создайте новое приложение "MySetup.exe" (Forms, WPF и т. Д.)
  • MySetup.exe проверяет существующие установки службы по мере необходимости (см. Подробностимоего первоначального вопроса) и удаляет службы. Таким образом, он выполняет «настраиваемое действие».
  • MySetup.exe включает в себя исходный файл MSI и запускает его после того, как предварительные условия были обеспечены.
  • Он проверяет результатыУстановка MSI для дальнейшей обработки ошибок.
  • Одним из преимуществ является то, что я могу легко добавить такие параметры, как имя файла журнала, к установке MSI.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...