Как правильно использовать Chocolatey для установки службы Windows?

Я ищу некоторые рекомендации о том, как мне упаковать мою службу Windows, размещенную на TopShelf, для распространения через Chocolatey. В настоящее время .nuspec помещает .exe и все .dll в папку \tools, что означает, что они в конечном итоге устанавливаются в ProgramData\chocolatey\lib\our-service\tools. Это просто не кажется правильным. На самом деле это не было проблемой, пока я не заметил, что при удалении регистрируются всевозможные ошибки. Все это связано с тем, что Chocolatey пытается создать резервную копию файлов, но не может, потому что они используются, потому что служба запущена. Chocolateyuninstall.ps1 останавливает службу, но не запускается до попытки резервного копирования.

Само приложение использует ProgramData\MyCompany\MyApp для всех данных и регистрации. Должен ли я помещать двоичные файлы туда же? Или Program Files больше подходит? Если одно из этих местоположений правильное, является ли ChocolateyInstall.ps1 логичным местом для размещения кода для xcopy двоичных файлов? Или (и я надеюсь, вы скажете «нет») это даже не допустимое использование Chocolatey? Это означает, что я должен смириться с этим и создать MSI для работы с Chocolatey?

Спасибо


person Josh Buedel    schedule 29.01.2016    source источник


Ответы (1)


В настоящее время .nuspec помещает .exe и все .dll в папку \tools, что означает, что они в конечном итоге устанавливаются в ProgramData\chocolatey\lib\our-service\tools. Это просто не кажется правильным. На самом деле это не было проблемой, пока я не заметил, что при удалении регистрируются всевозможные ошибки. Все это связано с тем, что Chocolatey пытается создать резервную копию файлов, но не может, потому что они используются, потому что служба запущена. Chocolateyuninstall.ps1 останавливает службу, но не запускается до попытки резервного копирования.

Мы добавляем сценарий ChocolateyBeforeModify.ps1, который будет запускаться перед обновлением/удалением — https://github.com/chocolatey/choco/issues/268. Это должно быть в 0.9.10 и поможет сделать рабочий процесс более плавным.

В настоящее время вы должны остановить службу за пределами Chocolatey перед попыткой обновления или удаления.

Еще одна вещь, которую следует учитывать, это то, что Chocolatey использует преимущества XDT (преобразование документов Xml), что означает, что если вы включите файл *.install.xdt для конфигурации xml, choco не будет просто перезаписывать существующий файл. Это позволяет вам обновляться в папке пакета без перезаписи какой-либо пользовательской конфигурации. Однако, если вы копируете файлы куда-то еще, вам нужно разобраться с этим аспектом самостоятельно.

Само приложение использует ProgramData\MyCompany\MyApp для всех данных и регистрации. Должен ли я помещать двоичные файлы туда же? Или Program Files больше подходит?

У нас пока нет рекомендуемого способа установки службы или настройки веб-сайта/веб-приложения. Для обеих этих вещей мы будем создавать помощников в будущем, и в это время мы будем рекомендовать эти пути и иметь лучшие рекомендации о том, куда следует двигаться.

Обновление 20170324: теперь у нас есть Install-ChocolateyWindowsService и другие сервисные функции в бизнес-версии Chocolatey.

Если одно из этих местоположений правильное, является ли ChocolateyInstall.ps1 логичным местом для размещения кода для xcopy двоичных файлов?

Сценарии автоматизации — это логическое место для выполнения любых действий, которые необходимо предпринять после добавления битов пакета.

Или (и я надеюсь, вы скажете «нет») это даже не допустимое использование Chocolatey? Это означает, что я должен смириться с этим и создать MSI для работы с Chocolatey?

Создание сервисов и веб-сайтов, безусловно, является правильным использованием Chocolatey. Я рекомендую не создавать MSI без необходимости. Это довольно сложный процесс, и в большинстве случаев (например, для внутренних приложений) он кажется излишним.

person ferventcoder    schedule 30.01.2016