AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Projektoptionen

Ein Thema von Bambini · begonnen am 10. Nov 2015 · letzter Beitrag vom 13. Nov 2015
Antwort Antwort
Bambini
(Gast)

n/a Beiträge
 
#1

Projektoptionen

  Alt 10. Nov 2015, 09:34
In den Projektoptionen -> Versionsinformationen kann man sehr schön die für die Ziele wie z.B. Debug 32Bit Windows, Debug 64Bit Windows usw.
die Werte setzen. Hat man aber leider versehentlich nicht in dem Ziel für "Alle Konfigurationen" - 32 Bit Windows Plattform sondern in den "Debug Konfigurationen" etwas geändert, ist es vollkommen wurscht, was von nun an in den "Allgemeinen Konfigurationen" geändert wird.

Kann man die "Debug Konfiguration" wieder los werden ohne in den *.dproj das händisch heraus operieren zu müssen?

In den "Delphi-Compiler" Konfigurationen klappt das ja recht gut. Die hier geänderten Werte werden Fett dargestellt und nach dem löschen des Eintrags, werden wieder die "Allgemeinen Konfigurationen" geholt. Warum ist das in den Versionsinfos nicht so?

Und eine andere Frage dazu: Warum gibt es überhaupt verschiedene Versionsinfos? Bei Win32/64 Release/Debug sind das bereits 4.
Bei FMX sind das ein vielfaches mehr.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.116 Beiträge
 
Delphi 12 Athens
 
#2

AW: Projektoptionen

  Alt 12. Nov 2015, 08:02
Ich sehe das als Bug an.
Wenn ich VersionsInfo ändere, dann sollte das auch passieren.

Rollo
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.800 Beiträge
 
Delphi 12 Athens
 
#3

AW: Projektoptionen

  Alt 12. Nov 2015, 10:10
Es fehlt ein Tool, das bequem die DPROJ auswertet, entkrautet, anzeigt.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
SMO

Registriert seit: 20. Jul 2005
178 Beiträge
 
Delphi XE6 Professional
 
#4

AW: Projektoptionen

  Alt 12. Nov 2015, 16:23
Kann man die "Debug Konfiguration" wieder los werden ohne in den *.dproj das händisch heraus operieren zu müssen?
Nicht dass ich wüsste. Nervt mich auch. Diese Versionsinfo-Einstellungen benötigen insgesamt eine Überarbeitung.

In den "Delphi-Compiler" Konfigurationen klappt das ja recht gut. Die hier geänderten Werte werden Fett dargestellt und nach dem löschen des Eintrags, werden wieder die "Allgemeinen Konfigurationen" geholt. Warum ist das in den Versionsinfos nicht so?
Warum das so ist, lässt sich leicht erklären. Die Optionen, bei denen es schön funktioniert, haben alle ihren eigenen XML-Tag. Zum Beispiel für den Exe-Ausgabepfad:
"<DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>"
Steht z.B. in der Basiskonfiguration / allgemeine Konfiguration. Wenn dann in einem Kind, z.B. Win32 Release, dieser XML-Tag nicht aufgeführt ist, wird der Wert einfach vom Elternteil geerbt. Ist der Tag im Kind neu definiert (z.B. "<DCC_ExeOutput>.\</DCC_ExeOutput>"), dann überschreibt dieser Wert natürlich den geerbten.

Bei den Versionsinfos ist es nun leider so, dass alle Strings in einen einzigen Tag verwurstet sind:

<VerInfo_Keys>CompanyName=Foo;FileDescription=Bar; FileVersion=1.0.0.0;InternalName=undsoweiter...</VerInfo_Keys>

D.h. es ist unmöglich, in einer abgeleiteten Konfiguration nur einen dieser Werte (z.B. FileVersion) zu überschreiben und den Rest unverändert von der übergeordneten Konfiguration zu erben!


Ein weiteres Ärgernis für mich ist auch die fehlende Synchronisation zwischen der binären FileVersion & ProductVersion und den gleichnamigen Strings.
Eine VersionInfo-Ressource einer DLL/EXE fängt nämlich gewöhnlich mit einem binären 'VS_VERSION_INFO' Block an (siehe TVSFixedFileInfo in Winapi.Windows), der FileVersion, ProductVersion und ein paar Kleinigkeiten mehr enthält. Danach folgt eine 'StringFileInfo' Tabelle, welche die bekannten Name=Wert Stringpaare enthält, darunter eben auch nochmal FileVersion und ProductVersion. Ich finde, es sollte zumindest eine Option geben, diese zu synchronisieren. Denn Delphi macht das auch jetzt schon, aber nur halbherzig:

