2009-11-02 7 views
5

Aus irgendeinem Grund liefern wir ein Produkt mit unserer eigenen Installations-GUI, dh wir werden die msi-Installation im Hintergrund ausführen.Wie interaktiv eine stillschweigende Installation von MSI? (Fortschrittsdaten und abbrechen)

Mithilfe der MSI-API "MsiInstallProduct" kann ich das Produkt automatisch installieren, aber ich habe keine Ahnung, wie ich die Fortschrittsdaten dieser Installation abrufen kann und wie ich sie abbrechen kann.

Hat jemand ein paar Ideen?

Antwort

6

UPDATE: Dieses Tool von Wise heruntergeladen werden leider nicht mehr. Ich bin mir nicht sicher, ob es in Ordnung ist, es auch zu verteilen. Es schien ein kostenloses Tool zu sein, das als Teil ihrer Wise Package Studio Suite vertrieben wurde, aber ich glaube nicht, dass es Open Source ist. Ich wünschte, sie würden es als Open-Source-Tool veröffentlichen.

Die Wise Verpackungsprodukte wurden aufgrund einer Reihe von legal issues eingestellt.


Ich glaube, Sie den Fortschritt über den MSI-API zu bekommen, aber wenn ich Sie wäre, würde ich nur zeigen, die Fortschrittsbalken aus dem MSI selbst nach den über msiexec.exe installieren aufgerufen wird.

MSI unterstützt verschiedene Installationsebenen (vollständig, komplett leise, einfache GUI, reduzierte GUI usw.). In Ihrem Fall klingt es so, als wollten Sie eine grundlegende Benutzeroberfläche. Daraus ergibt sich ein Fortschrittsbalken, wo Sie auf die Schaltfläche Abbrechen verstecken kann, und optional einen Abschluss modaler Dialog zeigen:

leise mit Fortschrittsbalken installieren, keine Löschtaste und keine modalen Dialogfeld am Ende:

msiexec.exe /I "Test.msi" /QB-! 

Um zu vermeiden, dass diese dummen msiexec-Befehlszeilen manuell erstellt werden müssen, verwenden Sie das msi-Befehlszeilengenerator-Tool von Wise: http://www2.wise.com/filelib/WICLB.exe (nicht mehr verfügbar).

enter image description here

+0

Ich werde Ihnen eine Stimme erhalten, aber nicht auf meine Antwort. Wir verwenden nicht die MSI-GUI, weil sie nicht zum Stil unseres Produkts passt. Deshalb bieten wir einen cooleren Fortschrittsbalken dafür. Alles, was ich brauche, sind die Fortschrittsdaten, um unsere Messlatte zu setzen. Die grundlegende GUI der MSI ist nicht akzeptabel. Und ich kann es immer noch nicht von der reinen API abbrechen, oder? – redjackwong

+1

Hier ist ein Beispiel für die Arbeit mit MSI Billboards und Fortschrittsbalken: http://sourceforge.net/projects/msiprogramming/. Wenn dies nicht das ist, was Sie brauchen, schauen Sie sich vielleicht die Ressourcen an: http: //www.installsite.org –

+0

Denken Sie daran, auf die Schaltfläche "Alle Dateien anzeigen" zu klicken (andernfalls erhalten Sie nur eine Demo). –

3

Sie benötigen einen externen UI-Handler MsiSetExternalUI oder MsiSetExternalUIRecord vor MsiInstallProduct angeben (letzteres ist schöner, aber eine höhere MSI-Version Anforderung). Die von Ihnen angegebene Funktion wird für jede Nachricht aufgerufen, die Windows Installer für Sie verarbeiten soll. Dies gibt Ihnen die Daten und eine Chance zu reagieren, sagen Sie es zu stornieren. Wenn Sie MSI 4.5 oder höher benötigen, können Sie eine eingebettete externe UI-Handler-DLL verwenden, für die kein Bootstrap erforderlich ist.

+0

Vielen Dank, MsiSetExternalUI funktioniert für diesen Fall ~ – redjackwong