![]() |
Versionsnummern seiner Anwendung unter Vista ermitteln?
Hallo zusammen,
habe nun schon einiges ausprobiert um auch unter Vista die Versionsnummern meiner Exe auszulesen... :? Momentan verwende ich diese Funktion: ![]() Aber auch damit bekomme ich unter Vista keine Versionsanzeige. Liegt das am Framework? Hat da jemand schon Erfahrung, bzw. eine Idee wie man (wenn möglich) mit einer Funktion unter allen BS die Versionsnummern heraus bekommt? |
Re: Versionsnummern seiner Anwendung unter Vista ermitteln?
Ich habe mich erst heute für die gleiche Lösung entschieden und diese auch unter Vista getestet. Dabei bin ich auf keine Probleme gestoßen, auch nicht ohne administrative Rechte.
...:cat:... |
Re: Versionsnummern seiner Anwendung unter Vista ermitteln?
Das ist ja komisch.
Allerdings nutze ich noch das RC2 von Vista. Könnte es sein, dass dort GetFileVersionInfoSize nicht funktioniert? |
Re: Versionsnummern seiner Anwendung unter Vista ermitteln?
ähm, ich verwende eine ganz andere Version der GetFileVersion (schon seit mind. 2 Jahren). Nun hab ich auch VISTA und es funzt immer noch:
Delphi-Quellcode:
(Achtung, andere Parameterübergabe) Was mir auffällt an DEINER Version, das ein DUMMY verwendet wird, HIER nicht!
function GetFileVersion:String;
var Filename: string; Size, Size2: integer; Buffer, Buffer2: pointer; begin Result:= '?'; Filename:= Application.ExeName; Size := GetFileVersionInfoSize(pchar(Filename), integer(Buffer)); GetMem(Buffer,Size); try if GetFileVersionInfo(pchar(Filename), 0, Size, Buffer) then begin if VerQueryValue(Buffer, '\', Buffer2, Size2) then begin with TVSFixedFileInfo(Buffer2^) do begin Result := inttostr(pword(integer(@dwFileVersionMS)+2)^)+'.'+ inttostr(pword(integer(@dwFileVersionMS)+0)^)+''+ inttostr(pword(integer(@dwFileVersionLS)+2)^)+' -'+ inttostr(pword(integer(@dwFileVersionLS)+0)^); end; end; end; finally Dispose(Buffer); end; end; // EDIT: Ich korrigiere mich gerade, die Funktion scheint tatsächlich nicht mehr zu funzen, habe dummerweise nach meinem LABEL der Versionsnummer geschaut *gmpf* |
Re: Versionsnummern seiner Anwendung unter Vista ermitteln?
Jetzt sind schon 2 Bestätigungen, dass es grundsätzlich funktioniert. :thumb:
Bleiben nur 2 Möglichkeiten, warum es bei mir nicht geht: 1.) Vista untersützt diese Funktion nicht im RC 2 ... 1.) Vista Version: da habe ich die Ultimate aktiviert |
Re: Versionsnummern seiner Anwendung unter Vista ermitteln?
Jürgen, ich habe meinen Beitrag nochmal editiert
> EDIT: Ich korrigiere mich gerade, die Funktion scheint tatsächlich nicht mehr zu funzen, habe dummerweise nach meinem LABEL der Versionsnummer geschaut *gmpf* Es geht tatsächlich unter Vista nicht mehr wenn ich das Projekt unter XP compiliere. Nun habe ich eben unter VISTA kompiliert, und dort zeigt er mir in einer Maske tatsächlich die Versionnummer an. Hast Du auch unter Vista kompiliert? |
Re: Versionsnummern seiner Anwendung unter Vista ermitteln?
@Ralf,
Danke für diese Rückmeldung! Nein, ich hatte unter Windows XP kompiliert. Dann werde ich mal mein Delphi 7 unter Vista installieren und mein Projekt dort kompilieren. Ich werde mein Ergebnis dann hier posten. |
Re: Versionsnummern seiner Anwendung unter Vista ermitteln?
Unsere unter W2K compilierten Programme haben kein Problem.
Verwendet wird das Property FileVersion der Klasse TJclFileVersionInfo der Jedi-Version 1.20 |
Re: Versionsnummern seiner Anwendung unter Vista ermitteln?
JCL 1.20? Mach besser einen Antiquitaetenhandel auf. :-)
Kannst du mal pruefen ob die aktuelle JCL immer noch funktioniert? |
Re: Versionsnummern seiner Anwendung unter Vista ermitteln?
Zitat:
Aber wie ist es in anderer Richtung? Lässt sich die Version eines unter Vista compilierten Programms unter XP ermitteln? Wohl eher nicht, wie? Abgesehen davon finde ich es schonmal traurig, dass API-Funktionen anscheinend so verändert wurden, dass das ein neueres Betriebssystem ältere Funktionen nicht mehr "bedienen" kann. |
Re: Versionsnummern seiner Anwendung unter Vista ermitteln?
Wenn ich heute Abend D7 unter Vista installieren kann und sich auch meine Komponenten dann einbinden lassen, werde ich auch den ""Gegentest" machen.
Also die unter Vista kompilierte Anwendung unter XP testen. Komme eben leider erst heute Abend dazu... :wink: |
Re: Versionsnummern seiner Anwendung unter Vista ermitteln?
Zitat:
zum laufen bringe. Zitat:
|
Re: Versionsnummern seiner Anwendung unter Vista ermitteln?
jcld6.inc wird vom Installer gebaut.
|
Re: Versionsnummern seiner Anwendung unter Vista ermitteln?
wer benutzt den Installer? tss :wink:
|
Re: Versionsnummern seiner Anwendung unter Vista ermitteln?
Hallo zusammen!
ich wollte meine BPL/Programm-Version ebenfalls über die Funktion ![]() Da ich kein Vista in greifbarer Nähe habe, die Frage, was aus den oben genannten Versuchen geworden ist... Ich kann (und will) mir nicht vorstellen, wieso MS diese Funktion wirkungslos werden lässt, sofern es nicht unter Win XP compiliert hat... Sollte ich also lieber sichergehen und eine Konstante im BPL-Plugin angeben, anstatt mich auf solche Funktionen verlassen? Wenn man nur die Info-Anzeige damit füttern möchte, wäre ein Fehler ja nicht unbedingt tragisch, aber für Update- Abgleichungen hat das u.U. fatale Folgen... Gruß Pfoto |
Re: Versionsnummern seiner Anwendung unter Vista ermitteln?
Ich habs gerade nochmal getestet. Es geht einwandfrei. Den Fehler, den ich beim 1. Mal gemacht habe war, das ich eine Manifest Datei fest als Resource eingebunden habe - diese galt natürlich nur für Win XP. Nun habe ich die Resource aus der .dpr rausgenommen und es läuft wunderbar, er zeigt mir mit der Funktion die ich oben gepostet habe, auch die komplette Versionnummer a la 8.0.1.222 an.
Es sei also jedem gewarnt, das XP Manifest in der .dpr zu lassen, besser rausmachen und die Manifest Datei manuell beifügen (oder halt das VISTA Manifest als Resource zu nehmen). Die Manifest ist wichtig, falls Dein Programm Admin Funktionen braucht, sonst gibts bei mir jedenfalls nen Hänger bei SQL Query Abfragen. Ich hab ziemlich viel herumexperimentiert, aber das einzige Template wie hier funktioniert nur. Eine Beispiel Manifest - Text im Editor einfügen - (Deine Anwendung heisst z.B. MalProgramm.exe dann heisst die Manifestdatei MalProgramm.exe.manifest) -> also speichern unter MalProgramm.exe.manifest (Parameter nicht gesetzt, achte auf MyApplication sowie MyDescription)
Delphi-Quellcode:
bei "level" können noch andere Werte eingetragen werden, jedoch weigert sich meine "noch BETA - 6000 Build" irgendwas anderes anzunehmen, das Programm startet erst gar nicht :(
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="MyApplication" type="win32" /> <description>MyDescription</description> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="asInvoker" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> </assembly> |
Re: Versionsnummern seiner Anwendung unter Vista ermitteln?
Zitat:
Ich benutze Skin-Komponenten, brauche also kein XP-Manifest. Müsste ja dann (eigentlich) bei mir funktionieren... Danke für Deine schnelle Info! Gruß Pfoto |
Re: Versionsnummern seiner Anwendung unter Vista ermitteln?
Hallo Pfoto,
leider bin ich aus zeitlichen Gründen noch nicht dazu gekommen, D7 mit meinen notwendigen Komponenten unter Vista zu installieren. Spätestens am Wochenende weiß ich mehr. |
Re: Versionsnummern seiner Anwendung unter Vista ermitteln?
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
inzwischen habe ich nun D7 unter Vista installiert bekommen und auch meine Komponenten mit einbinden können. (habe somit auch einiges über Vista lernen "dürfen" :wink: ) Fakt ist: - unter meinem Vista Relase Candidate 2 (!) funktioniert GetFileVersionInfo nach dem kompilieren immern noch NICHT. Als Ausgabe erscheint: unzulässige Daten - VOR dem kompilieren ließ sich auch der Email Client (Windows Mail) nicht starten. (über ShellExecute...) Nach dem kompilieren funktionierte dieses aber. Die Frage für mich ist nun, ob das ganze an meiner Windows-Testversion (RC 2) liegt. Könnte vllt. jemand der schon Vista im Einsatz hat in meinem anhängenden Programm testen, ob bei ihm die Versionsnummer angezeigt wird? Aufzurufen wäre das ganze unter | Einstellungen/Info | über diesen Rechner... In der sich öffnenden Aboutbox wird unterhalb der Überschrift in roter Schrift die Versionsnummer angezeigt. Achtung: werden unter | Einstellungen/Info | ... die "Einstellmöglichkeiten" ausprobiert, werden diese Einstellungen in der Regstry abgespeichert. (zu finden unter: HKEY_CURRENT_USER -> Software\SpeziellerRechner...) |
Re: Versionsnummern seiner Anwendung unter Vista ermitteln?
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Jürgen,
das mit dem Windows Mail liegt vielleicht daran, das er sich beim allerersten Mal ja erst einrichtet? Also Deine Funktion der GetFileVersionInfo geht tatsächlich nicht unter VISTA. In die Registry schreibt er aber ganz brav in HKCU\Software\SpeziellerRechner. Ich hab doch oben schon meine Version GetFileVersion gepostet, hier ist ein komplettes Projekt, das auch unter Vista funzt, egal ob unter XP oder Vista kompiliert (ab Delphi 3)! |
Re: Versionsnummern seiner Anwendung unter Vista ermitteln?
Klasse, vielen Dank für's Posten!
Gruß Pfoto |
Re: Versionsnummern seiner Anwendung unter Vista ermitteln?
OT (@Jürgens Download): Ich hoffe, dass jetzt nicht innerhalb kürzester Zeit 50% der neuen Tools über geskinnte Oberflächen verfügen, die auch unter XP aussehen wie bei Vista. Abgesehen davon, dass diese Programme gerade mit schwachbrünstigen Grafikkarten (Notebooks...) langsam werden und wie Kaugummi reagieren - wer die visuellen Styles ausschalten möchte (und das geht auch unter Vista), der hat sicherlich auch seinen Grund dazu.
|
Re: Versionsnummern seiner Anwendung unter Vista ermitteln?
Liste der Anhänge anzeigen (Anzahl: 1)
Moin moin zusammen. Im Anhang ist die D6-Version von Ralfs GetFileVersion. // Grüße Martin
|
Re: Versionsnummern seiner Anwendung unter Vista ermitteln?
Hallo zusammen,
habe nun einiges probiert... Auch den Source zuerst übernommen von Ralf und jetzt von mschaefer...(Danke an dieser Stelle für eure Mühen) Bei mir will es aber einfach nicht funktionieren. :cry: Ich habe jetzt das Projekt von mschaefer komplett in ein neues Projekt übernommen.
Delphi-Quellcode:
Und ratet mal: es funktioniert nicht, es erscheint nur das Fragezeichen....
unit GetFileVersionTest;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; procedure Label1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; function GetFileVersion: string; implementation {$R *.dfm} function GetFileVersion: string; var Filename: string; Size, Size2: Cardinal; Buffer, Buffer2: pointer; begin Result := '?'; Filename := Application.ExeName; Size := GetFileVersionInfoSize(pchar(Filename), Cardinal(Buffer)); GetMem(Buffer, Size); if Size > 0 then try if GetFileVersionInfo(pchar(Filename), 0, Size, Buffer) then begin if VerQueryValue(Buffer, '', Pointer(Buffer2), Size2) then begin with TVSFixedFileInfo(Buffer2^) do begin Result := inttostr(pword(integer(@dwFileVersionMS) + 2)^) + '.' + inttostr(pword(integer(@dwFileVersionMS) + 0)^) + '' + inttostr(pword(integer(@dwFileVersionLS) + 2)^) + ' - ' + inttostr(pword(integer(@dwFileVersionLS) + 0)^); end; end; end; finally Dispose(Buffer); end; end; procedure TForm1.Label1Click(Sender: TObject); begin Label1.Caption := GetfileVersion end; end. Nehme ich das Projekt von mschaefer und kompiliere dieses, funktioniert es!!! :gruebel: Ich sehe zw. meinem Projekt und dem Projekt von mschaefer keinen Unterschied! (außer dass ich mir den Button gespart habe...) Was kann das denn noch sein? Ich bin da nun ziemlich ratlos. Für verständliche Ratschläge wäre ich sehr dankbar. //Edit: Mir kam gerade noch eine Idee. Ich habe bis jetzt nur von der Original CD installiert, also noch keine SP... Hole ich gleich mal nach. |
Re: Versionsnummern seiner Anwendung unter Vista ermitteln?
Hallo zusammen,
die Lösung des Problemes welches ich hatte, will ich hier nicht vorenthalten; evtl. geht es anderen ja noch genauso. Ein unter Windows XP erstelltes Projekte kopiere ich komplett nach VISTA. In den Projekteigenschaften wo die Versionsnummer steht, hatte ich unter Windows XP dann auch einen Kommentar hinterlegt. Genau hier lag das Problem. Bei mir wird unter VISTA der Kommentar falsch übernommen! Es standen tausende von sinnlosen Zeichen drin. Der Originaltext bestand aber weiter -deswegen hatte ich es ja auch nicht sofort finden können- aber "hintendran" am Kommentar folgten dann tausende sinnloser Zeichen.Im Projekteigenschafts-Fenster sieht man ja erst einmal nur einen Teil des Kommentars. Das Problem war also NICHT "GetFileVersion", sondern das D7 die Projekteigenschaften nicht mit kompilieren konnte, wegen dem falsch "konvertierten" Komentar. Auszugsweise "einige" der Zeichen, welche bei mir im Kommnetar mit standen: ... (BinÃÃÃ⠀ ’†â€ ™Ãƒââââ ‚¬Å¡Ã‚¬Ã‚ ÃƒÂ¢........... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:41 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