Seite 1 von 1

Manifest, RES, ARC [ERLDIGT]

Verfasst: Mo, 07. Jan 2019 20:22
von Manfred
Irgendwie hatte ich mir damals die ganze Sache mit den Resourcendateien zusammengestrickt ohne wirklich genau zu wissen, was ich da gemacht/gebaut habe. (Ist heute auch nicht unbedingt besser, aber ich arbeite daran)
Bisher hatte ich für jedes Projekt alles getrennt im entsprechenden Projektverzeichnis. Aber irgendwie ist das Blödsinn, weil doch eigentlich das Grundkonzept eher gleich ist bei allen Projekten. Also dachte ich mir im Zuge der guten Neujahrsvorsätze Ordnung zu machen und zu halten. Habe also die .ARC Datei in ein übergeordnetes Verzeichnis gepackt. Die Arc Datei wird dann aus dem jeweiligen Projektverzeichnis mit einer Batchdatei erzeugt.

Code: Alles auswählen

arc /ga \übergeordnetesVerzeichnis\resourcen.arc
Somit wird die RES Datei in dem übergeordneten Verzeichnis erzeugt.
In der XPJ Datei steht dann auch unter

Code: Alles auswählen

// $START-AUTODEPEND
\übergeordnetesVerzeichnis\resourcen.res
soweit sogut
Jetzt habe ich aber bisher immer eine Manifestdatei erstellt im jeweiligen Projektverzeichnis

Code: Alles auswählen

name.exe.manifest
wie erzeuge ich die denn jetzt? Muß da der Programmname drin stehen, oder kann die beliebig heißen am Anfang? Und wo gebe ich dann an, das die eingebunden wird.
Es soll ja auch möglich sein die Manifestdatei in die RES mit einzubinden?
Oder wird eine pauschel erzeugt, die dan mit entsprechendem Namen nach der Erzeugung umkopiert wird ins jeweilige Projektverzeichnis?
Fragen über Fragen.

Re: Manifest, RES, ARC

Verfasst: Mo, 07. Jan 2019 21:45
von AUGE_OHR
Manfred hat geschrieben: Mo, 07. Jan 2019 20:22 wie erzeuge ich die denn jetzt? Muß da der Programmname drin stehen, oder kann die beliebig heißen am Anfang? Und wo gebe ich dann an, das die eingebunden wird.
Es soll ja auch möglich sein die Manifestdatei in die RES mit einzubinden?
*.ARC Datei

Code: Alles auswählen

#define MANIFEST_RESID 1
#define MANIFEST 24

USERDEF MANIFEST
  MANIFEST_RESID = FILE ".\..\RES\WIN10.MANIFEST"
*.XPJ

Code: Alles auswählen

// $START-AUTODEPEND
    RESOURCE.RES
    ...
    // $STOP-AUTODEPEND
    RESOURCE.ARC
    ...

Re: Manifest, RES, ARC

Verfasst: Di, 08. Jan 2019 11:55
von Manfred
das mit der Userdef manifest angabe klappt überhaupt nicht, egal was ich da eingebe.
wenn ich es weglasse, dann wird zumindest die RES datei erzeug.

Re: Manifest, RES, ARC

Verfasst: Di, 08. Jan 2019 12:20
von Jan
Manfred,

bei mir heißt die Manifest immer exakt so wie die zu erstellende Datei. Also z. B. meinProgramm.exe.manifest. Oder meineBibliothek.dll.manifest. Und damit klappt das immer.

Ansonsten sieht das bei mir genau so aus wie von Jimmy gepostet.

Jan

Re: Manifest, RES, ARC

Verfasst: Di, 08. Jan 2019 12:21
von Manfred
Jan,
hast Du alles in dem jeweiligen Projektverzeichnis?

Re: Manifest, RES, ARC

Verfasst: Di, 08. Jan 2019 12:22
von Jan
Ja. Aber ich kann das gleich mal mit einem anderen Verzeichnis testen.

