Shawl — оболочка для запуска произвольных программ в качестве служб Windows, написанная на Rust. Он обрабатывает API службы Windows за вас, так что вашей программе нужно реагировать только на ctrl-C/SIGINT. Если вы создаете проект, который должен работать как служба, просто объедините Shawl с вашим проектом, установите его в качестве точки входа и передайте команду для запуска через интерфейс командной строки. Shawl проверит состояние вашей программы, чтобы сообщить Windows о правильном состоянии.
Shawl отличается от существующих решений тем, что они часто требуют запуска специальной команды установки для подготовки службы, что означает, например, что вам нужно выполнить шаг CustomAction, если вам нужно установить службу в MSI. С помощью Shawl вы можете настроить службу по своему усмотрению, например, с помощью обычного шага ServiceInstall в MSI или запустив «sc create», потому что у Shawl нет собственной специальной настройки. Команда «добавить платок» — это просто дополнительное удобство.