2016-11-21 1 views
0

Il existe un projet d'installation de studio visuel (MS VS Extension) qui installe un service Windows via des actions personnalisées.Appelez les méthodes de base du programme d'installation pour plusieurs actions personnalisées?

Maintenant, je suis d'ajouter des actions pour renseigner le champ InstallLocation (qui est vide par vantaux projet d'installation de Visual Studio créé msi, voir ici: http://www.mikebevers.be/blog/2010/01/setup-project-product-installlocation-in-registry-is-empty/).

Il existe deux alternatives pour incorporer ces actions pour moi:

  1. Intégrer les actions supplémentaires dans les actions personnalisées existantes mise en œuvre qui installent le service
  2. Créer bibliothèque de classes séparées pour les actions supplémentaires et les ajouter comme deuxième action personnalisée (ceci permettrait de réutiliser cette classe dans tous les projets, sans créer de code redondant)

Pour (1) il n'y aurait pas de problème.


Alternative (2) est ce que cette question est sur:.

Dois-je appeler la base * méthodes dans toutes les actions personnalisées?

Je ne l'obtiens pas de la documentation MSDN, si les méthodes de base ne concernent que l'action personnalisée spécifique ou si elles se rapportent à l'action d'installation globale, e. g: https://msdn.microsoft.com/en-gb/library/system.configuration.install.installer.install(v=vs.110).aspx

Si cela a été décrit trop confus: dois-je appeler System.Configuration.Install.Installer.Install() seulement une fois ou pour chaque action personnalisée?

Merci d'avance!

Répondre

0

Il m'a fallu du temps pour atteindre ce point, mais maintenant je pouvais l'essayer - et cela fonctionne avec les deux actions personnalisées appelant les méthodes de base (les extraits ci-dessous sont dans les implémentations d'actions personnalisées Install() et Commit() :

public override void Install(IDictionary stateSaver) 
{ 
    base.Install(stateSaver); 

    // custom stuff ... 
} 

public override void Commit(IDictionary savedState) 
{ 
    base.Commit(savedState); 

    // custom stuff ... 
}