Frage

Ich bin ein entkoppelten WMI-Anbieter in einer Klassenbibliothek zu erstellen. Alles, was ich gelesen habe, zeigt in Richtung einschließlich etwas in diese Richtung:

[System.ComponentModel.RunInstaller(true)]
public class MyApplicationManagementInstaller : DefaultManagementInstaller { }

Ich sammle das Ziel dieser Installation ist, weil die Windows-WMI-Infrastruktur bewusst sein, die Struktur meiner WMI-Provider muss, bevor es verwendet wird.

Meine Frage ist - wenn dieser „Installateur“ ran? MSDN sagt, dass der Installer „bei der Installation einer Baugruppe“ aufgerufen wird, aber ich bin nicht sicher, was das bedeutet, oder, wenn es im Rahmen einer Klassenbibliothek, die ein WMI-Provider passieren würde.

Ich hatte den Eindruck, dass dies ein automatisierter Ersatz für manuell ausgeführt wurde InstallUtil.exe gegen die Baugruppe den WMI-Anbieter enthält, aber Änderungen, die ich an den Provider vornehmen, werden von der Windows-WMI-Infrastruktur nicht erkannt wenn ich manuell InstallUtil von der Eingabeaufforderung. Ich kann während der Entwicklung meiner eigenen Maschine tue dies auf, aber wenn eine Anwendung der Provider auf andere Maschinen eingesetzt wird - was dann

Es scheint, dass diese RunInstaller / DefaultManagementInstaller Kombination nicht richtig funktioniert - richtig

War es hilfreich?

Lösung

Wie ich verstehe, ist DefaultManagementInstaller von installutil.exe läuft - wenn Sie es nicht sind, wird die Klasse in WMI nicht installiert. Vielleicht ist es möglich, ein ‚Setup-Projekt‘ oder ‚Installer-Projekt‘, die es läuft zu schaffen, aber ich bin mir nicht sicher, weil ich Visual Studio nicht verwenden.

[Bearbeiten]

für Remote-Installation, eine Option sein könnte Installutil mit / MOF-Option zu verwenden MOF für die Montage zu erzeugen und verwenden mofcomp es zu WMI zu bewegen.

Andere Tipps

Ich benutze so etwas wie dieses InstallUtil programmatisch zu nennen:

    public static void Run( Type type )
    {
        // Register WMI stuff
        var installArgs = new[]
                                   {
                                       string.Format( "//logfile={0}", @"c:\Temp\sample.InstallLog" ), "//LogToConsole=false", "//ShowCallStack",
                                       type.Assembly.Location,
                                   };

        ManagedInstallerClass.InstallHelper( installArgs );
    }

Rufen Sie diese von Ihrem Main () -Methode.

-Dave

Danke Uros. Es sieht wie alle diese RunInstaller und DefaultManagementInstaller tun, ist es Ihnen ermöglichen, InstallUtil erfolgreich gegen die Anordnung zu laufen. Das ist seltsam, weil ich fast sicher bin, dass ich nicht über InstallUtil wusste an dem Punkt, wo ich zusammengestellt hatte, und spielte mit meinem ersten WMI-Anbieter.

Ich werde die MOF-Datei suchen, um mit und für meinen eigenen Gebrauch kann ich nur die InstallUtil Kommandozeile als Postbuildereignis in VS ausgeführt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top