2009-03-24 6 views

Antwort

2

Sie benötigen eine CustomAction, um den WMI-Anbieter zu registrieren. Wir haben darüber nachgedacht, dem WiX-Toolset eine Standard-CustomAction hinzuzufügen, um dies zu unterstützen, hatten aber noch nicht die Zeit dazu. Wahrscheinlich ziemlich viel Arbeit.

+0

Ist es möglich, dies ohne Aufruf von InstallUtil.exe zu tun? Wir möchten InstallUtil nicht verwenden, da es keine Unterstützung für Rollback-Szenarien gibt. –

+0

Ja, InstallUtil.exe sollte niemals für CustomActions verwendet werden. Die Verwendung von DLLs, die Tabellen aus dem MSI lesen, ist die Art und Weise, wie alle CustomActions des WiX-Toolsets implementiert werden. Sie könnten sie überprüfen. –

0

Sie möchten vielleicht die AssemblyInstaller-Klasse im .NET-Framework auschecken.

Sie können eine verwaltete benutzerdefinierte Aktion erstellen, die die Methoden Install() und Commit() verwendet, um ein MOF Ihres WMI-Anbieters zu generieren und zu installieren. Sie können auch die Uninstall() - und Commit() -Methoden in Ihrer Deinstallations-CustomAction verwenden.

Ich weiß nicht, ob dies der offizielle empfohlene Weg ist, um diese Aufgabe zu erfüllen. Es fühlt sich an wie Selbstregistrierung, die ich nicht gerne in einem Installer verwende. Die einzige Möglichkeit, statische Klassen-/Instanzdefinitionen in der WMI-Datenbank zu speichern, besteht jedoch darin, eine MOF-Datei zu kompilieren. In der MOF mit Ihren Klassen-/Instanzinformationen wird auf Ihre WMI-Provider-Assembly verwiesen.

Die AssemblyInstaller-Klasse weiß, wie Sie Ihre MOF-Datei für Sie generieren und kompilieren können. Es gibt auch eine native API (IMofCompiler :: CompileFile): http://msdn.microsoft.com/en-us/library/aa390867(v=vs.85).aspx, die verwendet werden kann, um Ihre MOF-Datei zu kompilieren.

Verwandte Themen