2009-02-24 5 views
4

Je rencontre une erreur lors de l'utilisation du programme d'installation de Windows pour installer une source d'événement dans un produit que je déploie.Erreur avec Windows Installer ... "Impossible d'obtenir les types d'installateur"

Le message d'erreur que je reçois indique ce qui suit ...

Impossible d'obtenir les types d'installation dans le c: \ temp \ ensemble program.exe. -> Impossible de charger un ou plusieurs des types demandés . Récupérez la propriété LoaderExceptions pour plus d'informations .

Voici le bloc de code qui crée le programme d'installation de source d'événement ...

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Configuration.Install; 
using System.Diagnostics; 

namespace myapplication 
{ 
    [RunInstaller(true)] 
    public partial class EventSourceInstaller : Installer 
    { 
     public EventSourceInstaller() 
     { 
      InitializeComponent(); 

      string eventSourceName = "MyAppSourceName"; 
      if (!EventLog.SourceExists(eventSourceName)) 
      { 
       EventSourceCreationData data = new EventSourceCreationData(eventSourceName, "Application"); 
       EventLog.CreateEventSource(data); 
       EventLog.WriteEntry(eventSourceName, "Source Added."); 
      } 
     } 
    } 
} 

Dans le projet d'installation, j'ai ajouté une action personnalisée sur INSTALL nommée « Sortie principale de MyApplication (active) "pour exécuter le programme d'installation de la source d'événements.

J'ai les questions suivantes

  1. Quelqu'un at-il d'autre terme à travers cela et quel était le problème?

  2. Comment puis-je récupérer la propriété LoaderExceptions du programme d'installation?

Répondre

2

Je n'ai jamais vu cette erreur, mais le chemin c: \ temp \ program.exe est très étrange. Essayez-vous d'exécuter le programme d'installation à partir du répertoire c: \ temp \? Etes-vous certain que la sortie de tous les projets et toutes les DLL tierces que vous utilisez sont incluses dans le projet de déploiement?

Etes-vous sûr que la sortie de tous les projets et toutes les DLL tierces que vous utilisez sont incluses dans le projet de déploiement? Cliquez sur tous les fichiers inclus dans le projet de déploiement et vérifiez leur propriété SourcePath; sont-ils dans les fichiers sources d'origine et non dans le dossier de sortie cible? Pas le dossier temporaire?

+0

Dour High Arch - Merci! D'une certaine manière, une DLL a été désactivée dans le programme d'installation. Je ne sais pas comment mais quand je l'ai réactivé, tout a bien fonctionné. Merci encore pour votre aide. –

1

J'avais exactement le même problème.

Je suppose que votre programme fait référence à d'autres DLL que le programme d'installation installe dans le GAC ou ailleurs à l'extérieur du répertoire de l'application. Vous ne pouvez pas compter sur ces DLL en cours d'installation avant l'exécution de l'action d'installation.

Solution: Créez une DLL distincte pour votre action d'installation et assurez-vous que DLL ne référence aucune autre DLL (directement ou indirectement) qui n'est pas installée dans votre dossier d'application.

BTW, si vous le pouvez, passer à une autre technologie. Je ne sais pas quels concurrents sont meilleurs, mais si vous faites des choses non standard, le projet d'installation VS ne vous causera que des problèmes. Les "dépendances détectées" de votre projet d'installation ne sont pas à jour.

2

Dans mon cas, l'actualisation des dépendances ne fonctionne pas. En raison de l'ajout d'un fichier DLL aux dépendances du projet d'installation, Visual Studio les a toutes rafraîchies. Après la reconstruction du projet d'installation et l'erreur ne s'est plus produite!

Questions connexes