Jan

Re: Manifest, RES, ARC

Verfasst: Di, 08. Jan 2019 12:23
von Manfred
dann tu das bitte mal. Im jeweiligen Projektverzeichnis klappt es auch. Das war aber nicht meine Eingangsbedingung.

Re: Manifest, RES, ARC

Verfasst: Di, 08. Jan 2019 12:27
von Jan
So, ich hab jetzt mal die Manifest in ein Unterverzeichnis des Projektes gelegt. Damit heißt dann die entsprechende Zeile in der .arc jetzt:

Code: Alles auswählen

MANIFEST_RESID = FILE ".\test\meinProgramm.exe.manifest" 


Ohne jede Probleme durchgelaufen. Die res liegt wie gehabt in .debug. Oder willst Du die auch raus haben? da weiß ich nicht, ob oder wie das geht. Ich wüßte aber auch nicht, wieso man das manchen wollte.

Jan

Re: Manifest, RES, ARC

Verfasst: Di, 08. Jan 2019 12:31
von Tom
Den doppelten Suffix nicht vergessen, das ist in Jimmys Beispiel falsch (Win10.EXE.MANIFEST).

Re: Manifest, RES, ARC

Verfasst: Di, 08. Jan 2019 12:36
von Manfred
die arc datei wird wie oben erwähnt direkt aus dem jeweiligen Projektverzeichnis aufgerufen.
in der ARC steht folgendes:

Code: Alles auswählen

#define MANIFEST_RESID 1
#define MANIFEST 24

USERDEF MANIFEST
  MANIFEST_RESID = FILE "meinprogramm.exe.manifest"

ICON
	  1 = "programm.ico"
	
	6001 = "q:\zusaetze_gui\BITMAP\bearbeiten\neu_disable.ico"
	6002 = "q:\zusaetze_gui\BITMAP\bearbeiten\neu_enable.ico"
	6024 = "q:\zusaetze_gui\BITMAP\bearbeiten\papierkorb_disable.ico"
    6025 = "q:\zusaetze_gui\BITMAP\bearbeiten\papierkorb_enable.ico"
	
BITMAP
   5001 = "q:\zusaetze_gui\BITMAP\satzzeiger\satz_anfang_disable.bmp"
   5002 = "q:\zusaetze_gui\BITMAP\satzzeiger\satz_anfang_enable.bmp"
   5003 = "q:\zusaetze_gui\BITMAP\satzzeiger\satz_rueck_disable.bmp"
   5004 = "q:\zusaetze_gui\BITMAP\satzzeiger\satz_rueck_enable.bmp"
   5005 = "q:\zusaetze_gui\BITMAP\satzzeiger\satz_vor_disable.bmp"
   5006 = "q:\zusaetze_gui\BITMAP\satzzeiger\satz_vor_enable.bmp"
   5007 = "q:\zusaetze_gui\BITMAP\satzzeiger\satz_ende_disable.bmp"
   5008 = "q:\zusaetze_gui\BITMAP\satzzeiger\satz_ende_enable.bmp"
   

   5020 = "q:\zusaetze_gui\BITMAP\bearbeiten\speichern_disable.bmp"
   5021 = "q:\zusaetze_gui\BITMAP\bearbeiten\speichern_enable.bmp"
   5022 = "q:\zusaetze_gui\BITMAP\bearbeiten\abbruch_disable.bmp"
   5023 = "q:\zusaetze_gui\BITMAP\bearbeiten\abbruch_enable.bmp"
   5024 = "q:\zusaetze_gui\BITMAP\bearbeiten\papierkorb_disable.bmp"
   5025 = "q:\zusaetze_gui\BITMAP\bearbeiten\papierkorb_enable.bmp"
   5026 = "q:\zusaetze_gui\BITMAP\bearbeiten\bearbeiten_disable.bmp"
   5027 = "q:\zusaetze_gui\BITMAP\bearbeiten\bearbeiten_enable.bmp"

   7001 = "q:\zusaetze_gui\BITMAP\sonstige\suchen_disable.bmp"
   7002 = "q:\zusaetze_gui\BITMAP\sonstige\suchen_enable.bmp"
   7003 = "q:\zusaetze_gui\BITMAP\sonstige\checkboxan_disable.bmp"
   7004 = "q:\zusaetze_gui\BITMAP\sonstige\checkboxan_enable.bmp"
   7005 = "q:\zusaetze_gui\BITMAP\sonstige\checkboxaus_disable.bmp"
   7006 = "q:\zusaetze_gui\BITMAP\sonstige\checkboxaus_enable.bmp"
   7754 = "q:\zusaetze_gui\BITMAP\sonstige\exit_disable.bmp"
   7755 = "q:\zusaetze_gui\BITMAP\sonstige\exit_enable.bmp"
   
