Hinzufügen von Versionsinformationen zu Anwendungen
Dieser Artikel wird ich die Mittel, die die Versionsinformationen verfügbar gemacht werden, kann innerhalb einer Anwendung untersuchen, schreiben eine Klasse, die in jede neue Entwicklung integriert werden kann.
Hinzufügen von Versionsinformationen zu Anwendungen
Letzte Artikel besprach ich das Konzept eines Builds, und warum ein Standardprozess produzieren ein konsistenten Satz von Deliverables war eine gute Sache.
Da die frühesten Computerprogramme bereitgestellt wurden, wollte Entwickler haben irgendwie identifizieren welche Version ein Kunden ausgeführt wurde; Schließlich lohnt es natürlich wissen, ob ein Fehler, den sie Berichten sind bereits behoben wurde. Ziemlich schnell (und offensichtlich) ein numerisches System entwickelt, einfach die Versionsnummer erhöht jedes Mal, wenn eine Release gemacht wurde. Mit steigender Frequenz der Releases Entwickler wollten irgendwie eine neue major Release, verglichen mit einem Zwischenbericht zu unterscheiden: das Konzept von Haupt- und Nebenversionen Versionen eines Programms wurde eingeführt - gonna v2. 0 von v1. 12 vermittelt viel mehr (sogar um Benutzer legen) als Übergang von V12, V13. Die major und minor-Version war für viele Jahre ausreichend und alltäglich, aber als Programme größer und komplexer erfordern häufigere Bugfixes wuchs eine tertiäre Zahl war wendete auf bis zum Ende der Version 'Release' anzugeben. Alle Versionen mit der gleichen Haupt- und Nebenversionen Versionsnummern eine identische Feature-Liste haben sollten, aber sollte auch kumulative Fehlerbehebungen und weitere Verbesserungen ohne Hinzufügen neuer Funktionen als solche. Später, ist es empfehlenswert, fügen Sie die Build-Nummer an die Freigabe, führt eine vollständige Versionsnummer mit vier Komponenten, X.Y.Z.B, wobei X die Hauptversion, Y die Nebenversion, Z die Release-Nummer und B die Buildnummer darstellt geworden. Beachten Sie, dass, obwohl der Minderjährige und Release-Versionen können auf Null zurückgesetzt werden (mit Haupt- und Nebenversionen Versionen), die Build-Nummer wird nie zurückgesetzt und daher immer nimmt mit jeder neuen Version (wenn auch nicht unbedingt streng inkrementelle; es ist sehr möglich, interne Builds innerhalb eines Unternehmens haben, die nicht für Kunden freigegeben sind). Codebeispiel 1 fasst bei jeder Version Nummer Komponente erhöht werden sollte.
| Komponente | Beschreibt | Wann die Schrittweite |
| X | Großen | Nachdem wesentliche Änderungen an der Anwendung vorgenommen wurden |
| Y | Kleinere | Nach der Anwendung wurden neue Features hinzugefügt |
| Z | Version | Jedes Mal, wenn eine kleinere Version mit Bugfixes zur Verfügung gestellt wird |
| B | Build | Jedes Mal, wenn der Buildprozess abgeschlossen ist |
Codebeispiel 1 - Komponenten der Versionsnummer X.Y.Z.B
Obwohl das Konzept der Versionsnummern für ihre eigenen Zwecke Marketingabteilungen entführt werden, sobald es klar war würden, dass viele Menschen investieren in Aktualisierungen wenn die Hauptversionsnummer geändert oder übersprungen Wettbewerb, es immer noch sehr nützlich ist, einige Art der formalen Versionsnummer in Ihren Anwendungen zu haben - es ist viel einfacher zu bestätigen, dass Ihr Client Build 134 ausgeführt wird oder später , anstatt 'SuperApp 97 SR-2a Patch 13 (Y2K)'. Dies wurde besonders wichtig, mit dem Aufkommen der gemeinsam genutzten DLL-Bibliotheken in Windows, die von einem frisch installierten Anwendung ersetzt werden könnte. Obwohl nicht schrecklich gut mit der Nummerierung scheme konsequent, praktisch alle Dateien der Microsoft-Anwendung (EXEs und der DLL) enthalten einige jetzt irgendwie eine 4-stellige Versionsnummer in sie eingebettet. Tatsächlich nutzt Windows 2000 diese Informationen in einem Versuch zu verhindern, dass wichtige Systemdateien, die durch frühere oder manchmal auch spätere Versionen überschrieben werden. Installationsverfahren nutzen diese Informationen durch Warnung, wenn eine Datei mit ähnlichem Namen überschreiben würde aber später Version von sich selbst.
Embedded-Versionsinformationen
Wenn Sie einen auf eine exe- oder DLL-Datei im Explorer Rechtsklick hat die angezeigten Einblendmenü einen Eintrag unten auf 'Eigenschaften' aufgerufen. Diese Auswahl zeigt einige Details über die Datei. Falls verfügbar, zeigt das zweite Register (Version genannt) die Informationen in der Datei über die Versionsnummer, Produktname, Urheberrechtsangaben eingebettet und so weiter. Jede Datei, die eine Ressource-Segment haben kann kann diese Information eingebettet, und dazu gehören Anwendungen, die mit Delphi kompiliert. Microsoft veröffentlicht die Informationen und das Format, die im Ressourcenabschnitt für diese Informationen angezeigt werden bereitgestellt werden muss. In Delphi 2 war der einzige Weg, mit dem dies erreicht werden könnte, durch eine Ressourcendatei mit genau den richtigen Strings innerhalb es, kompilieren es separat mit dem Ressourcencompiler und dann in die Anwendung (diese Bestandteil des Mains build-Prozess) zu verknüpfen. Obwohl nicht schwierig, benötigt diese Schritte ein Maß an Fachwissen und Kompetenz, so dass paar Anwendungsentwickler die Mühe, es zu tun. Innerhalb es ist Ethos, Windows Entwicklung produktiver zu machen führte Delphi 3 einen besonderen Dialog, wobei diese Informationen einfach an die Anwendung befestigt werden konnte. Abbildung 1 zeigt dieser Dialog, Delphi-Projekt im Menü Optionen-Element zur Verfügung.
Durch Ankreuzen der Checkbox am oberen Rand der Registerkarte um zu zeigen, dass die Version Anzahl Informationen enthalten sein sollen, es ist möglich, fügen Sie Details über nicht nur die Versionsnummer, sondern auch Flags zum ob der Build zur Veröffentlichung bestimmt ist, und an der Unterseite ist es möglich eine ganze Liste von vordefinierten Kategorien, z. B. eine Beschreibung der Datei und Copyright Informationen hinzu. Delphi ändert automatisch die FileVersion-Kategorie, da die Modul-Version Anzahl Details oben aktualisiert werden. Wird dieser Dialog bestätigt, erstellt Delphi die erforderlichen Ressourcen-Datei (enthält auch Details wie das Programmsymbol) in eine transparente Schritt, der automatisch in die endgültige ausführbare Datei verknüpft werden soll. Wenn Sie dies, selbst die einfachsten Projekt tun sehen Sie, dass Sie nun mit der rechten auf die ausführbare Datei Maustaste und Versionsinformationen, genau wie alle brav Windows-Anwendungen erhalten.
Welche Version ich bin?
Nun, da wir wissen wie Sie die Versionsinformationen in der Anwendung platzieren, wäre es sinnvoll, tatsächlich auf die Informationen zugreifen. Nach allem, wenn Sie versuchen, über das Telefon herzustellen wäre welche Version ein Benutzers ausgeführt wird es viel einfacher zu beschreiben, wie das Dialogfeld Info statt suchen die Anwendung ausführbare Datei im Explorer, dann Rechtsklick, Eigenschaften auswählen und wählen Sie die Registerkarte 'Version' angezeigt.
Wie die Versionsinformationen nur als Zeichenfolgen in einem bestimmten Format im Ressourcenabschnitt der Anwendung gespeichert ist, wäre es möglich, standard Win32 Ressource Dateibefehle verwenden, um die betreffenden Informationen, Dekodierung der Strukturen zu extrahieren. Jedoch gibt es einige spezifische Win32 API Befehle zur Verfügung, die nur in einer viel bequemer Form dazu. Dies sind GetFileVersionInfoSize (die Details über den Raum benötigt, um die Versionsinformationen speichern zurückgibt), GetFileVersionInfo (die Details in einem vorher angegebenen Puffer der richtigen extrahiert) und VerQueryValue (die eine benannte Version Information aus dem Puffer, z. B. 'LegalCopyright' extrahiert). Wie üblich in zurückgegeben dieser Befehle in der richtigen Reihenfolge aufgerufen werden müssen bei der Interaktion mit der Win32-API Erhaltung bestimmte interne Werte aus vorherigen Befehle durch Var-Parameter.
Es ist eine sehr gute Idee, jede Art von Interaktion mit der Windows-API mit einem mehr Benutzer und Delphi-freundliche Schnittstelle zu kapseln. Typische Delphi-Programmierer will nicht befassen sich mit der Zuweisung der Speicherblöcke und Win32-spezifische Typen wie DWORD und UINT und weder sollten sie. Weit besser Design Nizza-Klasse, die in den besten Traditionen von OO, blendet den rohen Zugriff auf Versionsinformationen und stellt eine weitaus nutzbare Schnittstelle. Dies hat den zusätzlichen Vorteil, dass die Speicherung von diese Versionsinformationen jemals ändern, derselben Klasse die Systemabhängigkeiten Kapseln kann bei Beibehaltung die gleiche öffentliche Schnittstelle.
Es gibt ein paar Dinge zu beachten bei dieser Klasse zu entwerfen. Erstens sollte es sein verwendet werden, bei jeder Anwendungsdatei, einschließlich der, von dem es ausgeführt wird. Zweitens sollten außerdem bieten bequemen Zugang zum Standard und am häufigsten Version Informationen Schlüssel (FileVersion, ProductName etc.) verwendet. Schließlich wie möglich für den Benutzer um zusätzliche benutzerdefinierte Version Schlüssel und Werte in ihrer Struktur bereitzustellen, sollte die Klasse diese auf natürliche Weise verfügbar machen.
Hinzufügen von Versionsinformationen zu Anwendungen
Hinzufügen von Versionsinformationen zu Anwendungen : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Dieser Artikel wird ich die Mittel, die die Versionsinformationen verfügbar gemacht werden, kann innerhalb einer Anwendung untersuchen, schreiben eine Klasse, die in jede neue Entwicklung integriert werden kann.
Hinzufügen von Versionsinformationen zu Anwendungen
Letzte Artikel besprach ich das Konzept eines Builds, und warum ein Standardprozess produzieren ein konsistenten Satz von Deliverables war eine gute Sache.
Da die frühesten Computerprogramme bereitgestellt wurden, wollte Entwickler haben irgendwie identifizieren welche Version ein Kunden ausgeführt wurde; Schließlich lohnt es natürlich wissen, ob ein Fehler, den sie Berichten sind bereits behoben wurde. Ziemlich schnell (und offensichtlich) ein numerisches System entwickelt, einfach die Versionsnummer erhöht jedes Mal, wenn eine Release gemacht wurde. Mit steigender Frequenz der Releases Entwickler wollten irgendwie eine neue major Release, verglichen mit einem Zwischenbericht zu unterscheiden: das Konzept von Haupt- und Nebenversionen Versionen eines Programms wurde eingeführt - gonna v2. 0 von v1. 12 vermittelt viel mehr (sogar um Benutzer legen) als Übergang von V12, V13. Die major und minor-Version war für viele Jahre ausreichend und alltäglich, aber als Programme größer und komplexer erfordern häufigere Bugfixes wuchs eine tertiäre Zahl war wendete auf bis zum Ende der Version 'Release' anzugeben. Alle Versionen mit der gleichen Haupt- und Nebenversionen Versionsnummern eine identische Feature-Liste haben sollten, aber sollte auch kumulative Fehlerbehebungen und weitere Verbesserungen ohne Hinzufügen neuer Funktionen als solche. Später, ist es empfehlenswert, fügen Sie die Build-Nummer an die Freigabe, führt eine vollständige Versionsnummer mit vier Komponenten, X.Y.Z.B, wobei X die Hauptversion, Y die Nebenversion, Z die Release-Nummer und B die Buildnummer darstellt geworden. Beachten Sie, dass, obwohl der Minderjährige und Release-Versionen können auf Null zurückgesetzt werden (mit Haupt- und Nebenversionen Versionen), die Build-Nummer wird nie zurückgesetzt und daher immer nimmt mit jeder neuen Version (wenn auch nicht unbedingt streng inkrementelle; es ist sehr möglich, interne Builds innerhalb eines Unternehmens haben, die nicht für Kunden freigegeben sind). Codebeispiel 1 fasst bei jeder Version Nummer Komponente erhöht werden sollte.
| Komponente | Beschreibt | Wann die Schrittweite |
| X | Großen | Nachdem wesentliche Änderungen an der Anwendung vorgenommen wurden |
| Y | Kleinere | Nach der Anwendung wurden neue Features hinzugefügt |
| Z | Version | Jedes Mal, wenn eine kleinere Version mit Bugfixes zur Verfügung gestellt wird |
| B | Build | Jedes Mal, wenn der Buildprozess abgeschlossen ist |
Codebeispiel 1 - Komponenten der Versionsnummer X.Y.Z.B
Obwohl das Konzept der Versionsnummern für ihre eigenen Zwecke Marketingabteilungen entführt werden, sobald es klar war würden, dass viele Menschen investieren in Aktualisierungen wenn die Hauptversionsnummer geändert oder übersprungen Wettbewerb, es immer noch sehr nützlich ist, einige Art der formalen Versionsnummer in Ihren Anwendungen zu haben - es ist viel einfacher zu bestätigen, dass Ihr Client Build 134 ausgeführt wird oder später , anstatt 'SuperApp 97 SR-2a Patch 13 (Y2K)'. Dies wurde besonders wichtig, mit dem Aufkommen der gemeinsam genutzten DLL-Bibliotheken in Windows, die von einem frisch installierten Anwendung ersetzt werden könnte. Obwohl nicht schrecklich gut mit der Nummerierung scheme konsequent, praktisch alle Dateien der Microsoft-Anwendung (EXEs und der DLL) enthalten einige jetzt irgendwie eine 4-stellige Versionsnummer in sie eingebettet. Tatsächlich nutzt Windows 2000 diese Informationen in einem Versuch zu verhindern, dass wichtige Systemdateien, die durch frühere oder manchmal auch spätere Versionen überschrieben werden. Installationsverfahren nutzen diese Informationen durch Warnung, wenn eine Datei mit ähnlichem Namen überschreiben würde aber später Version von sich selbst.
Embedded-Versionsinformationen
Wenn Sie einen auf eine exe- oder DLL-Datei im Explorer Rechtsklick hat die angezeigten Einblendmenü einen Eintrag unten auf 'Eigenschaften' aufgerufen. Diese Auswahl zeigt einige Details über die Datei. Falls verfügbar, zeigt das zweite Register (Version genannt) die Informationen in der Datei über die Versionsnummer, Produktname, Urheberrechtsangaben eingebettet und so weiter. Jede Datei, die eine Ressource-Segment haben kann kann diese Information eingebettet, und dazu gehören Anwendungen, die mit Delphi kompiliert. Microsoft veröffentlicht die Informationen und das Format, die im Ressourcenabschnitt für diese Informationen angezeigt werden bereitgestellt werden muss. In Delphi 2 war der einzige Weg, mit dem dies erreicht werden könnte, durch eine Ressourcendatei mit genau den richtigen Strings innerhalb es, kompilieren es separat mit dem Ressourcencompiler und dann in die Anwendung (diese Bestandteil des Mains build-Prozess) zu verknüpfen. Obwohl nicht schwierig, benötigt diese Schritte ein Maß an Fachwissen und Kompetenz, so dass paar Anwendungsentwickler die Mühe, es zu tun. Innerhalb es ist Ethos, Windows Entwicklung produktiver zu machen führte Delphi 3 einen besonderen Dialog, wobei diese Informationen einfach an die Anwendung befestigt werden konnte. Abbildung 1 zeigt dieser Dialog, Delphi-Projekt im Menü Optionen-Element zur Verfügung.
Durch Ankreuzen der Checkbox am oberen Rand der Registerkarte um zu zeigen, dass die Version Anzahl Informationen enthalten sein sollen, es ist möglich, fügen Sie Details über nicht nur die Versionsnummer, sondern auch Flags zum ob der Build zur Veröffentlichung bestimmt ist, und an der Unterseite ist es möglich eine ganze Liste von vordefinierten Kategorien, z. B. eine Beschreibung der Datei und Copyright Informationen hinzu. Delphi ändert automatisch die FileVersion-Kategorie, da die Modul-Version Anzahl Details oben aktualisiert werden. Wird dieser Dialog bestätigt, erstellt Delphi die erforderlichen Ressourcen-Datei (enthält auch Details wie das Programmsymbol) in eine transparente Schritt, der automatisch in die endgültige ausführbare Datei verknüpft werden soll. Wenn Sie dies, selbst die einfachsten Projekt tun sehen Sie, dass Sie nun mit der rechten auf die ausführbare Datei Maustaste und Versionsinformationen, genau wie alle brav Windows-Anwendungen erhalten.
Welche Version ich bin?
Nun, da wir wissen wie Sie die Versionsinformationen in der Anwendung platzieren, wäre es sinnvoll, tatsächlich auf die Informationen zugreifen. Nach allem, wenn Sie versuchen, über das Telefon herzustellen wäre welche Version ein Benutzers ausgeführt wird es viel einfacher zu beschreiben, wie das Dialogfeld Info statt suchen die Anwendung ausführbare Datei im Explorer, dann Rechtsklick, Eigenschaften auswählen und wählen Sie die Registerkarte 'Version' angezeigt.
Wie die Versionsinformationen nur als Zeichenfolgen in einem bestimmten Format im Ressourcenabschnitt der Anwendung gespeichert ist, wäre es möglich, standard Win32 Ressource Dateibefehle verwenden, um die betreffenden Informationen, Dekodierung der Strukturen zu extrahieren. Jedoch gibt es einige spezifische Win32 API Befehle zur Verfügung, die nur in einer viel bequemer Form dazu. Dies sind GetFileVersionInfoSize (die Details über den Raum benötigt, um die Versionsinformationen speichern zurückgibt), GetFileVersionInfo (die Details in einem vorher angegebenen Puffer der richtigen extrahiert) und VerQueryValue (die eine benannte Version Information aus dem Puffer, z. B. 'LegalCopyright' extrahiert). Wie üblich in zurückgegeben dieser Befehle in der richtigen Reihenfolge aufgerufen werden müssen bei der Interaktion mit der Win32-API Erhaltung bestimmte interne Werte aus vorherigen Befehle durch Var-Parameter.
Es ist eine sehr gute Idee, jede Art von Interaktion mit der Windows-API mit einem mehr Benutzer und Delphi-freundliche Schnittstelle zu kapseln. Typische Delphi-Programmierer will nicht befassen sich mit der Zuweisung der Speicherblöcke und Win32-spezifische Typen wie DWORD und UINT und weder sollten sie. Weit besser Design Nizza-Klasse, die in den besten Traditionen von OO, blendet den rohen Zugriff auf Versionsinformationen und stellt eine weitaus nutzbare Schnittstelle. Dies hat den zusätzlichen Vorteil, dass die Speicherung von diese Versionsinformationen jemals ändern, derselben Klasse die Systemabhängigkeiten Kapseln kann bei Beibehaltung die gleiche öffentliche Schnittstelle.
Es gibt ein paar Dinge zu beachten bei dieser Klasse zu entwerfen. Erstens sollte es sein verwendet werden, bei jeder Anwendungsdatei, einschließlich der, von dem es ausgeführt wird. Zweitens sollten außerdem bieten bequemen Zugang zum Standard und am häufigsten Version Informationen Schlüssel (FileVersion, ProductName etc.) verwendet. Schließlich wie möglich für den Benutzer um zusätzliche benutzerdefinierte Version Schlüssel und Werte in ihrer Struktur bereitzustellen, sollte die Klasse diese auf natürliche Weise verfügbar machen.
Hinzufügen von Versionsinformationen zu Anwendungen
By Wiezutun
Hinzufügen von Versionsinformationen zu Anwendungen : Mehreren tausend Tipps, um Ihr Leben einfacher machen.