Cette réponse suppose que vous utilisez un type de projet Windows Installer.
1) Créez un composant pour chaque fichier DLL, définissez-le comme fichier de clés et définissez le dossier de destination sur GlobalAssemblyCache. Cela indique à Windows Installer d'utiliser l'action standard MsiPublishAssemblies qui, à son tour, appelle Fusion pour enregistrer l'assembly dans le GAC. C'est effectivement ce que GACUTIL fait pour vous. Rappelez-vous: GACUTIL n'est pas redistribuable. Si l'assembly possède des fichiers compagnons, ajoutez-les en tant que fichiers compagnons au même composant.
2) Si votre assembly est ComVisible, créez un composant pour chaque DLL, marquez-le en tant que fichier de clés et définissez le .NET ComInterop sur true. Cela provoquera l'extraction des informations COM lors de la génération et indiquera à Windows Installer d'utiliser l'action standard MsiPublishAssemblies pour écrire les informations dans le registre. Remarque: Si vous avez un code d'utilisateur personnalisé dans la section d'enregistrement de l'assemblage, il ne sera pas capturé. C'est par MSDN que regasm /regfile
n'exécute pas ce chemin de code. Vous devrez entrer manuellement ces informations dans la vue de registre de InstallShield pour ce composant.
3) Oui, vous pouvez déployer un assembly à nom fort globalement et/ou privé. Que le privé soit vu ou non dépend de si l'assembly avec la référence a défini UseSpecific ou non.
Nice pour faire du jogging ma mémoire Chris! –