Résolution des problèmes de déploiement de Windows Installer

Mise à jour : novembre 2007

Les rubriques de cette section traitent des problèmes que vous pouvez rencontrer lorsque vous créez des projets de déploiement ou que vous déployez des applications.

Une application MFC n'est pas localisée lorsqu'elle est installée sur un ordinateur dont les paramètres régionaux ne sont pas Français

Lors du déploiement d'une application MFC à l'aide d'un projet de déploiement Visual Studio, les dépendances des modules de fusion localisés Mfc_loc_e.msm et Mfc_loc_fe.msm ne sont pas détectées. Ces modules de fusion sont inclus dans Visual C++ ; leur emplacement d'installation par défaut est \Program Files\Fichiers communs\Merge Modules. Pour distribuer une application MFC localisée, vous devez ajouter manuellement les deux modules de fusion à votre projet de déploiement. Pour plus d'informations, consultez Déploiement et dépendances.

Des dépendances d'assembly n'ont pas été détectées

Lorsqu'un groupe de sorties de projet, un assembly ou un module de fusion est ajouté à un projet de déploiement, tous les assemblys dépendants sont automatiquement détectés et ajoutés au projet. Si un assembly dépendant est chargé au moment de l'exécution par le biais de code, il ne peut pas être détecté par les outils de déploiement. Il est conseillé d'éviter, si possible, de charger des assemblys à partir de code, ou bien d'ajouter manuellement les assemblys dépendants à votre projet de déploiement. Pour plus d'informations, consultez Déploiement et dépendances.

Fichiers introuvables sur un serveur Web une fois leur installation terminée

Lors de l'installation d'une configuration Web sur un serveur Web, la propriété VirtualDirectory du dossier Application Web et de tous les dossiers personnalisés Web détermine l'emplacement d'installation des fichiers placés dans ces dossiers par rapport à la racine Web. Si cette propriété n'est pas définie, les fichiers seront installés dans le dossier racine Web (Inetpub\wwwroot). Pour plus d'informations, consultez VirtualDirectory, propriété.

Comment installer une application Web dans le répertoire racine du serveur Web ?

Par défaut, lors de l'installation d'une application Web à l'aide d'un projet de déploiement de configuration Web, les fichiers sont installés dans un dossier portant le même nom que le projet de déploiement situé juste au-dessous du dossier racine Web. La propriété VirtualDirectory du dossier Application Web détermine l'emplacement d'installation des fichiers. Pour effectuer l'installation dans le répertoire racine Web, remplacez la valeur de la propriété VirtualDirectory par la valeur null (en supprimant la valeur par défaut). Pour plus d'informations, consultez VirtualDirectory, propriété.

Impossible de déboguer les applications Web déployées à l'aide de la commande Xcopy

Lorsqu'une application Web est copiée sur un serveur Web à l'aide de la commande Xcopy, les services IIS (Internet Information Services) ne sont pas automatiquement configurés pour votre application. Le débogage ne fonctionnera pas, car le dossier de l'application n'est pas reconnu en tant que racine d'application.

Après avoir effectué la copie, vous devez définir le nouveau dossier en tant que racine d'application à l'aide du Gestionnaire des services IIS. De plus, vous devez définir les autorisations relatives au dossier Bin de l'application afin d'empêcher le téléchargement de DLL.

Conseil :

Au lieu d'utiliser la commande Xcopy, utilisez plutôt la commande Copier un projet ou un projet de déploiement de configuration Web. Pour plus d'informations, consultez Autres solutions de déploiement.

Comment désactiver l'analyse des dépendances ?

Il n'existe malheureusement aucun moyen de désactiver la recherche et la résolution de l'analyse des dépendances. La seule solution consiste à désactiver la case à cocher Inclure les chemins de recherche standard dans la boîte de dialogue qui s'affiche lorsque vous cliquez sur la propriété SearchPath.

Vous devez tenir compte des points supplémentaires suivants :

  • Vous devez ajouter les fichiers à l'aide de la commande Ajouter un fichier (dans le menu Projet, sélectionnez Ajouter, puis Fichier). Si vous utilisez la commande Ajouter une sortie de projet (dans le menu Projet, sélectionnez Ajouter, puis Sortie de projet), les dépendances signalées par le projet de code sont incluses.

  • Lors de la génération, il se peut qu'un ou plusieurs avertissements Impossible de trouver la dépendance s'affichent, mais vous pouvez alors les ignorer.

  • Si vous voulez uniquement désactiver l'analyse des dépendances pour certains fichiers, vous pouvez placer ces fichiers dans un projet de module de fusion avec les chemins de recherche standard désactivés. Utilisez ensuite Ajouter un module de fusion (dans le menu Projet, sélectionnez Ajouter puis Module de fusion) pour inclure le fichier .msm dans un projet d'installation standard avec les chemins de recherche standard activés.

