(inno setup)
April 5, 2010 Admin Leave a comment Go to comments
Melengkapi koleksi artikel saya tentang pembuatan paket instalasi, kali ini kita akan
menambahkan serial number pada paket instalasi yang kita buat menggunakan Inno Setup.
IKG (Inno Key Generator) adalah Third-Party files yang akan kita gunakan pada artikel ini dan
Inno Setup yang saya gunakan adalah versi 5.0.8.
Silahkan Anda download IKG dari situs resminya atau bisa juga download disini tetapi saya
lebih menyarankan Anda untuk mendownload dari link ke dua saja karena sudah saya seleksi
file-file apa saja yang dibutuhkan.
Jika sudah selesai downloadnya silahkan Anda ekstrak file IKG.rarnya, berikut adalah penjelasan
singkat tentang file-file yang ada di dalam file IKG.rar
Oke langsung saja Anda jalankan file IKG.exe, setelah itu akan tampil form berikut :
Langkah pertama yang harus kita lakukan adalah mengeset password IKG, agar tidak semua
orang bisa menggunakan tool ini.
Untuk menyederhanakan pembahasan, informasi yang akan kita tambahkan pada saat instalasi
kita batasi sebagai berikut :
1. Registered Name
2. Registered Company
3. Registration Code
4. Private Key
Maka konfigurasi yang harus kita set pada tool IKG adalah sebagai berikut :
Kita tinggal menginputkan informasi Registered Name dan Organisation, untuk informasi
Registration Code dan Private Key sudah otomatis terisi.
Jika sudah kita langsung saja simpan file Inno Keynya, file ini berisi informasi Registered Name,
Registered Company, Registration Code dan Private Key (sesuai setting diatas) yang sudah
dienkripsi.
Jadi jika kita akan membuat file setup berikutnya, kita harus mengetik ulang informasi
Registered Name dan Registered Company yang lain (unik) dan menyimpan ulang file Inno Key
(sebaiknya dengan nama yang berbeda).
Sampai disini kita akan memasuki bagian yang paling menyenangkan yaitu coding . Kita akan
menambahkan beberapa baris kode pada bagian [Files] dan [Code].
view source
print?
001 [Files]
005
006 [Code]
010 const
012
013 var
016
018 begin
022
027
RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion',
030
'RegisteredOwner', UserValues[0]);
RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion',
031
'RegisteredOrganization', UserValues[1]);
035 end;
036
{ Try to find the settings that were stored last time (also see
037
below). }
042
043 end;
044
046 begin
052 end;
053
055 var
057
058 begin
062 begin
064
066
068
073
076 else
077 begin
079
082
083 end
084 end
085 end;
086
088 begin
090 end;
091
093 begin
095 end;
096
098 begin
101 end;
102
104 begin
106 end;
Jika sudah selesai silahkan compile (CTRL+F9) skrip inno setup Anda, dan ingat skrip diatas
hanya potongan skrip inno setup. Contoh skrip yang lengkap bisa Anda lihat disini dan sini.
Jika kita mencoba memasukkan informasi registrasi yang salah, maka akan tampil pesan berikut :
Selamat mencoba
[Files]
;file klien-1.iky dihasilkan oleh tool IKG
Source: klien-1.iky; DestDir: {tmp}; Flags: ignoreversion
Source: ISID.dll; DestDir: {sys}; Flags: ignoreversion
[Code]
function ValidateSerialNumber(InnoKeyFile, User, Orgn, ProdCode, HDD, MAC,
PrivateKey, Serial: String): Boolean;
external 'ValidateSerialNumber@files:ISID.dll stdcall';
const
INNO_KEY = 'klien-1.iky';
var
UserPage : TInputQueryWizardPage;
UserValues : TArrayOfString;
procedure InitializeWizard();
begin
{ create the custom page }
UserPage := CreateInputQueryPage(wpInfoBefore, 'Informasi Registrasi',
'Anda memerlukan user yang valid agar bisa melanjutkan proses instalasi',
'Masukkan informasi registrasi (case sensitive), kemudian klik
tombol Lanjut >.');
{ Try to find the settings that were stored last time (also see
below). }
UserPage.Values[0] := GetPreviousData('Name', UserValues[0]);
UserPage.Values[1] := GetPreviousData('Company', UserValues[1]);
UserPage.Values[2] := GetPreviousData('Unlock', UserValues[2]);
UserPage.Values[3] := GetPreviousData('Private', UserValues[3]);
end;
begin
Result := True;
Result := False;
UserValues[0] := UserPage.Values[0];
UserValues[1] := UserPage.Values[1];
UserValues[2] := UserPage.Values[2];
UserValues[3] := UserPage.Values[3];
end
end
end;
Sebelumnya saya ucapkan terima kasih kepada salah seorang pengunjung blog saya yang sudah
memberikan koreksi pada salah satu artikel saya yang berjudul Menambahkan serial number
pada paket instalasi (inno setup).
Karena adanya koreksi itu saya jadi punya ide untuk menulis artikel ini
Oke kita langsung saja, file library yang akan kita gunakan disini adalah IKGCG.DLL (untuk
generate serial number) dan ISID.DLL (untuk melakukan validasi serial number)
Langkah awal sebelum kita masuk ke bagian kode program adalah membuat file Inno Key yang
berfungsi sebagai public key yang akan kita distribusikan bersama aplikasi.
Bagaimana cara membuat file Inno Key ini, Anda bisa merujuk ke artikel saya yang berjudul
Menambahkan serial number pada paket instalasi (inno setup).
download file IKGCG.rar, ekstrak dan copykan ke folder project. Berikut adalah source code
lengkapnya :
view source
print?
01 Option Explicit
02
Private Declare Function GenerateSerialNumber Lib "IKGCG.DLL" (ByVal
innoKeyFile As String, ByVal User As String, ByVal Orgn As String, ByVal
03
ProdCode As String, ByVal HDD As String, ByVal MAC As String, ByVal
privateKey As String, ByVal UnlockCode As String) As Boolean
04
05 Private Function getSerialNumber(ByVal registeredName As String, ByVal
organisation As String) As String
06 Dim innoKeyFile As String
17
18 Private Sub cmdGenerate_Click()
txtSerialNumber.Text = getSerialNumber(txtRegisteredName.Text,
19
txtOrganisation.Text)
20 End Sub
Hal penting yang perlu diperhatikan pada source code diatas adalah nilai variabel privateKey,
nilai ini harus sama dengan nilai PRIVATE KEY pada saat membuat file Inno Key
view source
print?
01 Option Explicit
02
Private Declare Function ValidateSerialNumber Lib "ISID.DLL" (ByVal
innoKeyFile As String, ByVal User As String, ByVal Orgn As String, ByVal
03
ProdCode As String, ByVal HDD As String, ByVal MAC As String, ByVal
privateKey As String, ByVal Serial As String) As Boolean
04
Public Function isValidSerialNumber(ByVal registeredName As String, ByVal
05
organisation As String, ByVal serialNumber As String) As Boolean
06 Dim innoKeyFile As String
15
16 Public Sub Main()
17 Dim registeredName As String
18 Dim organisation As String
19 Dim serialNumber As String
20
21 registeredName = GetSetting("MyApp", "Aktivasi", "RegisteredName", "")
22 organisation = GetSetting("MyApp", "Aktivasi", "Organisation", "")
23 serialNumber = GetSetting("MyApp", "Aktivasi", "SerialNumber", "")
24
25 If isValidSerialNumber(registeredName, organisation, serialNumber) Then
26 'TODO : tampilkan form utama
27 Else
28 frmAktivasi.Show
29 End If
30 End Sub
view source
print?
01 Option Explicit
02
13 Else
14 MsgBox "Aktivasi gagal", vbExclamation, "Peringatan"
15 End If
16 End Sub
17
18 Private Sub Command1_Click()
19 Unload Me
20 End Sub
Selamat MENCOBA
Option Explicit
--------------------------------------------------------------------
Option Explicit
----------------------------------------------------------------------
Option Explicit
Else
MsgBox "Aktivasi gagal", vbExclamation, "Peringatan"
End If
End Sub