AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein SVN Revision als Buildnummer nutzen in Delphi
Thema durchsuchen
Ansicht
Themen-Optionen

SVN Revision als Buildnummer nutzen in Delphi

Ein Thema von Daimonion · begonnen am 27. Aug 2009 · letzter Beitrag vom 8. Mai 2013
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Daimonion
Daimonion

Registriert seit: 4. Dez 2006
Ort: Vöhrenbach
15 Beiträge
 
#11

Re: SVN Revision als Buildnummer nutzen in Delphi

  Alt 28. Aug 2009, 11:54
Also ich hab jetzt zum einen das rc file in ein res File kompiliert (mit BRCC32) In meinem Projekt hab ich dann dieses ResFile mittels

{$R 'Version.res' 'Version.rc'} eingefügt. Funktioniert auch soweit ganz gut.

Als Alternative hab ich direkt das RC File in meinem Projekt hinzugefügt und dann kompiliert er es direkt mit, wenn ich ein Build erstelle.

Das einzige Problem, was ich derzeit noch habe sind ein paar Hieroglyphen.

So sieht die Quelle aus:

Delphi-Quellcode:
1 VERSIONINFO
FILEVERSION 4,3,5,407
PRODUCTVERSION 4,3,5,407
FILEOS 0x4
FILETYPE 0x1
{
BLOCK "StringFileInfo"
{
  BLOCK "040704E4"
  {
      VALUE "CompanyName", "Zebra Elektrotechnik"
      VALUE "FileVersion", "4.3.5"
      VALUE "InternalName", "LAP"
      VALUE "LegalCopyright", "Copyright Zebra"
      VALUE "LegalTrademarks", ""
      VALUE "OriginalFilename", "Laserschweissanlage.exe"
      VALUE "ProductName", "Laserarbeitsplatz"
      VALUE "ProductVersion", "4.3.5"
      VALUE "Comments", ""
   }

}

BLOCK "VarFileInfo"
{
  VALUE "Translation", 0x0407 0x04E4
}

}
Das kompilierte File hat dann aber noch ein paar Daten mehr in der VersionsInfo (mit ResourceHacker ausgelesen):



Delphi-Quellcode:
1 VERSIONINFO
FILEVERSION 4,3,5,407
PRODUCTVERSION 4,3,5,407
FILEOS 0x4
FILETYPE 0x1
{
BLOCK "StringFileInfo"
{
   BLOCK "040704E4"
   {
      VALUE "CompanyName", "Zebra Elektrotechnik*FileVersion"
      VALUE "FileVersion", "4.3.5"
      VALUE "InternalName", "LAP"
      VALUE "LegalCopyright", "Copyright Zebra"
      VALUE "LegalTrademarks", ""
      VALUE "OriginalFilename", "Laserschweissanlage.exe"
      VALUE "ProductName", "Laserarbeitsplatz"
      VALUE "ProductVersion", "4.3.5"
      VALUE "Comments", ""
   }

}

BLOCK "VarFileInfo"
{
   VALUE "Translation", 0x0407 0x04E4
}

}
Komischerweise passiert dies nicht, wenn ich bei Company Name den letzten Bustaben wegmache.
Thomas
Zitat Stromberg S03E08 - Erika:
"So...selbst die Capitolmatratze, die hier auf jedem Karosseplan umgerutscht ist, was will sie von mir? Zahlen. Aber so ist das. Als Chef in meiner Position, da bist du so einsam wie...Gott."
  Mit Zitat antworten Zitat
Martin W

Registriert seit: 29. Mai 2004
Ort: Augsburg
220 Beiträge
 
Delphi XE3 Enterprise
 
#12

AW: Re: SVN Revision als Buildnummer nutzen in Delphi

  Alt 4. Mai 2013, 20:23
In diese .rc Datei fügst Du dann das SVN-Keyword ein und *wuppdi* hast Du ein .rc - File mit den richtigen Versionsinformationen. Das einzige Problem ist, dass Du diese .rc-Datei eben vor dem Kompilieren des Projektes in die .dcr (Delphi Compiled Resource) Datei kompilieren musst. Das geht eben ab Delphi 2006 mit den Pre-Build events.
Ich habe nun folgende RC Datei:

