![]() |
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:20 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