Home > Inno Setup, Tools Installer > Menambahkan serial number pada paket instalasi (inno setup)

Menambahkan serial number pada paket instalasi (inno setup)

April 5, 2010

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

  1. 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.
  2. 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).
  3. 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 :

  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 :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 🙂

  1. diffuse
    April 17, 2010 at 3:20 pm

    mas saya udah ngikutin tutor dari anda nah pas saya menjalankan programnya gimana caranya masukin reg code dg private nya mas?

  2. April 17, 2010 at 10:17 pm

    diffuse :

    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

  3. diffuse
    April 18, 2010 at 4:17 am

    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

  4. April 18, 2010 at 5:59 am

    Jawabannya udah ada kok mas di tutorialnya, coba diperhatikan lagi klo masih belum ketemu liat gambar INI

    Selamat mencoba 🙂

  5. diffuse
    April 19, 2010 at 10:46 am

    oke makasih banyak mas…

  6. April 19, 2010 at 11:52 am

    Sama2x

  7. diffuse
    April 19, 2010 at 1:33 pm

    o y mas itu SN yang ngbikin instal cuma 1 komp bsa g?

  8. April 20, 2010 at 12:42 am

    diffuse :

    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 🙂

  9. diffuse
    April 20, 2010 at 5:41 am

    ok mas di coba

  10. diffuse
    April 20, 2010 at 6:29 am

    mas saya ada masalah mas pas setup ini screenshootnya http://gambargw.awardspace.co.uk/

  11. April 20, 2010 at 7:22 am

    diffuse :

    mas saya ada masalah mas pas setup ini screenshootnya http://gambargw.awardspace.co.uk/

    Expiry Date nya diset tgl brp mas ?

  12. diffuse
    April 20, 2010 at 9:00 am

    Admin :

    diffuse :
    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

  13. April 20, 2010 at 9:48 am

    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.

  14. Jauhary
    May 29, 2010 at 10:44 am

    “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

  15. May 30, 2010 at 1:18 am

    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?

  16. jaye
    July 5, 2010 at 1:51 am

    mas mau nanya kodingnya dimana di ketik tu mas???
    saya tidak mengerti menempatkan koding nya!

    • July 5, 2010 at 2:00 am

      Skrip inno setupkan dikelompokkan dalam section2x, misal :
      [Setup]
      [Languages]
      [Tasks]
      [Files]
      [Icons]
      [Registry]
      [Run]
      [Code]

      nah kodenya ditempatkan di section [Code]

      Selamat mencoba 🙂

  17. jaye
    July 7, 2010 at 3:36 am

    ok makasi yh mas..
    akan saya coba dulu

    • July 7, 2010 at 5:42 am

      Oke

  18. jaye
    July 12, 2010 at 7:55 am

    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

    • July 12, 2010 at 8:59 am

      Ini mas link downloadnya.

  19. Chrono
    August 18, 2010 at 2:49 pm

    Mas bisa kasihtau g cara bikin Inno key setupnya satu tapi isinya banyak SN nya,soalnya klo bikin lebih dari satu gagal terus

    • August 18, 2010 at 3:50 pm

      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

  20. August 28, 2010 at 8:02 am

    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.

    • August 30, 2010 at 5:40 am

      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.

  21. ali
    March 1, 2011 at 6:43 pm

    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…

  22. ali
    March 3, 2011 at 3:50 pm

    haloooo… mas admin ko ga dijawab???

    • March 4, 2011 at 10:13 pm

      ali :

      haloooo… mas admin ko ga dijawab???

      Sory om baru kembali dari dunia nyata, jadi enggak bisa stand by trus disini.

      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…

      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.

  23. ali
    March 5, 2011 at 11:36 am

    waduh trus da saran ga biar program yg dah saya buat bisa punya serial unik untuk tiap komputer…

    • March 5, 2011 at 12:45 pm

      Ya udah aktivasinya langsung di pindah ke program aja om.
      Setelah instalasi trus jalanin program langsung deh diminta aktivasi

  24. ali
    March 15, 2011 at 5:34 pm

    caranya gmn? kasih contoh dong…

    • March 16, 2011 at 1:45 am

      Coba ini om

  25. ali
    March 16, 2011 at 4:43 am

    sama aja dong satu serial bs dipake banyak komputer….

    • March 16, 2011 at 1:08 pm

      Ha ha ha 😀
      Kebetulan sy lagi males coding

      Coba deh mampir ketempat teman sy aja dulu disini

      • Andris
        May 8, 2011 at 1:25 pm

        Kang itu linknya di suspend. Mungkin ada link lain?

        Thanks banget kang.

  26. ilfi
    May 13, 2011 at 9:49 am

    salam kenal mas. apa IKG juga bisa digunakan untuk menampilkan key windows saat instal? trims mas

    • May 14, 2011 at 1:37 am

      Maksudnya serial number windowsnya ya om ?

  27. November 7, 2011 at 10:28 pm

    file ISID.dll ada disebelah mana ya? saya download dari situs resminya

    • November 8, 2011 at 8:39 am

      Download disini om.

  28. November 7, 2011 at 10:39 pm

    saya sudah input sesuai registration code dan private key, kok tetap invalid ya?

    • November 8, 2011 at 8:40 am

      Coba diikuti lagi om langkah2x diatas step by step soalnya sudah terbukti 😀

      • sahlan
        December 3, 2011 at 3:24 pm

        mz kalo cara bikin setup biar sn’nya bergilir gmn?
        misalkan kita da 10 sn buat 1 setup. sn secara bergilir setiap kali instal.

        • December 3, 2011 at 4:45 pm

          Belum tau om 😀

          • sahlan
            December 6, 2011 at 3:01 pm

            mz kalo serialnya dibuat random tiap kali instalasi gmn?
            1 setup banyak sn secara random

          • junaedy
            December 15, 2011 at 4:13 pm

            kalo pengen kita buat hanya 5 kali instalasi gmn gan?

  29. andi
    April 13, 2012 at 5:58 pm

    om, kalo mau d terapkan pada C# banyak yang d ubah g om….?

    • April 14, 2012 at 8:35 am

      Enggak sama aja, file2x library + exenya kan tinggal diambil di folder bin\Release

  30. andi
    April 14, 2012 at 9:58 pm

    tengkyu om, ane bokmak dulu… 😀

    • April 15, 2012 at 6:12 am

      Yuph 🙂

  31. ahmad arief
    May 3, 2012 at 12:36 pm

    mas, contoh yang pakai VB mana? 🙂

    • May 3, 2012 at 4:41 pm

      Coba disini om.

  32. banghid4yat
    June 25, 2012 at 6:54 pm

    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

    • June 26, 2012 at 8:28 pm

      File klien-1.iky harus satu folder dg file skrip inno setupnya.

  33. holi
    March 14, 2014 at 12:52 pm

    mas bisa gak buat vb net?

    • March 14, 2014 at 12:55 pm

      Bisa

  34. ecco acong
    March 26, 2014 at 10:42 am

    bikin ribet, kepala jadi meriang 😀
    lebih jelas bang gimana?

    • March 26, 2014 at 2:49 pm

      Bukan untuk pemula om 😛

  1. No trackbacks yet.
Comments are closed.