30 Juni 2009

Mendapatkan Informasi File Aplikasi

File aplikasi yang mempunyai ekstensi seperti .exe atau .dll bisa memiliki informasi yang berkaitan dengan file tersebut. Misalnya versi dari file, perusahaan, keterangan, atau apa pun yang kita mau. Informasi tersebut akan menyatu dengan file aplikasi yang bersangkutan. Informasi ini bisa kita dapatkan dengan menampilkan properties dari file aplikasi itu. Jika file aplikasi tersebut memiliki informasi, maka bisa kita lihat pada tab Version dari properties file tersebut.
Menambahkan informasi pada file aplikasi bisa memiliki keuntungan. Misalnya bila kita mengembangkan sebuah aplikasi dan ada update dari file aplikasi untuk keperluan penambahan fitur atau perbaikan terhadap kesalahan/bug. Aplikasi yang dibuat bisa melakukan update otomatis ke suatu lokasi tertentu jika ditemukan file aplikasi yang sama dengan versi yang lebih baru.
Delphi juga menyediakan sarana untuk menambahkan informasi pada aplikasi yang kita buat. Pada menu Project->Options, terdapat pilihan “Include version information in project” yang harus kita aktifkan (default tidak aktif). Versi file di Windows dibagi menjadi 4 bagian, Major, Minor, Release dan Build. Pilihan “Auto-increment build number” jika di aktifkan, maka angka pada bagian Build akan otomatis ditambah satu jika dilakukan proses build (menu Project->Build <nama_project>/Build All Projects) dan compile.








Pada bagian Project Options tersebut terdapat sejumlah key yang bisa kita beri nilai, seperti CompanyName, FileDescription, FileVersion, dan seterusnya. Untuk mendapatkan informasi dari suatu file aplikasi gunakan cara ini.
uses SysUtils, Windows;

function GetFileVersionInformation(const aFileName, aName: string): string;
const
  LocaleID = '0421';
var
  VerInfoSize, VerValueSize, Dummy: DWORD;
  VerInfo, VerValue: PChar;
begin
  Result := '';
  VerInfoSize := GetFileVersionInfoSize(PChar(aFileName), Dummy);
  if VerInfoSize > 0 then
  begin
    VerInfo := AllocMem(VerInfoSize);
    GetFileVersionInfo(PChar(aFileName), 0, VerInfoSize, VerInfo);
    if VerQueryValue(VerInfo, PChar('StringFileInfo\' + LocaleID + '04E4\' + aName), Pointer(VerValue), VerValueSize) then
      Result := VerValue;
    FreeMem(VerInfo, VerInfoSize);
  end;
end;

Contoh cara menggunakannya:
ShowMessage(GetFileVersionInformation(Application.ExeName, ‘FileVersion’));
ShowMessage(GetFileVersionInformation(Application.ExeName, ‘CompanyName’));

Pada skrip diatas terdapat konstanta LocaleID, karakter tersebut tergantung dari pengaturan lokalisasi/bahasa yang kita pakai. Pada contoh diatas digunakan pengaturan lokalisasi/bahasa Indonesian. Pengaturan tersebut bisa kita lihat pada Project Options.











Bisa juga kita menambahkan informasi tambahan selain yang telah ada. Arahkan cursor sampai pada key paling bawah, kemudian tekan tombol panah bawah. Masukkan nama key dan isi nilai dari key tersebut.

Tidak ada komentar:

Posting Komentar