2009-07-01 8 views
13

Objectif: À l'appui d'un service Windows qui peut avoir plusieurs instances sur une seule machine, utilisez un projet d'installation pour créer un MSI capable de:Spécifiez de Windows Nom du service lors de l'installation avec le programme d'installation du projet

  1. Réception d'entrée utilisateur pour le service nom
  2. Installation service
  3. Sérialisation nom du service de 1 (pour que le nom propre peut être utilisé dans l'exploitation forestière et désinstallation)

Mon premier espoir était de mettre en service Nom dans App.config (et récupérez-le lors de la désinstallation lors de l'instanciation de ServiceInstaller. Cela semble avoir été naïf, car il n'est pas accessible pendant l'installation.

Si MyInstaller étend le programme d'installation, il peut appeler base.Install(); cependant, mes tentatives d'écriture sur app.config (dans MyInstaller.Install() et après base.Install()) sont inefficaces.

Alors que le service peut être installé avec un nom de service personnalisé, ce nom n'est pas sérialisé et le programme d'installation est le plus mécontent lors de la désinstallation.

Comment cela devrait-il être fait?

Répondre

9

Vous pouvez spécifier des paramètres pour les actions du programme d'installation, donc collectez le nom du service et transmettez-le en tant que paramètre à l'action. Ensuite, dans la classe Installer, vous pouvez remplacer Install() et y accéder via base.Context.Parameters. Voilà comment vous obtenez la valeur. Après avoir obtenu cette valeur et l'avoir utilisée, vous le placez dans le paramètre stateSaverIDictionary de sorte que si vous remplacez Uninstall(), vous pouvez trouver quelle valeur a été utilisée lors de l'installation.

+0

caché dans le site ordinaire! merci Neil. –

+2

pourriez-vous fournir un exemple de code? –

+2

Je seconde Lucas! :-) – Junto

Questions connexes