Avec la nouvelle version de .NET Core 3, j'essaie de créer un service Windows avec le nouveau modèle de service de travailleur. Je dois pouvoir l'installer avec la stratégie de groupe, et WiX semble être l'outil qu'il me faut.
J'ai créé le fichier .wxs et sans spécifier la section ServiceInstall, il s'installe correctement.
Voici mon dossier : MISE À JOUR
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="SystemInformationService" Language="1033" Version="1.0.0.0" Manufacturer="MyCompany" UpgradeCode="f08191cf-461e-481b-a2a1-6f54d6ae5331">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<!-- Embed cab files, don't include them in the output -->
<MediaTemplate EmbedCab="yes"/>
<!-- Default WiX dialog set -->
<UIRef Id="WixUI_Mondo" />
<!-- License agreement -->
<WixVariable Id="WixUILicenseRtf" Value="LicenseAgreement.rtf" />
<Feature Id="ProductFeature" Title="SystemInformationService.Setup" Level="1">
<ComponentGroupRef Id="ProductComponents" />
<ComponentGroupRef Id="HeatGenerated" />
</Feature>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="SystemInformationService" />
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. -->
<Component Id="ProductComponent" Guid="5BB7300D-C29F-4C87-B461-AAE3AA4EB56D">
<CreateFolder/>
<!--<File Source="$(var.SystemInformationService.TargetPath)" />-->
<ServiceInstall
Id="ServiceInstaller"
Type="ownProcess"
Name="SystemInformationService"
DisplayName="System Information Service"
Description="System Information service by MyCompany"
Start="auto"
Vital="no"
Account="LocalSystem"
Interactive="no"
ErrorControl="normal" />
<ServiceControl
Id="ServiceInstaller"
Start="install"
Stop="both"
Remove="uninstall"
Name="SystemInformationService"
Wait="yes" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>
J'essaie maintenant d'ajouter les composants du service pour qu'il démarre à l'installation. Lorsque j'exécute le programme d'installation après l'avoir ajouté, l'interface utilisateur du programme d'installation se bloque sur "Starting Service...". J'ai essayé d'ajouter les arguments 'start' car j'ai vu cela dans une autre réponse.
Je pense que comme il s'agit de .net core, je devrais peut-être ajouter une action .exe ou quelque chose comme ça pour démarrer le service. C'est tout ce à quoi je peux penser - toute suggestion sera la bienvenue.
Remerciements
UPDATE : J'ai mis à jour le fichier .wxs avec ce que j'ai maintenant, et je l'ai correctement installé avec un déploiement dépendant du framework. Mon problème était de spécifier AnyCPU au lieu de x86. Mais... Maintenant, quand je passe à un déploiement autonome, j'obtiens la même erreur qu'avant. Il doit donc y avoir un lien avec la façon dont je publie le .net core.
C'est le profil que je publie actuellement. Lorsque je passe en mode dépendant du framework, le programme d'installation s'exécute correctement et démarre le service.