![]() |
Versionsinformationen werden nicht mit in die Exe übernommen
Ich habe bei diversen Projekten das Problem, dass die VersionsInfo in den erzeugten Binaries immer leer ist, obwohl die Versionsinformationen in den Projektoptionen richtig hinterlegt sind. Der Haken "Versionsinformationen in das Projekt übernehmen" ist natürlich auch gesetzt. :)
Überwiegend sind das Altprojekte, die ich immer beim Erscheinen einer neuen Delphi Version migriert hatte. Das Problem begann damals in XE2 und trat nur bei sehr wenigen Projekten auf. Jetzt, bei XE6 verweigern etwa 50% aller Altprojekte das Schreiben der Versionsinfo. In der DPRJ stehen die Versionsinformationen richtig drin. Ich sehe dort auch keinen Unterscheid zu Projekten, bei denen die Versionsinfo in die Exe übernommen wird. Wie kann ich das sinnvoll fixen? Ich möchte ungern alle res und dprj Files aus allen Projekten löschen, um dann überall alle Projektoptionen neu zu konfigurieren. |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Zitat:
|
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Moin,
vielleicht hilft dieser Thread das Problem zu klären: ![]() Gruß HEiko |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Die Versionsinformationen werden im Fehlerfall komplett weggelassen. Im erzeugten Binary dann weder File- noch Productversion, noch irgendetwas anderes übernommen. Im Anhang ist mal ein Screenshot von einer DLL, bei der in Delphi die Versionsinfos mit Copyright, Versionsnummern Pruduktnamens usw. komplett gefüllt sind. |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Hallo Jens,
Zitat:
Gruß Heiko |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Das Compiler/Linker-Log hast du dir schon durchgelesen?
Bindest du ein eigenes Manifest ein? Die VersionsInfos von Delphi selber müssen in der RES stehen und das wird dann in die EXE/DLL eingebunden. Das in der DProj ist nur eine "Kopie", aus welcher die RES generiert wird. |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
In Build Log laufen keine Fehler auf. Man sieht, dass die ".res" beim Build als Parameter übergeben wird.
Ein eigens Manifest benutze ich nicht. Der Linker bindet nur das "default_app.manifest" mit ein. Sind die Daten in der .dprj eine Kopie von der .res oder umgekehrt, oder garnicht? Ich hatte gerade testhalber die .res gelöscht und die .dprj gelassen. Die .res wurde neu angelegt, die Projektoptionen blieben erhalten aber die Versionsinfo fehlt weiterhin. |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Wie stehen die Spracheinstellungen?
Versionsinformationen stehen unter einen Sprach-ID in der Registry. Und hier kann man diverse Windows-API-Funktionen verwirren wenn diese irgendwie nicht zueinander passen. Hatte ich schon mal bie Adobe-SW die kein Versionsinfos geliefert hatten wenn man bestimmte APIs verwendet hatte. Grund war (soweit ich nocht weis) das die Exe an einer Stelle definiert hat das sie 1031 als Sprach-ID hat, aber die Versionsinfo mit ID 1033 abgelegt hat. Prüf mal mit einem Ressourcen-Editor (z.B. ResHacker) ob wirklich keine Versionsinfos drin stehen (z.B. VERSION Info\1\1031) |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Liste der Anhänge anzeigen (Anzahl: 1)
Der ResHacker findet in den "defekten" Kompilaten keine "VERSION Info".
Interessant ist, dass dort die "PLATFORM Targets" und das Manifest ebenfalls fehlen. s. Screenshot (links Problem-DLL rechts DLL mit Version-Info) |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Gefunden...
Der {$R *.RES} Eintrag fehlt in allen "Problemprojekten". Wie kann den sowas passieren? :gruebel: Den Projektquelltext öffne ich eigentlich nie und wenn, dann lösche ich sicher keine Resourceneinträge manuell raus ... |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Zitat:
|
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Zitat:
|
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Im Jahre 2021 hat mir dieser alte Thread weitergeholfen. :thumb:
Hatte im Source {R *.res} stehen, statt {$R *.res}. :oops: Wie auch immer das passieren konnte^^ Danke DP! |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Hallo Leute, ich kämpfe mit ähnlichem Problem und weiß nicht mehr weiter.
In meinem (ziemlich großem) Projekt ist in Delphi 11 die Version 12.0.0.1 eingestellt. Und ja, die Übernahme der Versionsinformationen ist aktiviert, die Projektdatei enthält {$R *.res}. Das Problem ist, dass in exe-Datei die falsche Version steht, und zwar Dateiversion 11.7.0.1, Produktversion 11.8. Keine Ahnung, woher das kommt. Hat jemand evtl. eine Idee für mich? Danke. |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Du hast mglw. die Debug-Projektoptionen eingestellt, gibst aber die Release-Version aus.
|
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Zitat:
|
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Bei den DDevExtensions gibt es ein Tool "Set Project Versioninfo". Damit sollte Dein Problem lösbar sein.
|
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Zitat:
Ich muss auch sagen, dass in früheren Versionen des Projekts dieses Problem nicht gab. Könnte es an der Delphi-Version liegen? In Delphi 11 wird nur die Version 12.0 (die aktuellste) des Projekts entwickelt. |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Wenn du mal im VersionsInfo-Dialog die verschiedenen Ziele anwählst, wirst du vermutlich irgendwo diese Daten finden.
Ich persönlich finde es ja keine gute Idee, für jede Kombination von Plattform und Konfiguration eigene Werte zuhaben, aber die Vererbung nahezu unkontrollierbar zu machen. Daher gibt es im ![]() |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Zitat:
Die Version in meiner Delphi-Instance ist nicht wirklich für das Projekt relevant, weil die endgültige Version auf dem Jenkins gebaut wird. Ich müsste prüfen, was passiert, wenn ich dort Delphi öffne und das Projekt kompiliere, das mache ich morgen. Da aber beim Start des Projekts die Version mit der Eintragung in der DB verglichen wird, macht dieser Fehler für mich unmöglich, den Server und die DB der Version zu nutzen. |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Du kannst auch selbst mit z.B. Notepad++ in die .dproj Datei schauen. Das Format ist etwas unübersichtlich, aber relativ leicht verständlich. Außerdem muss man das Format ja ohnehin kennen, um beim Einchecken die Änderungen zu prüfen.
(Manche checken die Datei einfach ohne Prüfung der Änderungen ein, aber das wäre wie bei allen anderen Quelltextdateien höchst fahrlässig.) |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Zitat:
|
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Kann es sein, dass noch eine andere Versions-Resource eingebunden wird?
|
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Öffne die .res Datei einmal mit einem Ressourceneditor und schau mal rein, was du dort findest. Du kannst auch einen Texteditor verwenden und die unlesbaren Teile ignorieren. Schau einfach mal, ob du die falschen Daten dort findest.
Du kannst auch einfach mal den Firmennamen in den Projektoptionen an der Stelle ändern, die gerade verwendet werden sollte, um zu schauen, ob dieser Wert dann in der Exe ankommmt. Wenn du die Exe in Notepad++ öffnest, kannst du nach diesem angepassten (unverwechselbaren) Wert auch suchen, falls wie Uwe schrieb zwei Versionsressourcen eingebunden sind. Ich weiß allerdings nicht, ob Delphi dann automatisch eine entfernt. Die .res Datei kannst du aber auch ohne Folgen löschen oder umbenennen, da diese ohnehin neu erstellt wird. Dabei sollte normalerweise kein Unterschied auftreten, was du ja auch prüfen kannst. Wir checken die Datei auch gar nicht ein. |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Leute, vielen lieben Dank!
Datei .res war schuld. Zusätzlich zu .res-Datei, die jedes mal neu erstellt wird, hatte ich im Hauptverzeichnis des Projekts noch eine. Anscheinend schleppe ich sie seit 2 Versionen schon mit, wie auch immer es dazu kam. Und da ich normalerweise bei der Entwicklung auf die Version nicht achte, war es mir nur in der neueren Version aufgefallen, als ich versucht habe, mit dem Server der Version zu arbeiten. Nochmals vielen Dank! Hätte ich nur schon früher in diesem Forum nachgefragt :-D |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Falsche Sprache der Ressource?
* in der DPROJ schauen, ob/wo es die VersionsInfos gibt (hier am Besten nur in der Base/Basis-Config) * normal wird vor dem Compilieren des Codes die Info der Projektoption in die *.res syncronisiert * * hier kann man z.B. mit dem ResourceHacker (irgendeinem Ressourcen-Editor, welcher RES-Dateien versteht) in die *.RES schauen * geschaut, ob der Compiler/Linker etwas bezüglich Ressoucen-Konfliken rummeckert? (Compiler-Log) * mit dem ResourceHacker kann man nachfolgend auch in der EXE nachsehn, ob und wie dort diese Versions-Ressource aussieht [edit] Zitat:
Warum hört NIE jemand darauf, was Delphi einem sagt? |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Zitat:
Ernsthaft: Diese Meldung geht in dem ganzen Wust der Ausgaben schnell unter. Und da viele auch Compiler-Warnings und Hints nicht beheben, sind sie darauf trainiert, sowas zu ignorieren. |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Zitat:
|
AW: Versionsinformationen werden nicht mit in die Exe übernommen
[QUOTE=dummzeuch;1539992]
Zitat:
|
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Zitat:
Delphi-Quellcode:
"Das Ergebnis der Funktion ist möglicherweise undefiniert"
Function test(a:boolean):string;
Begin If a then result := 'yo' else result := 'no'; end; Kann man diese Meldung verhindern ohne result zu intialisieren? Es geht mir NICHT um genau diese funktion, sondern die compiler warnings zu verhindern in fällen wo ich weiß was da passiert. Mit "reintroduce" werden auch Warnungen dass die Sichtbarkeit einer Methode überschrieben wird, oder so, verhindert. Sowas will ich eigentlich für einige compiler warnings. EDIT: Zitat:
|
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Zitat:
Es gibt aber schon eine Möglichkeit, eine solche Warnung lokal zu unterdrücken ohne die gleich ganz abzuschalten:
Delphi-Quellcode:
{$WARN NO_RETVAL OFF}
Function test(a:boolean):Integer; Begin If a then result := 1; end; {$WARN NO_RETVAL DEFAULT} |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Wobei der Integer in dem Fall des Integers halt wirklich nicht initialisiert sein kann
und beim nichtvorhandenen ELSE zufällig sein kann. Andersrum ist es schlimmer. Per se ist der Result als String immer initialisiert, aber nicht in der Funktion, sondern beim Aufrufer, wo er dann z.B. in einer Schleife initial nicht '' sein kann. Bei gemanagten Typen wird "intern" aus dem Result ein OUT- VAR-Parameter und außerdem sind gemangte Typen immer mit "0" initialisiert. (WideString, LongString, Variant, dynamische Array, Interface und ordentlich geschriebene Custom-Managed-Records)
Delphi-Quellcode:
function Test(a: Boolean): String;
// wird zu procedure Test(a: Boolean; var Result: String); Wir hatten im XE einen Fall, wo sich der Compiler in einer Verschachtelung aus Try-Finally, Try-Except, If-Then-Else-If-Then-Else-If-Then-Else-... und Case mit Exit und Abort/Raise durcheinander kam und nachfolgend meinte die lokale Integervariable könne uninitialisiert sein, drum wurde dort ein :=0 am Anfang eingefügt, was dann D10+ aber anders sah und richtig erkannte, dass bis zur Auswertung es in allen Pfaden gesetzt wird, oder es via Exit/Raise vorher rausspringt. Im Windows64-Compiler gibt es jetzt teilweise Zustände, wo ein Boolean-Result immer automatisch initialisiert ist scheint ... nja, wenn du schaust immmer, aber eigentlich fast immer, weil du zufällig den einen Abweichenden von Tausenden/Millionen Durchgängen nicht siehst. |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Zitat:
danke. außer NORETVAL gibts sicher für jede warnung einen wert oder? Weißt du wo die liste zu finden ist? |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Stehen alle in der Hilfe. :angle:
Und wie gesagt, ist DAS hier auch keine Lösung. Die Lösung ist den Wert zu initialisieren, entweder vorher oder im Else, da die Funktion sonst mehr dem Russisch Roulette entspricht. |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Zitat:
Zum Glück sind diese Fälle einigermaßen selten. |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Zitat:
![]() |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Zitat:
|
AW: Versionsinformationen werden nicht mit in die Exe übernommen
In anderen Sprachen gibt es dafür Pragmas, die man einem "angemeckerten" Statement einfach als Art Kommentar nachstellt. Aber mit einem relativ doofen Single Pass Compiler geht das halt nicht.
|
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Bitte nochmal zurück zum Thema.
Ich habe hier mit Delphi 12.1P1 gerade das gleiche Problem, daß die Versionsinformation nicht korrekt übernommen wird. Es gibt ja die Auswahl für "debug", für "release" und "für alle Konfigurationen"! Ich habe sie auf "für alle" eingestellt, Dateiversion und Produktversion auf den selben Wert gesetzt (nur zur Sicherheit), und bei der Ausführung lese ich dann im Programm diesen Wert ein... - da steht dann nur "1.0.0.0", das steht so aber nicht in der eingestellten Konfiguration! Im Projekt steht das {$R *.res} drin und im Pfad ist nur 1 .res-Datei, die vom Delphi beim compilieren aktuell angelegt wurde (hab sie extra zuvor gelöscht). Manifest hab ich "Automatisch erzeugen" (für alle Konfigurationen) eingestellt. Und warum ist die Sprach-ID eigentlich immer auf $409 English eingestellt? Windows ist Deutsch, IDE ist deutsch, meine Programme sind für deutsche Nutzer - also stelle ich es hier auch deutsch $407 ein. Aktuell builde ich es als Debug ("alle Konfigurationen" sollte ja trotzdem klappen!?). Wie bringe ich jetzt Athens dazu, diese in den Projektoptionen wichtigen Daten auch in die Exe hineinzuschreiben? Oder liegt hier ein weiterer Bug (Feature) vor, weil es durch einen Schalter an irgendeiner irreführend schlecht übersetzen Stelle einen Schalter dafür gibt, zusätzlich zu dem aktivierten "Versionsinformationen in das Projekt übernehmen"?? |
AW: Versionsinformationen werden nicht mit in die Exe übernommen
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Genau dafür gibt es eine Einstellung im ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz