MSBuild не может создать MSI. Есть ли альтернативы для службы Windows? - PullRequest
2 голосов
/ 12 июля 2011

Я использую проект установки (.msi) в Visual Studio.

Установка шагов:

  1. Сборка установки в Visual Studio.
  2. Скопируйте настройки на сервер.
  3. Запустите установку.
  4. Запустите службу Windows в services.msc

Обновление шагов:

  1. Сборка установки в Visual Studio.
  2. Скопировать настройки на сервер.
  3. Остановите службу Windows в services.msc
  4. Удаление службы Windows.
  5. Запустите установку.
  6. Запустите службу Windows в services.msc

Мой сервер сборки использует только msbuild для сборки и не может собрать проект установки (.msi).

Должен ли я установить Visual Studio на свой сервер сборки или есть лучшие альтернативы?

Ответы [ 2 ]

4 голосов
/ 12 июля 2011

Использование installutil.exe намного проще и быстрее ... вы можете использовать installutil /u myservice.exe для остановки и удаления службы на сервере, удаления старых файлов, копирования новых файлов и использования installutil myservice.exe для повторной установки службы ...

1 голос
/ 12 июля 2011

Для этого я использую инструмент Phil Wilsons ReadSvcXml.exe, который при запуске в качестве события после сборки в проекте установки обновляет MSI-файл установщика с конкретной информацией, относящейся к службе (т. Е. Включая зависимости, чтобы остановить службу при удалении,зарегистрировать это и т. д.).Это самый простой и надежный способ автоматического запуска службы после завершения установки.

Например, событие после сборки для проекта установки: .. \ ReadSvcXml.exe MyApplication.msi .. \ ServiceSetup.xml

Где ServiceSetup.xml выглядит следующим образом:

<ServiceData>
  <FileName>MyServiceHost.exe</FileName>
  <ServiceInstall>
    <Id>ServiceInstallColumn</Id>
    <Name>GatewayServer</Name>
    <DisplayName>Company MyServer</DisplayName>
    <ServiceType>ownprocess </ServiceType> <!-- or shareprocess-->
    <Interactive>no</Interactive>
    <Start>auto</Start> <!--auto demand or disabled-->
    <ErrorControl>
    <!--ignore normal critical -->
    normal
    </ErrorControl>
    <Dependencies>MSSQLSERVER</Dependencies>
    <Description>MyServer for blar blar blar</Description>
  </ServiceInstall>
  <ServiceControl>
    <Name>MyServerName</Name>
    <Id>MyServerId</Id>
    <!-- install, uninstall or both-->
    <Start>install</Start>
    <Stop>both</Stop>
    <Remove>uninstall</Remove>  
    <Wait>no</Wait> <!-- no yes -->
  </ServiceControl>
</ServiceData>

SvcInstall можно скачать здесь:
скачать svcinstall bin и источник

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