Delphi-Quellcode:
1 VERSIONINFO
FILEVERSION 2014,1,1,847
PRODUCTVERSION 2014,1,0,0
FILEOS 0x4
FILETYPE 0x1
{
BLOCK "StringFileInfo"
{
   BLOCK "040904E4"
   {
      VALUE "CompanyName", "Test_UN"
      VALUE "FileDescription", "Test"
      VALUE "FileVersion", "2014.1.1.900"
      VALUE "InternalName", "pBMS_Core"
      VALUE "LegalCopyright", "xxx"
      VALUE "OriginalFilename", "ABC.exe"
      VALUE "ProductName", "Test"
      VALUE "ProductVersion", "2014.1"
   }

}

BLOCK "VarFileInfo"
{
   VALUE "Translation", 0x0409 0x04E4
}

}
Wie kann ich die FileVersion, die Delphi automatisch generiert, damit überschreiben?

Seit einer Stunde ohne Ergebnis...
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#13

AW: SVN Revision als Buildnummer nutzen in Delphi

  Alt 6. Mai 2013, 11:13
Was ich damals vergessen habe zu erwähnen:
Die Keywords und deren Versionsnummern/Revisionen beziehen sich immer nur auf die entsprechende Datei und nicht auf das "letzten Update" bzw. dessen Revisionsnummer des Checkouts.

Für letzteres kann der CLI-Befehl "svnversion" genutzt werden.
Damit erhält man die Revisionsnummer des Arbeitsverzeichnis.

@Martin:
Für die Datei das Keyword aktiveren. Das geht via SVN-Property.
In der Datei dann an die entsprechende Stelle einfach das Keyword z.B. "$Revision$" einfügen.
Beim Commit wird dieses dann automatisch ersetzt.

http://svnbook.red-bean.com/en/1.7/s....keywords.html

Bitte den Abschnitt "Where's $GlobalRev$?" beachten!


Code:
usage: svnversion [OPTIONS] [WC_PATH [TRAIL_URL]]

  Produce a compact 'version number' for the working copy path
  WC_PATH. TRAIL_URL is the trailing portion of the URL used to
  determine if WC_PATH itself is switched (detection of switches
  within WC_PATH does not rely on TRAIL_URL). The version number
  is written to standard output. For example:

    $ svnversion . /repos/svn/trunk
    4168

  The version number will be a single number if the working
  copy is single revision, unmodified, not switched and with
  an URL that matches the TRAIL_URL argument. If the working
  copy is unusual the version number will be more complex:

   4123:4168     mixed revision working copy
   4168M        modified working copy
   4123S        switched working copy
   4123P        partial working copy, from a sparse checkout
   4123:4168MS  mixed revision, modified, switched working copy

  If WC_PATH is an unversioned path, the program will output
  'Unversioned directory' or 'Unversioned file'. If WC_PATH is
  an added or copied or moved path, the program will output
  'Uncommitted local addition, copy or move'.

  If invoked without arguments WC_PATH will be the current directory.

Valid options:
  -n [--no-newline]       : do not output the trailing newline
  -c [--committed]        : last changed rather than current revisions
  -h [--help]             : display this help
  --version               : show program version information
  -q [--quiet]            : no progress (only errors) to stderr
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Martin W

Registriert seit: 29. Mai 2004
Ort: Augsburg
220 Beiträge
 
Delphi XE3 Enterprise
 
#14

AW: SVN Revision als Buildnummer nutzen in Delphi

  Alt 7. Mai 2013, 21:01
@Martin:
Für die Datei das Keyword aktiveren. Das geht via SVN-Property.
In der Datei dann an die entsprechende Stelle einfach das Keyword z.B. "$Revision$" einfügen.
Beim Commit wird dieses dann automatisch ersetzt.

http://svnbook.red-bean.com/en/1.7/s....keywords.html

Bitte den Abschnitt "Where's $GlobalRev$?" beachten!
Danke für deine Antwort, hab mich aber leider falsch ausgedrückt. Also das rc-File mit der Version bekomme ich erstellt, ich lass dies automatisch mit einem lokal Hook generieren. Die Frage ist aber: Wie bekomm ich Delphi dazu, das RC-File zu nutzen, um daraus die Versionsnummer zu verwenden?

Danke,
Viele Grüße,
Martin
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#15

AW: SVN Revision als Buildnummer nutzen in Delphi

  Alt 8. Mai 2013, 10:23
Delphi hat die Versionsnummer in der Projektdatei und erzeugt da draus die Resourcen und linkt diese.
Das muss unterbunden werden! Also aus dem Projekt die Option Versionsnummern entfernen.
Ich denke hier war das Problem -> zwei Versionsresourcen in der Kompilierten Anwendung.

Wenn du die RC über die IDE erzeugt hast, dann sollte in der DPR Datei eine Zeile wie folgt sein:
{$R 'version.res' 'version.rc'} bzw. sollte auch in dem Projektexplorer austauchen.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Martin W

