2010-02-10 3 views
2

J'ai fait une classe simple d'installation:C# Installer classe n'est pas exécuté

[RunInstaller(true)] 
public class MyCustumAction : Installer 
{ 
    public override void Install(System.Collections.IDictionary stateSaver) 
    { 
     base.Install(stateSaver); 
     string value = Context.Parameters["targetdir"]; 

     throw new Exception("Contact?? " + value); 

     WriteLog(value); 
    } 

    private void WriteLog(string message) 
    { 
     using(FileStream f = File.Create(@"C:\ik ben nieuw.txt")) 
     { 
      using (StreamWriter w = new StreamWriter(f)) 
      { 
       w.WriteLine("Dag van installatie: " + DateTime.Now.ToString()); 
       w.WriteLine(message); 

      } 
     } 
    } 
} 

Dans mon projet d'installation, je l'ai fait ce qui suit:

  • sortie Ajouter projet - sortie primaire de mon assemblée
  • Ajouter une action personnalisée dans le répertoire d'installation (Actions affichage personnalisé)
  • Set CustumActionData à '/ targetdir = "[TARGETDIR] \"'
  • Créer mon assembly et générer le projet d'installation

Lors de l'installation, l'exception n'est pas générée. Pourquoi pas? Il semble que ma classe ne soit pas invoquée. Qu'est-ce que je fais mal ici?

MISE À JOUR

Lorsque je crée un projet séparé avec seulement la classe d'installateur et ajouter ce projet à mon Ontario ouput et définir l'action de custum correctement, je reçois l'exception!

Maintenant, je me demande pourquoi ce même fichier ne soit invoqué pas dans mon propre (WinForms) Assemblée ..

+1

Juste une note de côté: Vous devriez vraiment utiliser l'aide de vos ressources jetables au lieu d'appeler Dispose comme ça. –

+1

Thnx pour le conseil. J'ai modifié mon code. – Martijn

+0

Même chose avec 'FileStream', s'il vous plait. ' –

Répondre

0

Avez-vous décoré votre classe avec

[RunInstaller (true)]

?

+0

Oui j'ai et encore je ne reçois pas l'exception – Martijn

+0

Voir mon startpost. – Martijn

0

J'ai quelques notes quand j'étais en train de résoudre ce même problème:

à installer sur Vista assurez-vous initiez du Setup.exe, pas de Msi

Même si vous êtes sur XP peut-être vous devriez essayer de courir à partir du setup.exe

Questions connexes