LANGUAGE = "DE"
so klappt es aber nicht. Es kommt auf CMD Ebene die lapidare Meldung
1 Datei erfolgreich übersetzt
error: Fehler beim Erzeugen \include\resourcen.res

lasse ich userdef manifest raus, dann wird die RES Datei erzeugt. Mehr aber auch nicht. Danach kann ich aber das programm OHNE die Manifestdatei kopilieren und wie es aussieht sind alle Grafiken drin. Also wozu die Manifestdatei dann noch?

Re: Manifest, RES, ARC

Verfasst: Di, 08. Jan 2019 13:12
von Jan
Manfred,

das sieht ja ganz so aus als würdest Du die .res woanders erzeugen wollen. Vielleicht ist das ja das Problem?

Und warum eine manifest: Für mich persönlich gibt es da mehrere Gründe für:
  • Optik wie das eingestellte Theme des aktuellen Betriebssystems (sonst sieht alles wie Windows 2000 aus)
  • Hier wird untergebracht das die Fonts sich automatisch an die Auflösungsskalierung anpassen
Man kann da noch unglaublich viel mehr mit machen. Betriebsystemversionen fordern oder ausschließen. Die Sicherheitsstufe des Users fordern. usw.

Jan

Re: Manifest, RES, ARC

Verfasst: Di, 08. Jan 2019 13:12
von Tom
Du verwendest die ID 1 doppelt, einmal für MANIFEST_RESID und einmal für "programm.ico".

Re: Manifest, RES, ARC

Verfasst: Di, 08. Jan 2019 13:24
von Jan
Tom,

das mache ich aber genau so. Und habe keine Probleme damit.

Jan

Re: Manifest, RES, ARC

Verfasst: Di, 08. Jan 2019 14:19
von Manfred
Jan,
wenn Du mal mein Eingangsposting studieren möchtest? Dort steht ich möchte die RES an zentraler Stelle für ALLE Projekte erzeugen, weil es für alle gleich ist. Ich möchte eigentlich alles was dazugehört an zentraler Stelle erzeugen und ablegen und dann aus den Projekten heraus darauf zugreifen. Warum soll man auch für jedes Projekt die Grundeinstellungen (BMP ICOn usw) jedesmal neu hinterlegen und dann riskieren Fehler zu machen?

Re: Manifest, RES, ARC

Verfasst: Di, 08. Jan 2019 15:00
von Jan
Manfred,

und genau das geht natürlich mit einer manifest nicht. Weil die ja immer explizit auf genau diese exe oder dll zugeschnitten ist. Das hatten wir hier ja auch schon mehrfach erwähnt.

Jan

Re: Manifest, RES, ARC

Verfasst: Di, 08. Jan 2019 15:31
von Manfred
Jan hat geschrieben: Di, 08. Jan 2019 15:00 Manfred,

und genau das geht natürlich mit einer manifest nicht. Weil die ja immer explizit auf genau diese exe oder dll zugeschnitten ist. Das hatten wir hier ja auch schon mehrfach erwähnt.

