Manifest Fragen

Verschiedenes zu Qt
Bagstone
Beiträge: 31
Registriert: 20. September 2007 10:55

Manifest Fragen

Beitrag 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.
Using Qt 4.3.1 (Linux and Windows)
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wenn Du mingw oder msvc < VS 2005 benutzt brauchst Du Dir um den Müll glücklicherweise keine Gedanken zu machen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Bagstone
Beiträge: 31
Registriert: 20. September 2007 10:55

Beitrag 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 :(
Using Qt 4.3.1 (Linux and Windows)
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Weil mingw das glücklicherweise nicht verwendet.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Bagstone
Beiträge: 31
Registriert: 20. September 2007 10:55

Beitrag 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?
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:

Beitrag von Christian81 »

Richtig - allerdings helfen manifests auch nicht mit der PATH-Variable...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Bagstone
Beiträge: 31
Registriert: 20. September 2007 10:55

Beitrag 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...
Using Qt 4.3.1 (Linux and Windows)
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Bagstone
Beiträge: 31
Registriert: 20. September 2007 10:55

Beitrag von Bagstone »

Using Qt 4.3.1 (Linux and Windows)
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag 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:)
Bagstone
Beiträge: 31
Registriert: 20. September 2007 10:55

Beitrag 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?
Using Qt 4.3.1 (Linux and Windows)
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag 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 ...
Bagstone
Beiträge: 31
Registriert: 20. September 2007 10:55

Beitrag 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.
Using Qt 4.3.1 (Linux and Windows)
Antworten