2009-12-30 4 views
0

J'ai 2 projets. Je veux créer un seul package d'installation MSI qui va installer ces deux projets.Création d'un fichier MSI pour un projet multiple

Dans mon dossier d'application, j'ai créé 2 sous-dossiers (dossier Projet A et Projet B). Ainsi, après l'installation, le projet ouputs seront Program Files \ MyProduct \ Project Un Program Files \ MyProduct \ Projet B

Le problème que j'ai est que le projet A et B références des assemblées communes. Mais ces assemblys communs sont copiés uniquement dans le dossier Project A.

Existe-t-il un moyen de forcer le msi à copier les assemblys communs dans le dossier Project A et Project B?

+1

Utilisez-vous WiX? – Joe

+0

non, modèle d'installation de Visual Studio. Je ne sais pas ce qui est WiX – pdiddy

Répondre

2

La création d'installeurs MSI à partir de Visual Studio, dans le cadre du processus de génération, n'est pas toujours la méthode la plus flexible. J'utilise personnellement NSIS car il est extrêmement puissant mais si vous cherchez à construire des installeurs MSI, je vous suggère de regarder Wix.

Je laisse rarement Visual Studio faire les choses pour moi automatiquement - J'aime être explicite quand il s'agit de déclarer quelles DLL sont installées, et où.

+0

Idem que. Le type de projet d'installation de Visual Studio est extrêmement limité. Si vous voulez faire quelque chose comme ça, vous voudrez apprendre le WiX ou acheter un produit tiers comme InstallShield. J'ai regardé brièvement WiX et j'ai trouvé que c'était assez compliqué à apprendre (parce que la norme MSI est compliquée). –

+0

J'ai aussi regardé brièvement WiX. Eh bien, semble avoir plus de flexibilité = complexité. Mais pour l'instant, ma seule option est le projet d'installation Visual Studio – pdiddy

+0

@pdiddy - Vous avez raison, la flexibilité est synonyme de complexité. Mais vous allez également créer une complexité inutile en utilisant le mauvais outil pour le travail. –

0

Dans votre projet d'installation, je suppose que vous avez deux dossiers, un pour chaque projet. Sélectionnez le dossier qui manque le fichier .dll (s) et faites un clic droit dessus, cliquez sur Ajouter-> Fichier ... et choisissez le fichier .dll que vous voulez forcer à inclure dans la sortie du projet.

+0

J'ai pensé à cela, mais est-ce la bonne façon? Je voudrais de la MSI pour détecter que la sortie du projet a été déplacée vers un dossier et qu'elle mettra la dépendance directement. Mais cela ne le fait que pour l'un des projets. Avec votre solution, quelle DLL dois-je utiliser? Je suis peut-être en train de créer une configuration dans DEBUG ou dans RELEASE, je ne veux pas avoir à ajouter manuellement le fichier bin \ Debug ou bin \ Release à chaque fois. Les assemblages communs sont également des bibliothèques de projets. – pdiddy

+0

D'après ma compréhension de MSI, il y a juste une base de données de modifications qui doivent être faites sur le système cible et l'une des tables de la base de données contient la liste des fichiers à installer. Il y a probablement de la logique dans l'interface utilisateur du projet d'installation qui détecte vos assemblages courants comme étant déjà inclus de sorte qu'il les ignore lorsque vous ajoutez le second projet. Le forcer à ajouter le fichier comme je l'ai décrit devrait forcer une autre entrée dans cette table de fichiers. –

Questions connexes