Menambahkan serial number pada paket instalasi (inno setup)
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
- ISID.dll, file ini dibutuhkan untuk melakukan validasi serial number/unlock code yang diinputkan pada saat proses instalasi, otomatis harus kita sertakan pada saat pembuatan paket instalasi.
- IKG.exe adalah tool untuk mengenerate file Inno Key yang berisi informasi user + serial number valid yang sudah terenkripsi,
jadi setiap paket instalasi yang kita buat membutuhkan file inno key yang unik (huhhhh report juga ya) namanya juga mau aman (walaupun tidak 100%) report sedikitkan engga pa2 kan(ralat 1 public key inno bisa untuk beberapa user name yg berbeda). - IKGHelp.pdf, klo yang ini kayaxnya enggak perlu saya jelasin.
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.
Klik menu File -> Change Bank Password
Selanjutnya kita tinggal masukkan passwordnya
Untuk menyederhanakan pembahasan, informasi yang akan kita tambahkan pada saat instalasi kita batasi sebagai berikut :
- Registered Name
- Registered Company
- Registration Code
- 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 :D. Kita akan menambahkan beberapa baris kode pada bagian [Files] dan [Code].
[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 >.'); UserPage.Add('Registered Name:', False); UserPage.Add('Registered Company:', False); UserPage.Add('Registration Code:', False); UserPage.Add('Private Key:', False); { Set default values } SetArrayLength(UserValues, 4); RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion', 'RegisteredOwner', UserValues[0]); RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion', 'RegisteredOrganization', UserValues[1]); if (UserValues[0] = '') and (UserValues[1] = '') then begin RegQueryStringValue(HKCU, 'Software\Microsoft\MS Setup (ACME)\User Info', 'DefName', UserValues[0]); RegQueryStringValue(HKCU, 'Software\Microsoft\MS Setup (ACME)\User Info', 'DefCompany', UserValues[1]); end; { 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; procedure RegisterPreviousData(PreviousDataKey: Integer); begin { Store the settings so we can restore them next time } SetPreviousData(PreviousDataKey, 'Name', UserPage.Values[0]); SetPreviousData(PreviousDataKey, 'Company', UserPage.Values[1]); SetPreviousData(PreviousDataKey, 'Unlock', UserPage.Values[2]); SetPreviousData(PreviousDataKey, 'Private', UserPage.Values[3]); end; function ScriptDlgPages(CurPage: Integer; BackClicked: Boolean): Boolean; var ExpPath: String; begin Result := True; if (CurPage = UserPage.ID) then begin ExtractTemporaryFile(INNO_KEY); { the public key file } ExpPath := ExpandConstant('{tmp}\' + INNO_KEY); Result := False; UserValues[0] := UserPage.Values[0]; UserValues[1] := UserPage.Values[1]; UserValues[2] := UserPage.Values[2]; UserValues[3] := UserPage.Values[3]; if (UserValues[0] = '') or (UserValues[1] = '') or (UserValues[2] = '') or (UserValues[3] = '') then MsgBox('No fields can be blank !', mbError, MB_OK) else begin Result := ValidateSerialNumber(ExpPath, UserValues[0], UserValues[1], '', '', '', UserValues[3], UserValues[2]); if (not Result) then MsgBox('Invalid Entry !', mbError, MB_OK); end end end; function NextButtonClick(CurPage: Integer): Boolean; begin Result := ScriptDlgPages(CurPage, False); end; function BackButtonClick(CurPage: Integer): Boolean; begin Result := True;//ScriptDlgPages(CurPage, True); end; function HasHtmlHelp(): Boolean; begin { HHCTRL.OCX GUID } Result := RegValueExists(HKCR, 'CLSID\{4662DAB0-D393-11D0-9A56-00C04FB68B66}\InprocServer32', ''); end; function HasNoHtmlHelp(): Boolean; begin Result := not HasHtmlHelp; 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 🙂
mas saya udah ngikutin tutor dari anda nah pas saya menjalankan programnya gimana caranya masukin reg code dg private nya mas?
Maksudnya ngejalanin program IKGnya ? Reg code n private nya ngGa usah dimasuxin udah otomatis, nilainya random berdasarkan Registered Name dan Organisation.
Trus klo kita memasukan nilai HDD Serial Number n Mac Address juga otomatis mempengaruhi nilai Reg code n private nya
bukan mas gini mas heheheh newbie mas saya..
kan saya dah ngebuat semua n ngikutin tutorial dari mas!nah pas program saya di jalanin kan keluar tuh Serial number dll!nah yang harus di masukin code apa mas biar proggramnya bisa aktif mas.. tq
Jawabannya udah ada kok mas di tutorialnya, coba diperhatikan lagi klo masih belum ketemu liat gambar INI
Selamat mencoba 🙂
oke makasih banyak mas…
Sama2x
o y mas itu SN yang ngbikin instal cuma 1 komp bsa g?
Bisa aja mas, coba aktifkan pilihan HDD Serial Number tapi sy juga belum mencoba pilihan yg satu ini 😀
Selamat mencoba 🙂
ok mas di coba
mas saya ada masalah mas pas setup ini screenshootnya http://gambargw.awardspace.co.uk/
Expiry Date nya diset tgl brp mas ?
tgl 20 mas… tp kemaren saya juga g make ex date juga tetep kyk gt mas pas di masukkin datanya mas kenapa ya mas
Klo yg sy coba memang bermasalah klo expire datenya diset, tapi klo tanpa expiry date normal kok.
Mungkin setelah pilihan Expire datenya di nonaktifkan hasil perubahannya belum disimpan.
Atw dibaca dulu manualnya kan ada penjelasan tentang itu.
“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).”
Sebagai tambahan aja nih, kemarin saya coba, hanya dengan satu kali pembuatan setup. Kita juga bisa memakainya di banyak komputer dengan serial yang berbeda-beda.
Jadi nggak repot harus bikin 1 setup untuk 1 kali pakai.
Thanks
Oke thank infonya, jadi tinggal memanfaatkan tool IKGnya ya untuk mengenerate serial yg lain ?
Jadi dengan kata lain IKG ini sendiri berfungsi sebagai keygennya ya?
mas mau nanya kodingnya dimana di ketik tu mas???
saya tidak mengerti menempatkan koding nya!
Skrip inno setupkan dikelompokkan dalam section2x, misal :
[Setup]
[Languages]
[Tasks]
[Files]
[Icons]
[Registry]
[Run]
[Code]
nah kodenya ditempatkan di section [Code]
Selamat mencoba 🙂
ok makasi yh mas..
akan saya coba dulu
Oke
maaf
mas bisa kirimkan contoh program yang sudah jadi dan sintaknya mas???
sampe sekarang penempatan kodingnya saya tidak bisa, kirimkan ke email
saya mas, sastra_wij@yahoo.com
Ini mas link downloadnya.
Mas bisa kasihtau g cara bikin Inno key setupnya satu tapi isinya banyak SN nya,soalnya klo bikin lebih dari satu gagal terus
File inno keynya cukup satu aja untuk banyak serial number, coba cek komentar om Jauhary diatas.
Jadi file inno key ini berfungsi sebagai public key yg disertakan pada distribusi inno setupnya, sedangkan private keynya di generate langsung dari tool IKGnya
mas mo nanya pas di bagian tutorial dibawah ini:
Sampai disini kita akan memasuki bagian yang paling menyenangkan yaitu coding 😀 . Kita akan menambahkan beberapa baris kode pada bagian [Files] dan [Code].
itu copy paste scrip nya dimana mas tolong kasih tutorial lengkap mas, kl bisa kasih screnshot nya.
Berhubung skrip inno setup yg lengkap sudah saya bahas disini dan sini kemudian dimana skrip diatas ditempatkan juga sudah saya jelaskan dikomentar sebelum, silahkan dicek.
mas mo nanya kalo pengen buat instaler dengan serial yang unik untuk tiap komputer, saya harus akitifin HDD serial number pada IKG. nah penerapan pada script inno setupnya gmn? otomatis ada tambahan dong pada script inno setupnya? mohon bantuannya mas…
haloooo… mas admin ko ga dijawab???
Sory om baru kembali dari dunia nyata, jadi enggak bisa stand by trus disini.
Kayaxnya bakalan sulit om jika masih menggunakan library IKG karena fungsi GetHDDSerial bawaan IKG setelah sy coba tidak berfungsi dengan baik (gagal membaca serial HDD).
Sy udah coba langsung di skrip inno setup atau memanggilnya dari VB hasilnya sama.
waduh trus da saran ga biar program yg dah saya buat bisa punya serial unik untuk tiap komputer…
Ya udah aktivasinya langsung di pindah ke program aja om.
Setelah instalasi trus jalanin program langsung deh diminta aktivasi
caranya gmn? kasih contoh dong…
Coba ini om
sama aja dong satu serial bs dipake banyak komputer….
Ha ha ha 😀
Kebetulan sy lagi males coding
Coba deh mampir ketempat teman sy aja dulu disini
Kang itu linknya di suspend. Mungkin ada link lain?
Thanks banget kang.
Diatas banyak link om yg mana satu ya?
link yang ini kang http://blog.agungnovian.com/#/activex-agar-software-tidak-dibajak
thanks kang
Iya om, domainnya udah expired ternyata 😀
salam kenal mas. apa IKG juga bisa digunakan untuk menampilkan key windows saat instal? trims mas
Maksudnya serial number windowsnya ya om ?
file ISID.dll ada disebelah mana ya? saya download dari situs resminya
Download disini om.
saya sudah input sesuai registration code dan private key, kok tetap invalid ya?
Coba diikuti lagi om langkah2x diatas step by step soalnya sudah terbukti 😀
mz kalo cara bikin setup biar sn’nya bergilir gmn?
misalkan kita da 10 sn buat 1 setup. sn secara bergilir setiap kali instal.
Belum tau om 😀
mz kalo serialnya dibuat random tiap kali instalasi gmn?
1 setup banyak sn secara random
kalo pengen kita buat hanya 5 kali instalasi gmn gan?
om, kalo mau d terapkan pada C# banyak yang d ubah g om….?
Enggak sama aja, file2x library + exenya kan tinggal diambil di folder bin\Release
tengkyu om, ane bokmak dulu… 😀
Yuph 🙂
mas, contoh yang pakai VB mana? 🙂
Coba disini om.
salam kenal mas
knalkan nama saya nurul, mau nanya mas
gini tutorial diatas uda saya ikuti tapi pas saya compile kok erorr, error seperti ini
runtime Error (at 12:123);
internal error :ExtractTemporaryFile: The file “klien-1.iky”was not found.
mohon penjelasnnya
File klien-1.iky harus satu folder dg file skrip inno setupnya.
mas bisa gak buat vb net?
Bisa
bikin ribet, kepala jadi meriang 😀
lebih jelas bang gimana?
Bukan untuk pemula om 😛