Comment désactiver la réparation pour un fichier que les utilisateurs sont susceptibles de modifier ou de supprimer ?

Visual Studio crée des raccourcis publiés pour que le programme vérifie l'existence de tous ses fichiers lors du lancement. Pour modifier ce comportement et faire en sorte que Visual Studio ne répare pas le fichier, sélectionnez les fichiers dans le projet d'installation et affectez la valeur NOT REINSTALL à la propriété Condition afin que le fichier ne soit pas réinstallé sur une réparation et la valeur TRUE à la propriété Transitive si vous voulez que la condition soit réévaluée. Ainsi, le programme d'installation apparaît brièvement à l'écran après la suppression du fichier et vérifie que le fichier ne doit pas être réinstallé. Le programme d'installation ne s'affichera plus par la suite.

Comment déboguer une classe d'action/Installer personnalisée ?

Vous pouvez adopter l'une des méthodes suivantes :

  • Ajouter un appel dans le code à System.Diagnostics.Debugger.Launch. Cette méthode ouvre le débogage juste-à-temps et vous permet d'attacher un nouveau débogueur à votre code.

  • Ajouter un appel dans le code à MessageBox.Show("Debug Me"). Lorsque le message s'affiche, utilisez Visual Studio pour attacher le débogueur au processus MessageBox. Ajoutez ensuite des instructions break (pour les projets Visual C#) ou stop (pour les projets Visual Basic) dans le code.

  • Définir vos préférences de débogage pour démarrer InstallUtil.exe (qui se trouve dans \winnt\Microsoft.net\Framework\version) et le transmettre à votre assembly en tant que paramètre. Lorsque vous appuyez sur F5, vous atteignez votre point d'arrêt. InstallUtil.exe exécutera vos actions personnalisées de la même manière qu'un fichier MSI.

L'inscription d'assemblys avec des interfaces COM ne fonctionne pas

Il s'agit d'un bogue RegAsm connu. Si votre assembly possède une dépendance, par exemple par rapport à une autre bibliothèque de classes, RegisterCOM peut ne pas fonctionner, car RegAsm est appelé pour obtenir les informations d'inscription. Regasm étant appelé dans le répertoire \obj, la dépendance est introuvable et RegAsm échoue sans notification. La meilleure solution consiste à ajouter l'assembly manuellement à partir du répertoire \bin. Une autre solution consiste à utiliser RegisterSelfReg.

Veillez également à effectuer une inscription manuelle à l'aide de RegAsm/Codebase. Si votre assembly ne se trouve pas dans un emplacement partagé, il est introuvable, à moins qu'il ne se trouve dans le même répertoire que le code appelant. /Codebase entre le répertoire dans le Registre.

Comment dépanner les installations Windows Installer à l'aide des fichiers journaux ?

Windows Installer enregistre ses opérations pendant qu'il installe les programmes dans un fichier journal. Le fichier journal se trouve dans le répertoire où réside le fichier .msi.

Comment obtenir un fichier journal pour mon installation ?

Il existe deux manières de procéder :

  • Exécutez la commande suivante à partir de la ligne de commande, à l'aide du commutateur d'enregistrement.

    misexec /i mysetup.msi /l*v mylog.txt
    
  • Enregistrez ce qui suit en tant que fichier .reg et chargez-le dans le Registre.

    REGEDIT4
    
    [HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer]
    "Logging"="voicewarmup"
    "Debug"=dword:00000007
    

    Ensuite, accédez à votre répertoire \temp et effectuez un tri par date. Le fichier journal msi*.log le plus récent provient de l'installation ou de la désinstallation la plus récente.

Comment effectuer une installation dans le sous-répertoire d'un produit déjà installé ?

  1. Supposez que le produit déjà installé, Produit 1, est installé et possède un fichier nommé Monfichier.txt.

  2. Utilisez ORCA (dans le Kit de développement Windows Installer) pour afficher la table Fichier, et recherchez la ligne qui représente Monfichier.txt.

  3. Notez la valeur de la colonne Component_, puis ouvrez la table des composants.

  4. Dans la table des composants, recherchez la ligne contenant la valeur Component_ dans la colonne Composant, puis récupérez le ComponentID. Copiez cette valeur dans le Presse-papiers. Fermez ORCA.

  5. Dans votre projet d'installation, ouvrez l'Éditeur des conditions de lancement et ajoutez-y une recherche de composant Windows Installer. Pour la propriété ComponentID de la nouvelle recherche, collez le ComponentID.

  6. Copiez la propriété Property. Elle doit ressembler à COMPONENTEXISTS1.

  7. Ouvrez l'Éditeur du système de fichiers et sélectionnez le dossier Application.

  8. Modifiez la propriété DefaultLocation pour qu'elle devienne [COMPONENTEXISTS1]MySubFolder (car le chemin dans COMPONENTEXISTS1 contient une « \ » de fin).

