![]() |
Delphi-Version: XE
EXE FileVersion auslesen
Hallo ich habe auf einmal das Problem (weiss nicht ob es an XE o. W/ liegt habe beides zeitlgeich gewechselt) das ich nur noch Müll beim Auslesen meienr Exe File Version erhalte...
Nutze bis dato ohne Fehler:
Delphi-Quellcode:
function GetFileVersion(const FileName: string): string;
var i, W: LongWord; P: Pointer; FI: PVSFixedFileInfo; begin Result := 'NoVersionInfo'; i := GetFileVersionInfoSize(PWideChar(FileName), W); if i = 0 then Exit; GetMem(P, i); try if not GetFileVersionInfo(PWideChar(FileName), W, i, P) or not VerQueryValue(P, '\', Pointer(FI), W) then Exit; Result := IntToStr(FI^.dwFileVersionMS shr 16) + '.' + IntToStr(FI^.dwFileVersionMS and $FFFF) + '.' + IntToStr(FI^.dwFileVersionLS shr 16) + '.' + IntToStr(FI^.dwFileVersionLS and $FFFF); if FI^.dwFileFlags and VS_FF_DEBUG <> 0 then Result := Result + ' debug'; if FI^.dwFileFlags and VS_FF_PRERELEASE <> 0 then Result := Result + ' beta'; if FI^.dwFileFlags and VS_FF_PRIVATEBUILD <> 0 then Result := Result + ' private'; if FI^.dwFileFlags and VS_FF_SPECIALBUILD <> 0 then Result := Result + ' special'; finally FreeMem(P); end; end; Nun bekomme ich total andere Werte... keine Ahnung warum |
AW: EXE FileVersion auslesen
Ich habe das jetzt mal mit einem frischen XE2 Projekt probiert und es funktioniert einwandfrei:
Delphi-Quellcode:
Allerdings stecken die Attribute (debug usw.) nicht in FileFlags sondern in FileFlagsMask.
ShowMessage(GetFileVersion(Application.ExeName)) -> 1.0.0.0
|
AW: EXE FileVersion auslesen
Verstehe ich nicht...
Ich habe unter Windows 7 64BIT -- nur eine ganz komische Zahl - selbige die auch im Explorere Angezeigt bekomme wenn ich auf eigenschaften klicke! Einen Nummer die ich nicht beinflussen kann |
AW: EXE FileVersion auslesen
Liste der Anhänge anzeigen (Anzahl: 1)
Also wenn ich mir die Details im Explorer anzeigen lasse (64 bit W2k8r2) sehen die Ok aus:
|
AW: EXE FileVersion auslesen
Liste der Anhänge anzeigen (Anzahl: 1)
wie ich schon 2 mal schrieb Windows 7 nutze ich! Vor dem Wechsel hatte ich das Problem nicht!
Siehe Screenshot! |
AW: EXE FileVersion auslesen
Also der Windows-Server 2008 ist vom Kern identisch mit Windows 7. Ich habe die "User Experience" ausgeschaltet wegen RDP.
|
AW: EXE FileVersion auslesen
Zitat:
In Flags stecken die gesetzen Attribute und in Mask stecken die gültigen Attribute, welche in Flags gesetzt sein könnten. Definition der Bits: Flags=0 Mask=0 : Wert nicht vorhanden Flags=0 Mask=1 : Wert nicht vorhanden Flags=1 Mask=0 : Wert nicht gesetzt Flags=1 Mask=1 : Wert gesetzt |
AW: EXE FileVersion auslesen
Liste der Anhänge anzeigen (Anzahl: 1)
Ich rede nicht von der Definition laut MS sondern davon wie es in XE abläuft. Im Bild links der Record im Debugger, rechts die Projektoptionen.
|
AW: EXE FileVersion auslesen
Dann wäre das ja ein Bug, welchen die hoffentlich in XE3 behoben haben werden ... nur deswegen den Code jetzt zu verändern würde ich deswegen nicht :angle2:
Was ist, wenn du die Attribute nicht gesetzt hast? |
AW: EXE FileVersion auslesen
Wenn ich in den Optionen etwas an den Modulattributen ändere, spiegelt sich das ausschließlich im dwFileFlagsMask wieder. Z.b. nur Debug angekreuzt = 1.
Frage mich aber was man da für Fehler machen kann. Die Struktur ist richtig, und es wird eine Winapi-Funktion aufgerufen. Delphi 7 Kennt die W-Typen noch nicht und 2009 startet bei mir nicht mehr nach der XE2 Installation. [edit] Es ist definitiv ein Fehler - aber nicht beim Auslesen sondern beim Speichern während des Buildvorganges. Beim Einlesen der Info aus einer "Fremden" exe stimmt es:
Code:
[/edit]
Name des Ausdrucks Wert
dwFileFlagsMask 63 {$3F} dwFileFlags 8 |
AW: EXE FileVersion auslesen
Das heisst ich bilde mir das nicht ein das hier etwas nicht richtig läuft?!
Was mache ich nun dagegen das ich an die richtigen Infos komme? |
AW: EXE FileVersion auslesen
Schauen ob es einen QC-Eintrag dazu gibt.
Wenn nicht, dann selber melden. Und hoffen die arbeiten zur Abwechslung mal schnell und bringen den Bugfix nicht erst im XE3 raus. Denn du müßtest dazu ja selber die EXE-Header parsen und dabei aufpassen, daß du dieses nur für XE2-Compilate durchführst, denn sonnst sollte es ja überall funktionieren. |
AW: EXE FileVersion auslesen
scheint schon gemeldet zu sein
![]() zumindest sieht es ganz nach der Geschichte aus! Ob es aber behoben wird oder nicht keine ahnung! |
AW: EXE FileVersion auslesen
Ne, ist was Anderes.
Aber daß sich der Build-Zähler nicht mehr bei einem Build hochzählt, hatte hier auch schonmal jemand irgendwo gepostet. :lol: |
AW: EXE FileVersion auslesen
Acuh wenn es etwas andere ist für mich sieht es sehr nach meinem Problem aus und tatsächlich lässt sich die richtige Versionsnummer durch deaktivieren der "Build-Nummer automatischen hochzählen" beheben!
Mit aktivierter Option bekomme ich komischen Zahlensalat als Versionsinfo und OHNE bekomme ich die richtige Versionsinfo! Hoffe das die das schnell beheben das geht ja gar nicht :) |
AW: EXE FileVersion auslesen
Zitat:
Aber das Problem mit den Modulkennzeichen bleibt bestehen. |
AW: EXE FileVersion auslesen
Pardon das sehe ich als Fehler an - wenn es ne Option gibt - Buildzähler mit datum verwenden oder so OK!
Aber hier handelt es sich um die seit anbegin von Delphi bekannte Funktion um die BUILD automatisch um 1 hoch zu zählen! Und ich habe so etwas auch noch nicht dokumentiert gesehen! Für mich ist das einen Fehlfunktion |
AW: EXE FileVersion auslesen
Der Fall ist schon erledigt, CLOSED - As Designed. Du könntest ein Feature-Request machen, dass man das alte Verhalten optional verwenden kann. Da die ganze Projekt- und Versionsverwaltung ja eh komplett für den A.. ist und überarbeitet werden muss.
|
AW: EXE FileVersion auslesen
ich mache da nix, da ich durch das ganze System da nicht durchsteige!
|
AW: EXE FileVersion auslesen
Dann musst Du mit dem Problem weiterleben. Es ist ein ganz normales Support-Ticketingsystem das schon seit Ewigkeiten genutzt wird. Ist als Client in die Tools integriert oder per Webinterface. Liefert ja auch Infos und Workarounds. Lohnt sich also schon. Und wenn sich niemand beschwert denken sie noch sie haben ein tolles, fehlerfreies Produkt abgeliefert.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:08 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-2025 by Thomas Breitkreuz