Question

Je suis en train de créer une configuration web pour mon site web, et je veux utiliser une classe d'installation pour faire des choses sur mesure. J'utilise VS 2010, et le site Web et d'installation est .NET 3.5.

J'ai ajouté référence à la sortie de projet de classe d'installation dans la section Install sous Custom Actions:
Actions personnalisées

J'ai également mis /targetdir="[TARGETDIR]/" sur le CustomActionData pour cette action.

Le projet InstallScript est une bibliothèque de classe standard (dll).
Il y a une classe publique qui hérite de la classe de Installer. Elle remplace la méthode d'installation comme je l'ai vu été fait dans plusieurs exemples en ligne:

using System.Collections;
using System.Windows.Forms;

namespace InstallScript
{
  public class MyWebInstaller : System.Configuration.Install.Installer
  {
    public override void Install(IDictionary stateSaver)
    {
      base.Install(stateSaver);
      var targetDir = Context.Parameters["targetdir"];
      if(targetDir==null) targetDir = "No TARGETDIR!";
      MessageBox.Show("TARGETDIR:\t" + targetDir);
    }
  }
}

Je pense qu'il devrait y apparaître une boîte de message ici le temps som lors de l'installation, mais il semble que ce ne soit jamais appelé. Aucune erreur est affiché non plus. L'installation fonctionne seulement à travers comme si ce code n'a jamais été appelé.

Quelqu'un a idée de ce qui ne va pas?

Était-ce utile?

La solution

OK, je l'ai trouvé ce qui manquait.

Vous devez spécifier la classe avec le RunInstaller(true) d'attribut de classe pour la configuration pour ramasser et fait exécuter le code.

Ainsi, les besoins de la classe à déclarer comme ceci:

[System.ComponentModel.RunInstaller(true)]   
public class MyWebInstaller : System.Configuration.Install.Installer   
{
  ...
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top