Après l'étape 6 ci-dessus, vous pouvez ajouter une condition à l'Éditeur des conditions de lancement pour vérifier si le composant a été trouvé, et bloquer l'installation puis afficher un message dans le cas contraire. La condition serait COMPONENTEXISTS1 (ce qui signifie que l'exécution du programme d'installation ne pose pas de problème si COMPONENTEXISTS1 n'est pas vide).

Comment installer des dossiers Web personnalisés dans un port non défini par défaut ?

Pour installer des dossiers Web personnalisés sur un port non désigné par défaut, exécutez votre installation à partir de la ligne de commande. La commande doit inclure les valeurs de la propriété Property pour chacun de vos dossiers Web personnalisés. En général, une valeur doit présenter la forme NEWWEBPROPERTY1. Vous devez également inclure TARGETPORT pour le dossier d'application Web.

Par exemple, si votre serveur Web est sur le port 20, votre ligne de commande doit ressembler à ce qui suit :

msiexec /i mywebsetup.msi TARGETPORT=20 NEWWEBPROPERTY1PORT=20

La commande précédente ne concerne qu'un seul dossier Web. Si vous avez plusieurs dossiers Web, ajoutez d'autres paires PROPERTY=VALUE comme spécifié ci-dessus pour chaque dossier afin de rediriger le port de chaque dossier répertorié vers le port spécifié.

Vous pouvez supprimer la boîte de dialogue Adresse d'installation, car, si quelqu'un modifie le port dans l'interface utilisateur pendant l'installation, les dossiers Web personnalisés utilisent la valeur de la ligne de commande.

Comment installer à la racine d'un site Web ?

Pour installer à la racine d'un site Web, par exemple, c:\Inetpub\wwwroot, affectez à la propriété VirtualDirectory la valeur d'une chaîne vide, soit dans le projet d'installation Web, soit pendant l'installation.

Comment installer un ServicedComponent dans le GAC et le configurer dans le catalogue COM+ ?

Si vous essayez d'installer un ServicedComponent dans le GAC (Global Assembly Cache) et de le configurer dans le catalogue COM+, l'erreur de compilation suivante risque d'être générée :

"Unable to build custom action named 'Primary output from RegServer (Active)' because the file's Folder property is set to Global Assembly Cache."

Cette installation n'est pas prise en charge, parce que les assemblys dans le GAC ne sont pas toujours disponibles (validés dans le GAC) lorsque les actions personnalisées sont exécutées.

La solution consiste à insérer votre code dans des fichiers différents et votre code d'action personnalisée dans un fichier qui n'est pas placé dans le GAC. Il n'est pas toujours possible de distribuer le code de cette façon.

Comment exécuter automatiquement mon programme après l'installation ?

  1. Créez un fichier .vbs contenant le code suivant :

    Set WshShell = CreateObject("WScript.Shell")
    WshShell.Run """" & Property("CustomActionData") & """",7,False
    Set WshShell = Nothing
    
  2. Ouvrez votre projet d'installation et l'Éditeur des actions personnalisées.

  3. Sélectionnez le nœud Valider ; cliquez avec le bouton droit et ajoutez une nouvelle Action personnalisée.

  4. Parcourez le système de fichiers pour ajouter le fichier .vbs créé à l'étape 1.

  5. Modifiez la propriété CustomActionData en ajoutant les éléments suivants, où VotreApplication.exe désigne le nom de votre fichier d'application de démarrage :

    [TARGETDIR]VotreApplication.exe

Comment créer un lien de désinstallation sur mon raccourci ?

  1. Dans le répertoire de votre projet d'installation, créez un fichier Uninstall.bat.

  2. Dans votre projet d'installation, copiez la propriété ProductCode (une valeur comme [12345678-1234-1234-1234-123412341234]).

  3. Modifiez Uninstall.bat en insérant une ligne contenant les éléments suivants, où CodeProduit désigne la valeur copiée à l'étape 2 :

    Msiexec /x CodeProduit

  4. Ajoutez Uninstall.bat au dossier d'application de votre projet d'installation.

  5. Cliquez avec le bouton droit sur Uninstall.bat et sélectionnez Créer un raccourci pour créer un raccourci.

  6. Placez le raccourci dans le dossier du menu Démarrer approprié dans le projet d'installation.

  7. Renommez le raccourci par « Désinstaller <NomApplication> », par exemple.

Où trouver des exemples d'utilisation des projets d'installation ?

