2017-10-19 6 views
1

Je veux pouvoir installer un service Windows en utilisant installutil.exe, puis exécuter et arrêter/supprimer automatiquement T.myService.exe à partir du script innosetup . J'ai essayé le code ci-dessousinnosetup - impossible d'exécuter et/ou d'arrêter/supprimer un service Windows

[Run] 
Filename: "{dotnet40}\InstallUtil.exe"; WorkingDir: "{app}"; Parameters: "T.myService.exe" ; Flags: runhidden 


[UninstallRun] 
Filename: "{dotnet40}\InstallUtil.exe"; Parameters: "stop T.myService.exe" ; Flags: runhidden 
Filename: "{dotnet40}\InstallUtil.exe"; Parameters: "delete T.myService.exe" ; Flags: runhidden 

Ce qui précède montre juste mon T.myService.exe dans TaskManager/services.msc mais le statut est « arrêté ». Ils ne semblent pas fonctionner automatiquement. Je vais devoir cliquer à droite manuellement T.myService.exe dans le gestionnaire de tâches pour les faire fonctionner ou avec la commande suivante dans l'invite de commande

To install a service 
<path>\InstallUtil.exe <path to T.myService.exe> 

To uninstall a service 
<path>\InstallUtil.exe /u <path to T.myService.exe> 

Mais, je veux que le service démarre exécuter automatiquement une fois l'installation est terminée et quand je désinstalle toutes les traces de T.myService.exe devrait être parti. Avec mon code innosetup, il ne s'exécute pas et s'arrête/supprime automatiquement. J'ai également activé [UninstallDelete] pour supprimer explicitement mon T.myService.exe, ce qui supprime tous les fichiers associés du répertoire de l'application, mais le service est toujours vu dans le gestionnaire de tâches/services.msc qui pose problème.

Qu'est-ce qui me manque? Que dois-je faire pour exécuter et arrêter/supprimer le service automatiquement?

+0

Le fichier InstallUtil.exe ne présente-t-il aucun problème lors de l'exécution d'Inno Setup, expliquant pourquoi il n'est pas capable de démarrer le service? –

+0

De même, il ne semble pas que ['InstallUtil'] (https://docs.microsoft.com/en-us/dotnet/framework/tools/installutil-exe-installer-tool) ait des mots-clés' stop' et 'delete' . –

+0

Lorsque vous exécutez 'InstallUtil.exe' à partir de l'invite de commande - cela fonctionne-t-il même si le service n'est pas installé (mais pas démarré) par Inno Setup upfront? + Utilisez-vous l'invite de commande élevée pour l'installation? –

Répondre

0
  1. Déployez "srvman.exe" dans le répertoire de l'application avec votre application.
    SrvMan: http://tools.sysprogs.org/srvman/

  2. ajouter l'action désinstaller dans le script InnoSetup

    [UninstallRun] 
    Filename: "{app}\srvman.exe"; Parameters: "delete YOUR_SERVICE_NAME"; 
    
0

Au lieu de InstallUtil, utilisez SC:

[Run] 
Filename: "{app}\T.myService.exe"; Parameters: "-service"; StatusMsg: "Creating services" 
Filename: "{sys}\sc.exe"; Parameters: "create ""myServiceName"" start= auto binPath= ""{app}\T.myService.exe"""; Flags: runhidden; StatusMsg: "Creating services" 

[UninstallRun] 
Filename: "{sys}\sc.exe"; Parameters: "stop ""myServiceName"""; Flags: runhidden; StatusMsg: "Stopping services" 
Filename: "{sys}\sc.exe"; Parameters: "delete ""myServiceName"""; Flags: runhidden; StatusMsg: "Deleting services" 

Ne pas oublier de copier le T. myService.exe dans le répertoire {app}:

[Files] 
Source: "T.myService.exe"; DestDir: "{app}";