Shawl est un wrapper permettant d'exécuter des programmes arbitraires en tant que services Windows, écrit en Rust. Il gère l'API du service Windows pour vous afin que votre programme n'ait besoin de répondre qu'à ctrl-C/SIGINT. Si vous créez un projet qui doit s'exécuter en tant que service, regroupez simplement Shawl avec votre projet, définissez-le comme point d'entrée et transmettez la commande à exécuter via la CLI. https://github.com/mtkennerly/shawl Commandes : https://github.com/mtkennerly/shawl/blob/master/docs/cli.md Here is an example of creating a service wrapped with Shawl (note that -- separates Shawl's own options from the command that you'd like it to run): Using Shawl's add command: shawl add --name my-app -- C:/path/my-app.exe Using the Windows sc command for more control: sc create my-app binPath= "C:/path/shawl.exe run --name my-app -- C:/path/my-app.exe" ===> sc create Kavita binPath= "C:\path\to\shawl.exe run --name Kavita --cwd C:\your\folder\for\kavita -- C:\your\folder\for\kavita\Kavita.exe" Then start or configure the service as normal: sc config my-app start= auto sc start my-app Usage Voici un exemple de création d'un service encapsulé avec Shawl (notez que cela --sépare les propres options de Shawl de la commande que vous souhaitez qu'il exécute) : En utilisant la commande de Shawladd : shawl add --name my-app -- C:/path/my-app.exe Utilisation de la commande Windows scpour plus de contrôle : sc create my-app binPath= "C:/path/shawl.exe run --name my-app -- C:/path/my-app.exe" Ensuite, démarrez ou configurez le service normalement : sc config my-app start= auto sc start my-app Shawl inspectera l'état de votre programme afin de signaler le statut correct à Windows : Par défaut, lorsque votre programme se ferme, Shawl le redémarre si le code de sortie est différent de zéro. Vous pouvez personnaliser ce comportement avec --(no-)restartpour tous les codes de sortie ou --restart-if(-not)pour des codes de sortie spécifiques. Notez que ces quatre options s'excluent mutuellement. Lorsque le service est invité à s'arrêter, Shawl envoie à votre programme un événement ctrl-C, puis attend jusqu'à 3000 millisecondes (basé sur --stop-timeout) avant de tuer de force le processus si nécessaire. Dans les deux cas, si Shawl ne redémarre pas votre programme, il signale le code de sortie à Windows comme une erreur spécifique au service, sauf si le code de sortie est 0 ou un code que vous avez configuré avec --pass