#pragma comment( lib, "version" )
struct FileVersion
{
DWORD dwLeftMost;
DWORD dwSecondLeft;
DWORD dwSecondRight;
DWORD dwRightMost;
bool IsLower( const FileVersion& ver )
{
return dwLeftMost < ver.dwLeftMost ? true :
dwSecondLeft < ver.dwSecondLeft ? true :
dwSecondRight < ver.dwSecondRight ? true :
dwRightMost < ver.dwRightMost ? true : false;
}
};
static void GetFileVersion( const CString& fileNameWithPath, FileVersion& fileVersion )
{
DWORD dwDummy;
DWORD dwFVISize = GetFileVersionInfoSize( fileNameWithPath , &dwDummy );
LPBYTE lpVersionInfo = new BYTE[dwFVISize];
::GetFileVersionInfo( fileNameWithPath , 0 , dwFVISize , lpVersionInfo );
UINT uLen;
VS_FIXEDFILEINFO* lpFfi;
::VerQueryValue( lpVersionInfo , _T("\\") , (LPVOID *)&lpFfi , &uLen );
DWORD dwFileVersionMS = lpFfi->dwFileVersionMS;
DWORD dwFileVersionLS = lpFfi->dwFileVersionLS;
delete[] lpVersionInfo;
fileVersion.dwLeftMost = HIWORD(dwFileVersionMS);
fileVersion.dwSecondLeft = LOWORD(dwFileVersionMS);
fileVersion.dwSecondRight = HIWORD(dwFileVersionLS);
fileVersion.dwRightMost = LOWORD(dwFileVersionLS);
}
Kategorie: Win32
Mein Installations-Tool, das Easy Installation System, ist jetzt auf Google Code verfügbar. EIS ist ein vollständiges Installationssystem, das in MASM32 geschrieben wurde. Es ist in deutsch und englisch verfügbar und für RAR-Dateien ausgelegt. Weitere Details auf der Projektseite: http://code.google.com/p/eis/
Die Entscheidung es OpenSource zu machen fiel, da ich leider nicht mehr genug Zeit habe es zu pflegen. Ich fände es allerdings schade, wenn das Projekt einfach so in der Versenke verschwinden würde.
Ich werde zwar versuchen, das Projekt weiter zu verwalten, aber viel Zeit kann und will ich dafür nicht mehr investieren.
Bisher habe ich Programme immer in MASM32 geschrieben, wenn es darum ging, möglichst effiziente und platzsparende Executables zu erzeugen. Mann kann aber auch prima mit nativem C oder C++ die Dateigröße drastisch reduzieren. Weiterlesen