Registriert seit: 29. Mai 2004
Ort: Augsburg
220 Beiträge
 
Delphi XE3 Enterprise
 
#16

AW: SVN Revision als Buildnummer nutzen in Delphi

  Alt 8. Mai 2013, 20:36
Delphi hat die Versionsnummer in der Projektdatei und erzeugt da draus die Resourcen und linkt diese.
Das muss unterbunden werden! Also aus dem Projekt die Option Versionsnummern entfernen.
Ich denke hier war das Problem -> zwei Versionsresourcen in der Kompilierten Anwendung.
Super, probiere ich gleich aus!
  Mit Zitat antworten Zitat
Martin W

Registriert seit: 29. Mai 2004
Ort: Augsburg
220 Beiträge
 
Delphi XE3 Enterprise
 
#17

AW: Re: SVN Revision als Buildnummer nutzen in Delphi

  Alt 8. Mai 2013, 20:55
Danke, hat funktioniert!

Das einzige Problem, was ich derzeit noch habe sind ein paar Hieroglyphen.

So sieht die Quelle aus:

Delphi-Quellcode:
1 VERSIONINFO
FILEVERSION 4,3,5,407
PRODUCTVERSION 4,3,5,407
FILEOS 0x4
FILETYPE 0x1
{
BLOCK "StringFileInfo"
{
  BLOCK "040704E4"
  {
      VALUE "CompanyName", "Zebra Elektrotechnik"
      VALUE "FileVersion", "4.3.5"
      VALUE "InternalName", "LAP"
      VALUE "LegalCopyright", "Copyright Zebra"
      VALUE "LegalTrademarks", ""
      VALUE "OriginalFilename", "Laserschweissanlage.exe"
      VALUE "ProductName", "Laserarbeitsplatz"
      VALUE "ProductVersion", "4.3.5"
      VALUE "Comments", ""
   }

}

BLOCK "VarFileInfo"
{
  VALUE "Translation", 0x0407 0x04E4
}

}
Das kompilierte File hat dann aber noch ein paar Daten mehr in der VersionsInfo (mit ResourceHacker ausgelesen):



Delphi-Quellcode:
1 VERSIONINFO
FILEVERSION 4,3,5,407
PRODUCTVERSION 4,3,5,407
FILEOS 0x4
FILETYPE 0x1
{
BLOCK "StringFileInfo"
{
   BLOCK "040704E4"
   {
      VALUE "CompanyName", "Zebra Elektrotechnik*FileVersion"
      VALUE "FileVersion", "4.3.5"
      VALUE "InternalName", "LAP"
      VALUE "LegalCopyright", "Copyright Zebra"
      VALUE "LegalTrademarks", ""
      VALUE "OriginalFilename", "Laserschweissanlage.exe"
      VALUE "ProductName", "Laserarbeitsplatz"
      VALUE "ProductVersion", "4.3.5"
      VALUE "Comments", ""
   }

}

BLOCK "VarFileInfo"
{
   VALUE "Translation", 0x0407 0x04E4
}

}
Komischerweise passiert dies nicht, wenn ich bei Company Name den letzten Bustaben wegmache.
Ja, die Länge einer jeden Eigenschaft muss, warum auch immmer, durch 2 Teilbar sein, dann geht es. Im Notfall einfach mit einem Leerzeichen auffüllen.

Dank an Dich!

Viele Grüße,
Martin
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#18

AW: SVN Revision als Buildnummer nutzen in Delphi

  Alt 8. Mai 2013, 21:04
Nein, aber die Strings sollten durch ein Nullbyte abgeschlossen werden, besonders wenn Leerzeichen enthalten sind.
Code:
BLOCK "040704E4"
   {
      VALUE "CompanyName", "Zebra Elektrotechnik*FileVersion\000"
      VALUE "FileVersion", "4.3.5"
      VALUE "InternalName", "LAP"
      VALUE "LegalCopyright", "Copyright Zebra\000"
      VALUE "LegalTrademarks", ""
      VALUE "OriginalFilename", "Laserschweissanlage.exe\000"
      VALUE "ProductName", "Laserarbeitsplatz\000"
      VALUE "ProductVersion", "4.3.5"
      VALUE "Comments", ""
   }
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Martin W

Registriert seit: 29. Mai 2004
Ort: Augsburg
220 Beiträge
 
Delphi XE3 Enterprise
 
#19

AW: SVN Revision als Buildnummer nutzen in Delphi

  Alt 8. Mai 2013, 21:25
Nein, aber die Strings sollten durch ein Nullbyte abgeschlossen werden, besonders wenn Leerzeichen enthalten sind.
Danke für den Hinweis!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz