4

Je crée un programme d'installation à l'aide d'InstallShield 2010 (MSI de base) qui comporte deux fonctions.Installation de fichiers dans x64 «Program Files» à partir de x86 msi

Premier long métrage se compose de:

  • principale application .NET compilé comme x86,
  • certains x86 natif tiers dll qui sont utilisés par l'application principale (versions x64 ne sont pas disponibles).

La deuxième fonctionnalité contient un seul composant qui est une extension pour MS Reporting Services compilé sous AnyCPU.

Pendant la séquence d'interface utilisateur, j'utilise l'action personnalisée InstallScript pour énumérer toutes les instances Reporting Services disponibles à partir des arborescences de registre x86 et x64.

L'utilisateur est invité à sélectionner l'instance sur laquelle il souhaite déployer notre extension. En fonction de l'instance sélectionnée, je vérifie le registre pour l'emplacement réel de Reporting Services dans le système de fichiers, qui est généralement quelque chose comme "C: \ Program Files \ Microsoft SQLServeur \ MSSQL.2 \ Reporting Services" et qui stocke cette valeur dans une propriété MSI. Ensuite, en utilisant l'action Définir l'annuaire, je mets le répertoire de destination d'un composant (notre extension) à la valeur de cette propriété MSI.

Tout s'installe parfaitement bien, sauf si vous avez essayé de l'installer pour x64 Reporting Services, dans ce cas les fichiers d'extension sont installés au mauvais emplacement. Même si la propriété MSI est définie pour corriger le chemin "C: \ Program Files \ MicroSoft ..." (j'ai vérifié le journal msi), il semble que le système redirige automatiquement vers "Program Files (x86)".

Y a-t-il une solution possible pour résoudre ce problème?

+1

Quelqu'un at-il une solution pour cela? – rplusg

Répondre

0

Enfin résolu ce problème moi-même sans créer 64 bits MSI en utilisant des actions personnalisées InstallScript.

Première action personnalisée pour installer:

  • Copiez manuellement les fichiers nécessaires à l'endroit désiré (InstallScript peut accéder à programme x64 fichiers)
  • Enregistrer cet endroit dans le registre comme un élément clé de cette fonction à utiliser lors de la désinstallation

Deuxième action personnalisée pour désinstaller:

  • Lire l'emplacement d'installation à partir du Registre (ne pas utiliser la recherche du système pour obtenir cette valeur en raison de ce sera automatiquement traduit par WindowsInstaller à « ProgramFiles (x86) »)
  • Supprimer les fichiers
3

Si vous devez installer dans le dossier ProgramFiles 64 bits, utilisez un MSI 64 bits.

0

Vous pouvez modifier le INSTALLDIR propriété à ProgramFile64 plutôt que ProgramFiles, cela vous aidera à installer sur le chemin souhaité, puisque votre application est 32 bits de sorte que le chemin sera C: \ ProgramFiles (x86) \ Votre nom de l'entreprise \ Votre nom de produit avec cela ont vous avez rendu vos composants compatibles 64 bits?

Questions connexes