![]() |
UpdateResource ändert FileVersion nicht
Guten Abend,
ich versuche schon längere Zeit die Dateieigenschafen für die Version einer exe-Datei zu ändern, aber nicht während diese läuft. Das Auslesen mit GetFileVersionInfoSize, GetFileVersionInfo und VerQueryValue funktioniert super. Nun wollte ich mit folgenden Code die Infos ändern, das einzigste was sich ändert ist die Größe der Datei. Folgender Code ist einer von vielen Versuchen.
Delphi-Quellcode:
Das Handle ist nicht leer also müsste doch eigentlich eine Änderung in den Eigenschaften zu sehen sein?
procedure TForm1.SetFileVersion(const FileName: String);
var VersionInfoSize : LongWord; Dummy : LongWord; hFile : THandle; Value : String; begin Dummy := 0; VersionInfoSize := GetFileVersionInfoSize(PChar(FileName), Dummy); if VersionInfoSize > 0 then begin hFile := BeginUpdateResource(PChar(FileName), False); if hFile <> 0 then begin Value := '1.0.0.0'; UpdateResource(hFile, MAKEINTRESOURCE(RT_VERSION), MAKEINTRESOURCE(1), MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN), PChar(Value), SizeOf(Value)); EndUpdateResource(hFile, False); end; end; end; Wär nett, wenn jemand eine funktionierende Lösung hätte. ich weis nicht genau wie es nun richtig ist, weil ich schon so viele verschiedene Möglichkeiten gesehen habe und nach der msdn müsste es ja so sein wie ich es habe. |
Re: UpdateResource ändert FileVersion nicht
:arrow: Push
|
Re: UpdateResource ändert FileVersion nicht
Du musst alle Daten im rohen Format übergeben, und das ist nicht PChar.
![]() |
Re: UpdateResource ändert FileVersion nicht
Ich habe mir das mal durchgelesen und blicke um ehrlich zu sein, nicht ganz dahinter. Wenn ich das richtig verstanden habe, brauch ich die "StringFileInfo Structure", die eine "StringTable Structure" enthält und diese wiederum die eigentliche "String Structure", wo mein zu setzender Wert drinn steht.
Das kann ich aber nicht mit UpdateResource setzen, denn da muss ich ein Pointer übergeben. |
Re: UpdateResource ändert FileVersion nicht
Ich versuch es einfach nochmal, ob sich jemand findet, der mir das kurz mit den Strukturen erklären kann.
|
Re: UpdateResource ändert FileVersion nicht
Hallo, auf codeproject.com gibt's
![]() |
Re: UpdateResource ändert FileVersion nicht
Danke toms, für den Artikel. Ich habe diesen Artikel auch schonmal gefunden, das Problem ist aber, dass ich Übersetzungsprobleme aus C/C++ in Delphi habe. Besonders diese zweil Zeilen:
Code:
Was bedeutet _tcslen (welche Länge ist gemeint), tsccpy (sicherlich ein Kopiervorgang) und _T?
ZeroMemory(pValueBuffer, _tcslen(pValueBuffer) * sizeof(TCHAR));
_tcscpy(pValueBuffer, _T("My Company, Inc.")); Und dann gibt es noch
Code:
Das LPVOID mit Stern ist mir auch nicht ganz klar.
(LPVOID *) &lpTranslate,
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:19 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