2009-03-24 4 views
0

J'ai développé un fournisseur WMI en C# en utilisant l'espace de noms System.Management.Instrumentation. J'ai besoin d'installer le fournisseur dans le GAC et l'enregistrer avec le référentiel WMI en utilisant MSI. Comment pourrais-je accomplir cela avec WIX?Utilisation de WIX pour installer un fournisseur WMI

Répondre

2

Vous aurez besoin d'une action personnalisée pour enregistrer le fournisseur WMI. Nous avons pensé à ajouter un CustomAction standard à la boîte à outils WiX pour le supporter, mais nous n'avons pas encore eu le temps de le faire. Probablement pas mal de travail.

+0

Est-il possible de le faire sans appeler InstallUtil.exe? Nous voulons éviter d'utiliser InstallUtil car il manque de support pour les scénarios de restauration. –

+0

Ouais, InstallUtil.exe ne devrait jamais être utilisé pour CustomActions. L'utilisation de DLL qui lisent les tables du MSI est la manière dont tous les outils CustomActions WiX sont implémentés. Vous pourriez les vérifier. –

0

Vous pouvez vérifier la classe AssemblyInstaller dans le framework .NET. http://msdn.microsoft.com/en-us/library/System.Configuration.Install.AssemblyInstaller_methods.aspx

Vous pouvez créer une action personnalisée gérée qui utilise les méthodes Install() et Commit() pour générer un fichier mof de votre fournisseur WMI et l'installer. Vous pouvez également utiliser les méthodes Uninstall() et Commit() dans votre CustomAction de désinstallation.

Je ne sais pas si c'est la manière officielle recommandée pour accomplir cette tâche. Cela ressemble à une auto-inscription que je n'aime pas utiliser dans un installateur. Cependant, la seule façon que je connaisse pour obtenir des définitions de classe/instance statiques enregistrées dans la base de données de WMI est de compiler un fichier MOF. Le MOF contenant vos informations de classe/instance est l'endroit où votre assembly de fournisseur WMI est référencé.

La classe AssemblyInstaller sait comment générer et compiler votre fichier MOF pour vous. Il existe également une API native (IMofCompiler :: CompileFile): http://msdn.microsoft.com/en-us/library/aa390867(v=vs.85).aspx qui peut être utilisée pour compiler votre fichier MOF.