Seite 1 von 2
Manifest Fragen
Verfasst: 3. April 2008 17:13
von Bagstone
Hi,
ich habe ein Projekt, dass an verschiedene Leute verteilt werden soll. Die Windows-Version ist mit MinGW kompiliert. Da Qt- und weitere Libaries mitgegeben werden, machen wir es derzeit so, dass wir die PATH-Variable während des Programmaufrufs um das Library-Verzeichnis erweitern.
Unter Windows gibt's ja nun den weitaus besseren Ansatz, Manifest-Dateien zu erstellen. Dazu die Fragen:
1) Funktionieren die mit MinGW-erzeugten Executables?
2) Müssen die Manifest-Dateien einkompiliert werden ins Executable - und wenn ja warum?
3) Gibt es VERSTÄNDLICHE Dokumentationen zu Manifest, oder evtl. sogar Beispiele? Finde da nicht wirklich viel, und wenn dann nur Unbrauchbares für jemanden, der mit keinem der XML-Tags aus einem Manifest File was anfangen kann.
Verfasst: 3. April 2008 17:25
von Christian81
Wenn Du mingw oder msvc < VS 2005 benutzt brauchst Du Dir um den Müll glücklicherweise keine Gedanken zu machen.
Verfasst: 3. April 2008 17:42
von Bagstone
Ich benutze MinGW. Warum brauche ich mir keine Gedanken um den Müll zu machen?
Also wenn ich die MSDN Referenzseiten richtig verstanden habe, müsste das hier gehen:
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32" name="mein.tolles.programm" version="0.9.8.0"/>
<file name="..\lib\lib1.dll"/>
<file name="..\lib\lib2.dll"/>
</assembly>
Geht aber nicht

Verfasst: 3. April 2008 17:49
von Christian81
Weil mingw das glücklicherweise nicht verwendet.
Verfasst: 3. April 2008 19:15
von Bagstone
Nur damit ich das richtig verstehe: Ich kann nicht irgendein Executable, mit Compiler X hergestellt, mit Manifest verwenden, sondern es muss mit Visual Studio > 2005 kompiliert werden?
Also bleibt auch unter Windows das Setzen der Path-Variable der einzige Weg?
Verfasst: 3. April 2008 19:17
von Christian81
Richtig - allerdings helfen manifests auch nicht mit der PATH-Variable...
Verfasst: 3. April 2008 19:22
von Bagstone
*grad oben editiert als du geantwortet hast*
Grade das hier gefunden:
http://lists-archives.org/mingw-users/0 ... -file.html
So würde das dann doch funktionieren oder?
Unser Problem ist: In Windows wird zuerst in c:\windows\system32, dann in PATH nachgeschaut für Libraries. D.h. dass ein User mit z.B. Qt 4.0 Libraries an anderer Stelle unser Programm nicht laden kann...
Verfasst: 3. April 2008 19:26
von Christian81
Ob das geht weiss ich nicht - aber glaube nicht so recht dass der Müll die Reihenfolge irgendwie beeinflussen kann.
Eine Lib wird zuerst im Pfad des executables gesucht, erst dann in PATH.
Verfasst: 3. April 2008 19:49
von Bagstone
Verfasst: 3. April 2008 20:13
von Christian81
Wenn Du wirklich wegen der Eitelkeit das die DLLs nicht im Verzeichnis der Exe liegen sollen, die dir Dependency zu den Mainifests einbauen willst solltest du wohl eher in einer msdn Newsgroup nachfragen anstatt hier. Mit Qt hat das nämlich nicht wirklich was zu tun.
Verfasst: 3. April 2008 20:15
von BartSimpson
Ach die Sache mit den manifesten ist gar nicht mal so schlecht.
Wenn man es richtig mache endlich keine DLL Hölle mehr:)
Nur leider passen die Manifeste von Qt noch nicht ganz, da muss man immer etwas Hand anlegen, aber denn geht das 1a:)
Verfasst: 3. April 2008 20:26
von Bagstone
Hast natürlich recht, sorry für das falsche Forum Christian. Trotzdem danke für deine Antworten. Aber solange ich einen Strohhalm sehe, klammer ich mich daran
Bart, "Manifeste von Qt" macht mich stutzig, weißt du irgendwas was mir weiterhilft?
Verfasst: 3. April 2008 20:26
von Christian81
So schlimm ist es nicht? Ich kann z.B. keine Lib (msavcrt80.dll) per LoadLibraryA() laden nur weil dieses blöde Ding ein manifest hat. Finde ich sehr sinnig...
Verfasst: 4. April 2008 10:39
von RHBaum
DIe runtime Libs kannst doch sowieso ned per Hand (also loadlibrary) laden !?
Und das manifest deckt auch wirklich nur runtimes ab.
Ob man dlls, die per bindelib geladen werden, ueber nen manifest steuern kann, keine Ahnung, klingt aber abenteuerlich ^^
Das mit den QT und fremdlibs iss nen Problem .... deshalb liefern wir hier immer die QT dlls parallel zur exe aus.
Nen anderen gangbaren weg ham wir auch noch ned gefunden ....
Ciao ...
Verfasst: 4. April 2008 10:48
von Bagstone
Wir haben vor unserem Programm ein Tool geschaltet, welches statisch gegen Qt kompiliert ist, und neben Update-Checks eben auch überprüft, ob die jeweilige Version des Hauptprogramms passende Libraries findet, d.h. es setzt die Pfade dafür und startet dann als QProcess. Läuft eigentlich ziemlich gut, nur unter Windows dachten wir halt, Manifest wäre "besser".
Naja wie auch immer, ich denke Christian hat recht, falsches Forum, trotzdem bin ich dankbar für die Aufklärungen hier.