Consultez Procédures pas à pas relatives au déploiement de Windows Installer pour obtenir des exemples d'utilisation des projets d'installation.

Comment planifier le déploiement d'applications .NET Framework ?

Vous trouverez dans ce guide les informations dont vous aurez besoin pour planifier et implémenter, de manière efficace, le déploiement de vos applications .NET Framework : Déploiement d'applications .NET Framework.

Où télécharger le Kit de développement Windows Installer ?

Vous pouvez télécharger le Kit de développement Windows Installer à partir du site Web du Kit de développement Platform SDK :

https://www.microsoft.com/downloads/details.aspx?familyid=a55b6b43-e24f-4ea3-a93e-40c0ec4f68e5&displaylang=en

Où obtenir des mises à jour et de l'aide pour Crystal Reports ?

Les mises à jour du logiciel et les modules de fusion peuvent être installés à partir de la page « Downloads » du site Web BusinessObjects.com :

http://support.businessobjects.com/fix/downloads_updates.asp

Où obtenir un programme d'amorçage pour faciliter l'installation du .NET Framework avec mon application ?

Un exemple du programme d'amorçage Setup.exe de Microsoft .NET Framework se trouve à l'emplacement suivant :

https://www.microsoft.com/downloads/details.aspx?familyid=bf253cfd-1efc-4fc5-ba7e-6a6f21403495&displaylang=en

Le plug-in du programme d'amorçage Visual Studio .NET Framework se trouve à l'emplacement suivant :

http://workspaces.gotdotnet.com/vsboot

Comment résoudre des messages d'erreur « Erreur de génération irrécupérable » ?

Si vous recevez un message d'erreur « Erreur de génération irrécupérable » lorsque vous générez des projets de configuration et de déploiement, lisez l'article suivant :

« PROBLÈME : Message d'erreur "Erreur de génération irrécupérable" lors de la génération de projets de configuration et de déploiement » à l'adresse https://support.microsoft.com/?id=329214.

Comment résoudre des messages d'erreur de validation ?

Si vous recevez des messages d'erreur, tels que An error occurred when validating. HRESULT = '80040155, consultez l'article « PROBLÈME : Le message d'erreur « Erreur de génération irrécupérable » s'affiche lors de la génération de projets de configuration et de déploiement » à l'adresse https://support.microsoft.com/?id=329214 et suivez les étapes de la section « Inscriptions manquantes ».

Comment modifier le service IIS pendant le déploiement avec des actions personnalisées ?

L'article « Modifying Internet Information Services During Deployment with Custom Actions », disponible à l'adresse https://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtchusingcustomactionstomodifyinternetinformationserverduringdeployment.asp?frame=true, explique comment résoudre plusieurs problèmes. Notamment :

  • la modification des paramètres d'un dossier IIS qui ne sont pas disponibles sur un dossier Web dans l'Éditeur du système de fichiers ;

  • le déploiement d'une application hybride qui utilise à la fois Visual Basic 6 et Visual Basic .NET (ou versions ultérieures) ;

  • les changements dans le déploiement d'applications Visual Studio .NET (ou versions ultérieures) par rapport aux applications Visual Basic 6.

Où trouver des informations à propos du « déploiement No-Touch » ?

Consultez « Déploiement No-Touch dans le .NET Framework » (en anglais) à l'adresse https://msdn.microsoft.com/library/en-us/dv_vstechart/html/vbtchno-touchdeploymentinnetframework.asp.

Comment déployer des applications ASP.NET ?

Pour plus d'informations sur le déploiement d'une application ASP.NET à l'aide de Visual Studio .NET, consultez Deploying an ASP.NET App Using Visual Studio .NET (en anglais).

Une fois l'installation sur Windows 2000 terminée, l'application échoue et un avertissement indique que MDAC 2.8 est requis

Toutes les applications qui font référence à l'espace de noms System.Data possèdent une dépendance à MDAC (Microsoft Data Access Components), version 2.8 ou ultérieure. Dans la plupart des cas, le fichier est déjà installé dans le cadre du système d'exploitation. Sur Windows 2000 Service Pack 3 et version ultérieure, il peut s'avérer nécessaire d'installer ce composant avec l'application. Pour ce faire, ajoutez-le au package du programme d'amorçage et téléchargez le fichier sur le site Microsoft lors de l'installation. Pour plus d'informations, consultez Déploiement des composants requis (Visual Studio).

Articles connexes de la Base de connaissances

Les articles suivants de la Base de connaissances fournissent des informations sur les problèmes de déploiement de Windows Installer :

Voir aussi

Concepts

Déploiement et dépendances

Autres solutions de déploiement

Référence

VirtualDirectory, propriété

Autres ressources

Déploiement d'applications et de composants

Procédures pas à pas relatives au déploiement de Windows Installer