Wenn man in den Delphi-Optionen "Auto increment build number" einstellt, dann erhöht Delphi die Build-Nummer des Binärwerts automatisch, und setzt den FileVersion String in der Tabelle auf denselben Wert (aber nur, wenn beide vorher identisch waren!).
Benutzt man allerdings statt "Auto increment build number" die Option "Auto generate build number", dann werden nur Release- und Build-Nummer des Binärwerts aktualisiert und der FileVersion String bleibt unverändert!

Wenn man im Windows Explorer die Dateieigenschaften ansieht, bekommt man übrigens als "Dateiversion" den Binärwert zu sehen und als "Produktversion" den ProductVersion String.


Und eine andere Frage dazu: Warum gibt es überhaupt verschiedene Versionsinfos? Bei Win32/64 Release/Debug sind das bereits 4.
Bei FMX sind das ein vielfaches mehr.
Nun, es kann durchaus sinnvoll sein, für die verschiedenen Konfigurationen jeweils unabhängige Versionsnummern zu haben. Aber gegen eine Option à la "Diese Versionsinfos global für alle Konfigurationen nutzen" (mit automatischen Update der Release/Build-Nummer) hätte ich auch nichts.

Geändert von SMO (12. Nov 2015 um 16:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#5

AW: Projektoptionen

  Alt 12. Nov 2015, 16:57
Aber gegen eine Option à la "Diese Versionsinfos global für alle Konfigurationen nutzen" (mit automatischen Update der Release/Build-Nummer) hätte ich auch nichts.
Gibt's da nicht was von Andreas? Set Project Versioninfo dialog
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Projektoptionen

  Alt 12. Nov 2015, 17:24
Das nutzte ich auch immer
Viel komfortabler als die Standard-Optionen
  Mit Zitat antworten Zitat
SMO

Registriert seit: 20. Jul 2005
178 Beiträge
 
Delphi XE6 Professional
 
#7

AW: Projektoptionen

  Alt 12. Nov 2015, 17:44
Danke für den Tipp, kannte ich noch nicht!
Und das obwohl ich schon lange Andreas' IDE Fix Pack benutze...

Das Problem mit der automatischen Aktualisierung/Inkrementierung löst das aber wohl nicht.
  Mit Zitat antworten Zitat
Bambini
(Gast)

n/a Beiträge
 
#8

AW: Projektoptionen

  Alt 13. Nov 2015, 09:45
Nun, es kann durchaus sinnvoll sein, für die verschiedenen Konfigurationen jeweils unabhängige Versionsnummern zu haben. Aber gegen eine Option à la "Diese Versionsinfos global für alle Konfigurationen nutzen" (mit automatischen Update der Release/Build-Nummer) hätte ich auch nichts.
Bei den unterschiedlichen Plattformen (Win/Mac/iOS/Android) kann ich das noch nachvollziehen,
aber warum sollte eine iOS Version für den Simulator im Debug Modus eine andere Version tragen als eine Debug Version auf dem 32 Device oder 64 Bit Device? Ich tue mir auch schwer, einen Grund zu finden warum die Version zwischen Debug und Release unterschieden wird.

Eine weiter schlimme Baustelle ist dann noch der Bereitstellungsdialog, also welche Datei wird wann wohin kopiert. Man hat schon einiges an Dialogen gesehen, die Bedienung dieser Maske gehört wahrlich zu der dunkelsten Seite von Delphi. Habe selten so geflucht.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Projektoptionen

  Alt 13. Nov 2015, 10:10
Eine weiter schlimme Baustelle ist dann noch der Bereitstellungsdialog, also welche Datei wird wann wohin kopiert. Man hat schon einiges an Dialogen gesehen, die Bedienung dieser Maske gehört wahrlich zu der dunkelsten Seite von Delphi. Habe selten so geflucht.
Die Oberfläche des Bereitstellungs-Manager ist wahrlich keine Perle.

Aber das was, wann wohin kommt ist eigentlich klar:

Alles kommt dahin, wo man es angegeben hat und zwar sofort bei der Auslieferung (wenn die Option Überschreiben auf immer steht).

Aber Vorsicht, bei voreiligen Schlüssen!

Dateien, die als Remote-Pfad .\assets\internal (Android) bzw. StartUp\Documents\ (alle anderen Plattformen) eingestellt haben, liegen gesichert an diesem Ort. Diese Dateien werden dann aber nochmals beim Start der Anwendung an eine andere Stelle kopiert (wenn es diese Dateien dort noch nicht gibt).

Somit liegen diese Dateien also dann doppelt auf dem Device!

Möchte ich dieses Kopiere mal so ein paar Dateien an andere Orte Verhalten für die Datei foo.txt nicht haben, dann gibt man dort einfach einen Remote-Pfad an, der nicht .\assets\internal bzw. StartUp\Documents\ lautet.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:35 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