Manifest Fragen
Manifest Fragen
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.
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.
Using Qt 4.3.1 (Linux and Windows)
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
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:
Geht aber nicht 
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>Using Qt 4.3.1 (Linux and Windows)
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
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?
Also bleibt auch unter Windows das Setzen der Path-Variable der einzige Weg?
Zuletzt geändert von Bagstone am 3. April 2008 19:22, insgesamt 2-mal geändert.
Using Qt 4.3.1 (Linux and Windows)
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
*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...
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...
Using Qt 4.3.1 (Linux and Windows)
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
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.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
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 ...
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 ...
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.
Naja wie auch immer, ich denke Christian hat recht, falsches Forum, trotzdem bin ich dankbar für die Aufklärungen hier.
Using Qt 4.3.1 (Linux and Windows)