Создание единого установщика решения с WPF в качестве начального проекта и в зависимости от службы Windows - PullRequest
1 голос
/ 08 апреля 2019

Задать аналогичный вопрос, потому что никто не ответил на предыдущий вопрос

У меня есть решение с проектом библиотеки классов, проектом WPF (начальный проект) и проектом службы Windows. Я хотел бы создать один установщик, чтобы при установке приложения пользователь устанавливал как WPF (UI), так и службу Windows.

Большинство ресурсов, которые я нашел в Интернете, говорят только о том или ином, но не обо обоих. Например это: .

Я проверил некоторый вопрос по stackoverflow, но либо на них не отвечает ни один, либо неопределенные ответы, например этот вопрос или этот .

Есть предложения, как этого добиться?

1 Ответ

0 голосов
/ 11 апреля 2019

Я не эксперт по различным установочным решениям, но да, это можно сделать. Я знаю, потому что мой проект делает это.

Мы исторически использовали InstallShield , но мы активно переходим на InstallAware по причинам, не связанным с этим обсуждением. Честно говоря, я подозреваю, что любое решение для инсталлятора (например, InstallShield, InstallAware, Wix и т. Д.) Может быть использовано для этого при условии, что у него есть средства для выполнения пакетного скрипта как части процесса установки (подробнее об этом чуть позже) , Фактически, пока мы создаем наш новый установщик с использованием InstallAware, мы временно поставляем наше приложение на основе WPF и службу Windows, используя WinZip самораспаковывающийся исполняемый файл. Самораспаковщик WinZip помещает приложение WPF в папку C: \ Program Files \ \ , помещает службу Windows в C: \ Program Files \ \ Common , а затем устанавливает и запускает службу Windows.

Хитрость во всем этом, конечно же, заключается в установке службы Windows. Первоначально мы использовали утилиту InstallUtil.exe , чтобы сделать это, но нам пришлось ошибиться и предостеречь ее с нашим установщиком, потому что мы не могли не можем проверить, можем ли мы зависеть от того, какая утилита доступна в целевой системе. В какой-то момент пути я прочитал этот ответ @ Marc Gravell . Это послужило отправной точкой для моего ответа здесь , в котором приведены подробные инструкции по установке самой службы Windows из командной строки без необходимости InstallUtil.exe .

Так что в качестве набора инструкций ...

  1. Обновите службу Windows на основе сведений здесь .
  2. Создайте файл .bat с помощью следующих команд:

    кд
    .exe -установка

  3. Сборка установщика для вашей службы WPF и службы Windows. Обратите внимание, что это должно быть сосредоточено на развертывании файлов в правильных местах. Вам нужно будет включить файл .bat как часть установщика. Если ваше решение для установки позволяет вам копировать файлы во временную папку, которая удаляется в конце процесса установки, скопируйте файл .bat в это расположение, поскольку он не понадобится после завершения установки.

  4. Наконец, запустите файл .bat из вашего установщика во время установки. Это установит Службу Windows.

На самом деле все не так сложно.

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

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...