Wie Version aus Exe auslesen ?



  • Hallo,
    vorab erkläre ich mein Vorhaben, was ich machen will.

    Ich will mir eine Art "Update-Programm" schreiben.
    Dieses Programm liegt im Pfad "X" und soll in einer ComboBox alle Exe-Dateien anzeigen, welche sich im selben Verzeichnis befinden. Als Zusatz, soll hinter den Namen die Dateiversion angezeigt werden. Alle Programme welche sich in dem Ordner befinden, sind Programme welche ich selbst geschrieben habe, als Beispiel "Farbanteil.exe"
    In einer anderen ComboBox wählt man den Pfad des alten Programms, nun wird angezeigt ob die beiden Programme sie selbe Version haben oder nicht. Gibt es eine neue Version, kann man diese mittels eines Buttons auf den neuen Stand bringen.

    Ich hoffe ich habe das Vorhaben so deutlich erklärt dass man weiß, was ich vor habe.

    Mein Problem:
    Um beide Programm-Versionen miteinander vergleichen zu können, muss ich aus der Exe (Eigenschaften->Reiter "Version") die Dateiversion auslesen. Ist dies möglich ?

    Danke



  • static bool getVersion(
    	const STRING &versionFile,
    	unsigned long *major, unsigned long *minor
    )
    {
    	bool	vInfoFound = false;
    	DWORD	dummy1, versionInfoSize;
    	UINT	dummy2;
    
    	versionInfoSize = GetFileVersionInfoSize(
    		versionFile, &dummy1
    	);
    	if( versionInfoSize )
    	{
    		void *data = malloc( versionInfoSize );
    		if( data )
    		{
    			VS_FIXEDFILEINFO	*fixedFileInfo;
    
    			GetFileVersionInfo( versionFile, 0L, versionInfoSize, data );
    			if( VerQueryValue( data, "\\", (void **)&fixedFileInfo, &dummy2 ) )
    			{
    				*major = fixedFileInfo->dwFileVersionMS;
    				*minor = fixedFileInfo->dwFileVersionLS;
    				vInfoFound = true;
    			}
    			free( data );
    		}
    	}
    
    	return vInfoFound;
    }
    

Anmelden zum Antworten