2010-09-27 9 views
8

Ich bin auf der Suche nach einem gebrauchsfertigen Code, der in der Lage wäre, Delphi-.res-Dateien zu lesen und zu ändern. Die Sache ist, dass ich eine Anwendung erstellen muss, die viele Delphi-Projekte gleichzeitig kompiliert (unter Verwendung der dcc32.exe-Datei). Allerdings ist es für mich notwendig, die Dateiversion und die Sprache vor der Kompilierung zu ändern, und soweit ich weiß, muss ich dazu die .res-Datei modifizieren.Delphi .res Dateiwechsler

Sind Sie auf irgendeinen Code gestoßen, der mir eine Schnittstelle zu RES-Dateien geben würde, die mir erlauben, die darin enthaltenen Daten zu ändern? Die Sache ist, dass ich nur diese zwei Teile der Information ändern möchte, den Rest unverändert behaltend. Aus diesem Grund kann ich meine eigene .res-Datei nicht basierend auf einem Skript kompilieren.

Eine Anwendung, die von einer Befehlszeile ausgeführt wird, wäre auch OK, wenn sie mit Parametern aufgerufen werden kann und tut, was ich tun muss.

Vielen Dank im Voraus!

+0

Sie können auch für QC# 70567 abstimmen (speichern Sie keine Versionsinformationen in der kompilierten .res-Datei - um eine einfachere Bearbeitung zu ermöglichen) und QC# 70564 (Versionsinformationen können über die Befehlszeile festgelegt werden) –

Antwort

10

Wenn alles, was Sie brauchen, ist dann appver.rc Datei, um sie mit brcc32 und in einem Ihrer App Einheit erstellen Dateiversionsressource hinzuzufügen, kompilieren (zum Beispiel appver.pas) in {$R appver.res} (als Marian Sie Delphi-Projekt Option deaktivieren bemerkt muss enthalten Versions Information).

I erstellten Programme Befehlszeile, die in .rc Datei Build-Nummern erhöhen, neuen Zweig/Tag in SVN mit dem neuen Version in Zweignamen, kompiliert .rc-.res und Anwendung bauen.

Meine .rc Dateien mit solchen info (polnische Sprache) wie folgt aussieht:

#define IDR_VERSION1 1 
IDR_VERSION1 VERSIONINFO LOADONCALL MOVEABLE DISCARDABLE IMPURE 
FILEVERSION 7,28,7,17 
PRODUCTVERSION 7,28,7,17 
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK 
FILEFLAGS 0 
FILEOS VOS_DOS_WINDOWS32 
FILETYPE VFT_DLL 
FILESUBTYPE 0 
{ 
BLOCK "StringFileInfo" 
{ 
    BLOCK "041504E2" 
    { 
    VALUE "CompanyName", "xxx\0" 
    VALUE "FileDescription", "yyy\0" 
    VALUE "ProductName", "zzz\0" 
    VALUE "FileVersion", "7.28.7.17\0" 
    VALUE "ProductVersion", "7.28.7.17\0" 
    } 

} 

BLOCK "VarFileInfo" 
{ 
    VALUE "Translation", 0x0415, 1250 
} 

} 
+1

+1 um die Ursache anzusprechen und nicht nur mit den Symptomen umzugehen. Es könnte in Ihrer Antwort erwähnenswert sein, dass dies auch in der IDE funktioniert, wenn Sie "include version" in den Projektoptionen deaktivieren. Etwas, das die IDE Ihnen für dll-Projekte nicht erlauben wird, müssen Sie das dproj für das von Hand "hacken". –

2

Check out Quellen:

http://code.google.com/p/gedemin/source/browse/trunk#trunk/Gedemin/Utility/IncVerRC

Es ist unser Dienstprogramm, das .RC mit Versionsinformationen Datei liest und Schritten Build-Nummer. Wir verwenden es in unserem Build-Prozess. Hier ein Auszug:

incverrc.exe ..\gedemin\gedemin.rc 
"%delphi_path%\brcc32.exe" -fogedemin.res -i..\images gedemin.rc 
"%delphi_path%\dcc32.exe" -b gedemin.dpr 

Das Dienstprogramm verwendet TIncVerRc Klasse geschrieben von Chris Morris.

2

Für alle Dinge .res, schauen Colin Wilsons "XN Resource Editor", für die er den Quellcode bietet: http://www.wilsonc.demon.co.uk/d10resourceeditor.htm Und wahrscheinlich ist alles, was Sie brauchen, seine Ressource-Dienstprogramm-Bibliothek: http://www.wilsonc.demon.co.uk/d9resourceutils.htm Ich habe diese Quelle nicht verwendet, aber wenn ich es brauchte, das ist der erste Ort, an dem ich aussehen würde. Sein Ressourceneditor ist sehr nützlich, übrigens.

+1

die Links sind nicht erreichbar – Ampere

2

Es gibt ChangeRes, die Ihren Anforderungen entsprechen scheint.

Verwandte Themen