2009-12-21 8 views
44

J'ai essayé d'utiliser les codes ci-dessous dans Wix. Mais lors de l'installation, le programme d'installation a été gelé pendant environ 3 minutes: Démarrage des services, puis j'ai reçu le message suivant: "ServiceService n'a pas pu démarrer.Vérifiez que vous avez suffisamment de privilèges pour démarrer les services système". Y a-t-il un problème dans mes codes? Et puis-je demander à l'utilisateur d'entrer le nom d'utilisateur et le mot de passe du système Windows pendant l'installation pour obtenir les "privilèges"?Comment installer et démarrer un service Windows en utilisant WiX

Merci beaucoup!

<File Id='JobServiceEXE' Name='JobService.exe' DiskId='1' 
     Source='JobService.exe' Vital='yes' KeyPath='yes'/>   
    <ServiceInstall Id="ServiceInstaller" Type="ownProcess" Vital="yes" 
     Name="JobService" DisplayName="123 Co. JobService" 
     Description="Monitoring and management Jobs" Start="auto" 
     Account="LocalSystem" ErrorControl="ignore" Interactive="no" /> 
    <ServiceControl Id="StartService" Stop="both" Remove="uninstall" 
     Name="JobService" Wait="yes" /> 
</Component> 
+1

J'ai supprimé le "Wait =" yes "", et l'installation est OK maintenant, mais le statut du service "JobService" est "arrêté" dans le Gestionnaire des tâches Windows, comment peut-il être démarré automatiquement? Je vous remercie. – Ray

+0

Start = "auto" dans l'élément ServiceInstall –

Répondre

58

Le code suivant fonctionne pour moi ... pas besoin de nom d'utilisateur pour prompt/mot de passe :)

<File Id='JobServiceEXE' Name='JobService.exe' DiskId='1' Source='JobService.exe' KeyPath='yes'/>   
    <ServiceInstall 
     Id="ServiceInstaller" 
     Type="ownProcess" 
     Name="JobService" 
     DisplayName="123 Co. JobService" 
     Description="Monitoring and management Jobs" 
     Start="auto" 
     Account="[SERVICEACCOUNT]" 
     Password="[SERVICEPASSWORD]" 
     ErrorControl="normal" 
     /> 
     <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="JobService" Wait="yes" /> 
    </Component> 
+0

Merci d'avoir répondu à ma question, mais l'état du service était toujours "arrêté", même après avoir redémarré le système. – Ray

+0

Commencera-t-il manuellement une fois l'installation terminée, mais avant le redémarrage? – saschabeaumont

+2

Merci, ça fonctionne bien maintenant. Le programme exécutable que j'ai utilisé n'était pas un exe du service Windows, maintenant j'utilise un service windows écrit en VB pour le lancer. – Ray

12

J'ai trouvé la solution sur cette page installerait correctement le service, mais que l'élément ServiceControl ne démarrerait pas le service.

En comparant le service installé wix avec le service installé manuellement ("JobService.exe/install"), le champ "Chemin d'accès à l'exécutable" manquait un commutateur de démarrage. Correction de cela dans wix avec l'attribut arguments de ServiceInstall;

<File Id='JobServiceEXE' Name='JobService.exe' DiskId='1' Source='JobService.exe' KeyPath='yes'/>   
    <ServiceInstall 
    Id="ServiceInstaller" 
    Type="ownProcess" 
    Name="JobService" 
    DisplayName="123 Co. JobService" 
    Description="Monitoring and management Jobs" 
    Start="auto" 
    Account="[SERVICEACCOUNT]" 
    Password="[SERVICEPASSWORD]" 
    ErrorControl="normal" 
    Arguments=" /start JobService" 
    /> 
    <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="JobService" Wait="yes" /> 
</Component> 

Un lurker de longue date, ceci est mon premier post sur ici - j'espère que cela aide quelqu'un.

+4

Si vous devez passer un paramètre pour le démarrer, il est probable que le service n'adhère pas correctement à l'API Windows – saschabeaumont

+9

De nombreux services disposent d'arguments de ligne de commande. –

Questions connexes