Jan
wo wurde erwähnt, das die im Projektverzeichnis erzeugt werden muß und nicht umkopiert werden kann?

Re: Manifest, RES, ARC

Verfasst: Mi, 09. Jan 2019 1:28
von AUGE_OHR
Den doppelten Suffix nicht vergessen, das ist in Jimmys Beispiel falsch (Win10.EXE.MANIFEST).
es ist, beim einbinden der *.RES, völlig egal wie die Datei heisst.
und genau das geht natürlich mit einer manifest nicht. Weil die ja immer explizit auf genau diese exe oder dll
ich kann für AAA.EXE die selbe Manifest Datei, hier ".\..\RES\WIN10.MANIFEST", nehmen wie für BBB.EXE
der Unterschied ist die RES Datei denn dort steht Name/Fileversion etc.

@Manfred :

ich habe die Manifest Zeile als letztes im *.ARC File stehen

Re: Manifest, RES, ARC

Verfasst: Mi, 09. Jan 2019 7:24
von Manfred
Hi Jimm,
egal wo ich sie stehen habe, es klappt nicht.

Re: Manifest, RES, ARC [ERLDIGT]

Verfasst: Fr, 11. Jan 2019 8:35
von Manfred
jetzt klappt es. Genau so, wie ich es haben will.

Re: Manifest, RES, ARC [ERLDIGT]

Verfasst: Fr, 11. Jan 2019 8:57
von georg
Hallo, Manfred -


gab es technische Gründe für das Problem? Wäre vielleicht für den ein oder anderen interessant?

Re: Manifest, RES, ARC [ERLDIGT]

Verfasst: Fr, 11. Jan 2019 9:14
von Manfred
möchte ich mich jetzt hier (wegen peinlich) nicht zu auslassen. War aber sowas blödes, das ich einmal behaupte passiert keinem anderen. Allerdings hätte die ARC Fehlermeldung besser sein können, dann wäre es sofort aufgefallen.

Re: Manifest, RES, ARC [ERLDIGT]

Verfasst: Fr, 11. Jan 2019 10:49
von Manfred
allerdings im Nachhinein betrachte, hätte der Aufwand viel geringer gehalten werden können, wenn der ARC Compiler darauf hingewiesen hätte, das eine datei fehlt und nicht einfach nur abbricht mit den Worten "geht nicht". Ich habe den Vorgang mal an den Support weitergereicht.

Re: Manifest, RES, ARC [ERLDIGT]

Verfasst: Fr, 11. Jan 2019 16:21
von Manfred
ich habe dazu folgende Antwort erhalten:
Der Resource Compiler liefert diese Information schon. Das Problem ist aber, dass die Workbench die Ausgabe des Compilers für die aufbereitet und wichtige Informationen verschluckt. Wir müssen also an der Workbench Hand anlegen.

Für sie ist vielleicht folgende Hilfestellung wichtig: Wenn Ausgaben Unklar sind, dann kann es helfen das Projekt von der Kommandozeile aus zu bauen. Wenn Sie dann pbuild noch mit dem -v (verbose mode) Kommandozeilenparameter aufrufen, dann müssten Sie eigentlich keine Probleme mehr haben um zu verstehen warum eines der Kommandozeilen Werkzeuge (pbuild, xpp, arc, alink, u.s.w.) einen Fehler gemeldet hat.

Noch ein kleiner Trick: Wenn Sie pbuild mit dem -k Parameter rufen, dann werden Zwischendateien nicht gelöscht und Sie haben ein weiteres Hilfsmittel um Fehlern beim Erzeugen von Binaries auf die Schliche zu kommen. Alle Kommandos die pbuild ausführt werden auch ausgegeben. Mit den Zwischendateien können Sie alle Kommandos also nochmal ausführen um so ein Fehlverhalten zu reproduzieren.
Nur mal so als Info. Weil, wir wissen ja auch nicht immer alles.