Extrahieren von Dateien aus Modul
Alles was ich will ist ein Befehlszeilen-Werkzeug, das extrahieren von Dateien aus einem merge-Modul (.msm) auf die Platte. Anders gesagt, ich will das gleiche "administrative Installation" - Funktion, die möglich ist, für ein MSI:
msiexec /a myProduct.msi TARGETDIR="C:\myInstallation" /qn
Den oben genannten funktioniert nur auf einem msi (in der Nähe von wie ich sagen kann). So, um den gleichen Effekt für ein merge-Modul, ich versuche msidb.exe und orca.exe Die Dokumentation zu orca-Staaten:
Viele merge-Modul-Optionen
über die Befehlszeile angegeben...Extrahieren von Dateien aus einem Merge-Modul
Orca unterstützt drei verschiedene Methoden
für das extrahieren von Dateien, die in einer
merge-Modul. Orca-extrahieren
einzelne CAB-Datei, und extrahieren Sie die Dateien
in ein Modul Struktur und extrahieren Sie die
Dateien in ein Quell-Bild, sobald es hat
zusammengeführt wurden in eine Ziel-Datenbank...Extrahieren Von Dateien
Zum extrahieren der einzelnen Dateien aus einem
merge-Modul, verwenden Sie die... -x - ... - option auf die
Befehl-Linie, wo ist die
gewünschten Pfad zu dem neuen Verzeichnis
Baum.Den angegebenen Pfad als Stammverzeichnis
Pfad für die extrahierten Dateien. Alle
Dateien werden extrahiert aus der CAB-Datei
eingebettet in das Modul und platziert in
der angegebene Pfad. Das Verzeichnis
layout für die extrahierten Dateien
auf der Grundlage der directory-Baum des
merge-Modul.
Es klingt wie das, was ich brauche. Aber wenn ich es versuche, orca einfach öffnet Sie mit einem editor (mit Infos über die msm, die ich angegeben) und macht dann nichts. Ich habe versucht eine Vielzahl von Kommando-Zeilen, in der Regel beginnend mit diesem:
orca -x theDirectory theModule.msm
Benutze ich "theDirectory" als was auch immer leere Ordner, die ich möchte. Wie ich schon sagte - es hat nicht alles tun.
Dann habe ich versucht msidb, wo ein paar versuche die ich gemacht habe, wie folgt Aussehen:
msidb -d theModule.msm -w {Lagerung}
msidb -d theModule.msm -x-MergeModule.Schrank
Im ersten Fall, ich weiß nicht, was für {Speicher}. Im zweiten Fall, es stellt sich heraus, dass die Zeichenkette "MergeModule.CABinet" ist erforderlich (es ist ein reservierter name). Allerdings werden die extrahierten Kabinett nicht die Erhaltung der Datei-Hierarchie oder eine "normale" Datei-Namen; also ich kann es nicht verwenden für meine Zwecke.
Kann mir jemand erklären, was ich falsch mache mit dem Kommandozeilen-Optionen? Gibt es andere Tools, die das können?
- Heath Stewart hat ein tool geschrieben, welches extrahiert Dateien von patches (MSP). Wird es auf MSMs? Ich habe keine Ahnung, aber es ist einen Versuch Wert: blogs.msdn.com/heaths/archive/2006/04/07/571138.aspx
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die decompiler-tool im Lieferumfang von WiX (genannt Dunkel), zu dekompilieren der merge-Modul und entpacken Sie die Dateien:
Dateien erhalten extraced der angegebene Pfad in der -x parameter.
Hinweis: Die Dateien extrahiert mit dem angegebenen Namen in der Datei-Tabelle der installation der Datenbank, das kann eigentlich nicht sein, die Datei-Namen verwendet, wenn die Dateien tatsächlich installiert bekommen. Wenn Sie brauchen, extrahieren Sie die Dateien mit dem eigentlichen Dateinamen, siehe meine andere Antwort auf diese Frage: Extrahieren von Dateien aus Modul
Musste ich einfach tun dies, indem Sie ein leeres msi und dann verwenden Sie Orca, um zu versuchen, um merge-Modul in mein msi extrahieren und dann die Dateien.
Erstellen Sie eine leere .msi. Ich verwendet WiX 3.6 zu schaffen .msi und unten ist die minimal-Quelle. Ich nannte es "leer.msi".
Verwenden Orca extrahieren Sie die Dateien aus der merge-Modul.
Die Dateien extrahiert werden, um das directory angegeben von dem-x-parameter (in diesem Fall .\xdir).
Beachten Sie, dass der Wert für den-f-parameter "ProductFeature" entspricht dem Namen der Funktion angegeben, die in die msi-Datei vor.
-m
führt den merge-Modul,-f
Mitarbeiter es mit einem feature-x
dann die Dateien extrahiert.Den DeploymentToolsFoundation Klasse Bibliothek in WiX, hat ein InstallPackage Klasse mit einem ExtractFiles () - Methode, die soll genau das tun, was Sie wollen, aber nicht für den Merge-Module. Dies scheint ein bug.
Das folgende PowerShell-Skript, die verwendet DTF Zugriff auf das TAXI in die mergemodule, sollte das tun, was Sie wollen. Entschuldigt, wenn das scripting ist ein bisschen wackelig, ich bin neu in der PowerShell.
Ich hatte ein ähnliches problem, aber ich ging, Sie aus einer anderen Richtung.
Ich installiert InstallSheild Express kam mit einer früheren version von Visual Studio erstellt ein neues Projekt, aber ich habe nur Hinzugefügt werden, die MSM-Datei, die ich benötigte.
Nach dem kompilieren und ausführen meiner neuen installieren, ich war in der Lage, abrufen von Dateien, die MSM-Datei enthalten.
MSI2XML