2009-02-20 5 views
0

J'ai une application qui utilisera un périphérique dans certains cas (c'est-à-dire une imprimante). Fondamentalement, dans un bureau, cette imprimante sera utilisée, et dans un autre bureau, cette imprimante ne sera jamais utilisée.Enregistrement conditionnel de certaines DLLs pendant le processus d'installation. (vague)

La fonctionnalité permettant d'utiliser l'imprimante est placée dans le code de l'application et les DLL qui communiquent avec l'imprimante sont référencées dans le code. Ainsi, les DLL font partie du package d'installation .msi.

Cependant, ces dll ne peuvent pas être enregistrés pendant l'installation si le prérequis (un groupe de pilotes pour l'imprimante, fourni par le fabricant en tant qu'exe d'installation unique) n'est pas installé. Le programme d'installation pour les pilotes est d'environ 50M.

Je ne souhaite pas inclure un fichier 50M supplémentaire dans le package d'installation pour le bureau qui n'utilisera jamais l'imprimante. Quelles sont les solutions de contournement possibles pour le problème? En fin de compte, je voudrais une option pour passer d'une manière ou d'une autre l'enregistrement de ces DLL pendant l'installation. Mais je ne sais pas comment aborder cela.

Je pense que je pourrais avoir une compilation conditionnelle dans le code. Mais cela impliquerait une quantité importante de travail pour séparer complètement le code qui parle à ce type d'imprimante du reste du code de l'application.

Toutes les solutions possibles?

Répondre

3

Grouper les DLL devant être installées/enregistrées de manière conditionnelle d'un composant. Ensuite, dans la table Component de votre MSI, utilisez la colonne Condition pour dépendre de la propriété à définir. Dans votre MSI locator tables, configurez les lignes pour rechercher les conditions préalables et définir la propriété.

Vous pouvez en apprendre davantage à ce sujet par la lecture:

http://msdn.microsoft.com/en-us/library/aa371564(VS.85).aspx

+0

Pouvez-vous s'il vous plaît expliquer la partie « Groupe DLLs dans le composant » un peu? Est-ce juste en les plaçant dans un dossier séparé, ou plus que cela? Pour le reste, je vais essayer après le week-end. Bon que j'ai déjà passé un peu de temps à jouer avec Orca récemment). – Evgeny

+0

En fait, l'a déjà fait. J'ai juste regardé mes DLL dans 'Files', j'ai écrit 'Component', je suis allé à 'Component' et j'ai mis 'Condition' à 1 = 0. Fonctionne comme un charme =) – Evgeny

Questions connexes