RSS

Instalasi Server Hotspot pada Linux Ubuntu (Chillispot dan Freeradius)

Berikut ini adalah step by step instalasi server hotspot pada Ubuntu menggunakan Chillispot dan Freeradius. Langkah pertama yang terlebih dahulu dilakukan adalah menginstall linux ubuntu sesuai dengan kebutuhan dan memastikan ubuntu tersebut bekerja dengan baik.

- Konfigurasi IP Address di masing-masing Ethernet Card pada Server.
Misalnya pada server terdapat 3 Ethernet Card yaitu :
eth0 : untuk IP Address Public,
eth1 : untuk IP address lokal atau intranet, dan
eth2 : tunnel interface yang digunakan oleh Chillispot.

File Konfigurasi IP Address pada ubuntu terletak pada /etc/network/interfaces, berikut contoh konfigurasinya :

auto eth0
iface eth0 inet static
address 77.67.76.10
netmask 255.255.255.240
gateway 77.67.76.1

auto eth1
iface eth1 inet static
address 192.168.12.25
netmask 255.255.255.224

- Setting IP DNS yang diberikan oleh pihak ISP maupun IP DNS Lokal/intranet.
File konfigurasi terletak pada /etc/resolv.conf, berikut contoh konfigurasinya :

domain example.ac.id
namserver 202.155.0.10
atau
domain example.ac.id
nameserver 192.168.12.10

- Mengaktifkan IP Forwading, sehingga Server berfungsi sebagai gateway dan mampu meneruskan paket data.
File konfigurasi terletak pada /etc/sysctl.conf, hilangkan tanda ‘ # ’ pada baris net.ipv4.conf.default.forwarding=1.

Awalnya seperti ini :
#net.ipv4.conf.default.forwarding=1
Menjadi :
net.ipv4.conf.default.forwarding=1

- Reboot & Pastikan semua konfigurasi berjalan dengan baik, jalankan PING dan NSLOOKUP untuk mengetahui apakah server sudah terhubung ke jaringan intranet maupun internet.

Langkah selanjutya adalah instalasi paket-paket yang dibutuhkan pada server Hotspot, diantaranya :
> Apache Web Server
> Mysql Database Server
> PHP
> SSL Certificate
> Freeradius, dan
> Chillispot

Untuk melakukan instalasi paket-paket yang dibutuhkan pada server, cukup dengan menggunakan sintaks apt-get install, berikut sintaks lengkapnya :

apt-get install apache2 php5 mysql-server libapache2-php5 php5-mysql ssl-cert freeradius freeradius-mysql chillispot

Pada saat instalasi paket, khususnya pada proses instalasi mysql server, Anda akan diminta untuk memasukkan password root mysql yang dikehendaki. Jika anda tidak dimintai untuk memasukkan password atau Anda mengabaikannya, Anda dapat membuatnya dengan perintah:

mysqladmin -u root password ’rahasiabanget’

Begitu juga dengan proses instalasi paket-paket yang lain, jika diminta untuk memasukkan konfigurasi tertentu Anda dapat mengabaikannya. Konfigurasi dapat dilakukan setelah proses instalasi.

- Konfigurasi Apache Web Server
File konfigurasi terletak pada /etc/apache2/apache2.conf, berikut contoh konfigurasi sederhana pada file apache2.conf :

Masukkan baris seperti dibawah ini,
ServerName hotspot.example.ac.id
atau
ServerName 192.168.12.25

Restart apache untuk me-reload konfigurasi:

/etc/init.d/apache2 restart

- Konfigurasi SSL pada Web Server
SSL digunakan oleh chillispot untuk menampilkan halaman otentikasi, Berikut dipaparkan langkah-langkah untuk mengaktifkan modul SSL pada Web Server :

# cd /etc/apache2/site-available/

copy file default-ssl menjadi ssl file pada direktory diatas
# cd /etc/apache2

buat direktory baru dengan nama ssl
# cd /etc/apache2/ssl

buat certificate apache.pem
# make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
# vi /etc/apache2/site-available/ssl
cari tulisan berikut:
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
dan ganti dengan
SSLCertificateFile /etc/apache2/ssl/apache.pem

Mengaktifkan module ssl
# a2enmod ssl

Mengaktifkan site ssl dengan nama file ssl
# a2ensite ssl

Restart /reload apache, cek dengan perintah https://example.ac.id

- Konfigurasi Chillispot
File Konfigurasi terletak pada /etc/chilli.conf, berikut contoh konfigurasinya :

#—/etc/chilli.conf—
net 172.16.20.0/24
dns1 192.168.12.10
dns2 192.168.12.10
radiusserver1 127.0.0.1
radiusserver2 127.0.0.1
radiussecret rahasiabanget
dhcpif eth2
uamserver https://172.16.20.1/cgi-bin/hotspotlogin.cgi
uamsecret rahasiabangetjuga
uamlisten 172.16.20.1

Keterangan:
> net, mendefinisikan network yang akan digunakan oleh chillispot sebagai penyedia IP Address untuk pengguna hotspot.
> radiussecret, digunakan oleh chillispot untuk berkomunikasi dengan server radius yang didefinisikan pada radiusserver1 maupun radiusserver2.
> dhcpif, interface yang digunakan sebagai tunnel interface oleh chillispot.
> uamserver, mengarah kepada hotspotlogin.cgi sebagai otentikasi user ketika menggunakan layanan hotspot URL menggunakan https untuk enkripsi data.
> uamsecret, digunakan oleh chillispot untuk berkomunikasi dengan uamserver.
> uamlisten, IP address pada tunnel Interface yang didefinisikan pada dhcpif.

- Konfigurasi hotspotlogin.cgi
File awal terletak pada direktori /usr/share/doc/chillispot/. Jika file masih terbungkus dalam bentuk file archieve seperti hotspotlogin.cgi.gz maka ekstrak terlebih dahulu, baru kemudian di-copy menuju direktori /usr/lib/cgi-bin/.

# cd /usr/share/doc/chillispot
# ls
hotspotlogin.cgi.gz
# gunzip hotspotlogin.cgi.gz
# ls
hotspotlogin.cgi.gz hotspotlogin.cgi
# cp hotspotlogin.cgi /usr/lib/cgi-bin/
# cd /usr/lib/cgi-bin/
# chmod 755 hotspotlogin.cgi

Edit file hotspotlogin.cgi dan cari baris $uamsecret dan $userpassword, jika ada tanda ‘ # ’ pada baris tersebut maka hapuslah.

$userpassword = 1;
$uamsecret = “rahasiabangetjuga”; (disesuaikan dengan chilli.conf)

Beberapa file yang harus dikonfigurasi pada paket Freeradius diantaranya :
> /etc/freeradius/clients.conf
> /etc/freeradius/radiusd.conf
> /etc/freeradius/sql.conf
> /etc/freeradius/sites-enabled/default

- Konfigurasi clients.conf
Konfigurasi pada clients.conf pada initinya adalah mendefinisikan server chillispot yang terhubung dengan freeradius, pada tulisan ini server chillispot maupun freeradius tergabung dalam satu server. Berikut adalah contoh konfigurasinya :

#—clients.conf—
client localhost {
ipaddr = 127.0.0.1
secret = rahasiabanget (disesuaikan dengan chilli.conf)
nastype = other
}
Misal server chillispot terpisah dengan Freeradius:
#—clients.conf—
client 192.168.12.22/32 {
secret = rahasiabanget (disesuaikan dengan konfigurasi pada 192.168.12.22)
shortname = ddwrt
}

- Konfigurasi radiusd.conf
File radiusd.conf merupakan file konfigurasi utama yang menggabungkan file-file konfigurasi terpisah seperti clients.conf, sql.conf, dan modul-modul yang dibutuhkan oleh server freeradius.
- Konfigurasi sql.conf
Agar freeradius dapat terhubung dengan mysql, maka perlu mendefinisikan server mysql yang digunakan beserta user dan password yang mempunyai privillage pada database freeradius. Hanya ada beberapa baris konfigurasi yang disesuaikan, diantaranya :

#—sql.conf—
server = “localhost”;
login = “root”; (disarankan untuk tidak menggunakan user root)
password = “rahasia”;
radius_db = “nama_database”;

- Konfigurasi sites-enabled/default
Untuk mengaktifkan modul-modul pada freeradius dan dalam pembahasan ini adalah modul mysql, file konfigurasi terletak pada /etc/freeradius/sites-enabled/default. Hilangkan tanda ‘ # ’ pada setiap baris yang mengandung kata ‘ sql ’ .

authorize {


sql
noresetcounter (sesuaikan dengan /etc/freeradius/sql/mysql/counter.conf)

}

accounting {


sql
sql_log


}

session {

sql

}

post-auth {


sql
sql_log

}

- Menambahkan database radius pada mysql
Dalam paket instalasinya freeradius telah menyediakan struktur database standard dari freeradius itu sendiri yaitu pada file /etc/freeradius/sql/mysql/schema.sql. Jika Anda ingin menggunakan Struktur database yang disediakan dari Freeradius berikut langkah-langkahnya :

# cd /etc/freeradius/sql/mysql/
# mysql –u user –p nama_database < schema.sql

Jika Anda menggunakan database dari PhpMyPrepaid (Web Portal), importing database standar freeradius diatas tidak digunakan.

- Instalasi PhpMyPrepaid
Paket phpmyprepaid yang digunakan pada tutorial ini adalah phpmyprepaid0.3.3.tgz, paket tersebut dapat langsung didownload dari http://sourceforge.net/projects/phpmyprepaid/files/.
Kita asumsikan file phpmyprepaid0.3.3.tgz telah didownload dan berada pada direktori web server yaitu /var/www.

# cd /var/www
# ls
index.html phpmyprepaid0.3.3.tgz

Ektrak file phpmyprepaid0.3.3.tgz
# tar –xzvf phpmyprepaid0.3.3.tgz
# ls
index.html phpmyprepaid0.3.3.tgz phpmyprepaid0.3.3
# mv phpmyprepaid0.3.3 prepaid

Sebelum melanjutkan instalasi phpmyprepaid, terlebih dahulu membuat database yang akan digunakan phpmyprepaid pada Mysql. Misalnya : test.

# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 85
Server version: 5.1.41-3ubuntu12.6 (Ubuntu)

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql> create database test;
Query OK, 1 row affected (0.00 sec)

mysql> exit
Bye

Kembali ke instalasi phpmyprepaid, buka browser dan ketikkan

http://example.ac.id/prepaid

Pada General Configuration for Mysql,
Server : localhost
User name : root (tidak disarankan menggunakan root)
Password : ********
Database name : test (contoh database yang dgunakan oleh prepaid)

Klik tombol Save Configuration, dan akan muncul halaman seperti dibawah ini.

Phpmyprepaid akan membuat table sendiri, dan kita akan diminta untuk memasukkan user dan password untuk login sebagai admin pada phpmyprepaid.

Login dengan menggunakan Username dan Password yang telah anda inputkan pada proses sebelumnya.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

Install Squid di Ubuntu

Selama ini untuk melakukan aktivitas internetan, saya selalu menggunakan dua browser favorit yaitu Mozilla Firefox dan Opera. Kenapa perlu dua browser, tentunya karena menurut saya diantara keduanya memiliki keunggulan masing-masing yang saling melengkapi. Namun akhir-akhir ini saya sering kesal karena kualitas koneksi internet yang saya pakai sedang mengalamai masalah, super lambat.

Lantas apa hubungannya dengan squid? Beberapa diantara kita mungkin sudah mahfum bahwa untuk mensiasati lambatnya koneksi internet, kita bisa memanfaatkan fitur web cache yang ada pada browser. Jadi untuk bagian-bagian tertentu dari halaman web yang pernah kita kunjungi, browser nggak perlu lagi mengambil dari server, cukup dari simpanannya saja.

Oke masalah sedikit tersiasati, namun itu hanya berlaku untuk browser yang sama. Padahal saya punya dua browser favorit, dan saya ingin halaman yang pernah dikunjungi Firefox dan tersimpan dalam cache juga bisa dimanfaatkan oleh Opera dan begitu pula sebaliknya. Nah akhirnya saya mulai melirik untuk membuat local web cache server pada komputer saya, dan squidlah yang menjadi pilihan.

Berikut ini adalah langkah-langkah ngoprek squid untuk dijadikan local cache server:

1. Instalasi squid.

Buka terminal dan ketikkan perintah berikut :
$ sudo apt-get install squid

2. Membuat file log dan direktory untuk cache.

File log yang dimaksud adalah untuk cache_log dan access_log. Cache_log berfungsi untuk mencatat penulisan cache pada cache direktory sedangkan access log akan berisi daftar trafik yang pernah terjadi melalui port squid.
Direktory cache adalah tempat penyimpanan cache website yang pernah dikunjungi. Ketiga item tersebut harus menjadi hak milik cache_efective_user, dan supaya gampang kita sebut saja squid sebagai usernya.

$ mkdir /usr/local/squid
$ mkdir /usr/local/squid/cache
$ touch /usr/local/squid/cache.log
$ touch /usr/local/squid/access.log
$ sudo adduser squid
$ chown -Rf squid.squid /usr/local/squid

3. Mengkonfigurasi squid

Supaya bisa bekerja sesuai dengan keinginan kita harus memodifikasi isi dari squid.conf file. Biasanya setelah default install, file tersebut tersimpan di direktori /etc/squid/. Namun seandainya tidak ketemu, bisa menggunakan perintah berikut untuk mencarinya: sudo find / -name squid.conf
Saat pertama kali terinstall, squid akan memiliki sebuah default configuration file yang disertai coment-comment yang begitu buanyak, sehingga poin-poin konfigurasinya justru tersembunyi di dalam rimba coment tersebut. Jalankan perintah berikut untuk menghilangkan coment dan baris kosong pada default squid.conf file:
$ sudo chown squid.squid /var/spool/squid -Rf
$ sudo chown squid.squid -Rf /etc/squid
$ sudo -u squid mv /etc/squid/squid.conf /etc/squid/squid.conf.original
$ sudo -u squid touch /etc/squid/squid.conf
$ sudo -u squid cat /etc/squid/squid.conf.original | sed ‘/ *#/d; /^ *$/d’ > /etc/squid/squid.conf

Salah satu item yang perlu di-customize dari squid config file ini adalah variable yang berisi file log dan direktory cache sehingga merujuk pada yang telah kita siapkan sebelumnya.
cache_dir ufs /usr/local/squid/cache 1024 16 256
access_log /usr/local/squid/access.log
cache_log /usr/local/squid/cache.log
cache_store_log none

Kemudian untuk membuat squid sebagai chache server, option berikut yang perlu ditambahkan :
http_port 3128 transparent
cache_mem 1024 MB
cache_swap_low 94
cache_swap_high 96
maximum_object_size 16384 KB
minimum_object_size 4 KB
maximum_object_size_in_memory 2048 KB
fqdncache_size 1024
cache_replacement_policy heap GDSF
memory_replacement_policy heap GDSF

visible_hostname localhost
cache_mgr admin@localhost
cache_effective_user squid
cache_effective_group squid

Berikut ini adalah contoh configuration file yang saya gunakan.

4. Membuat struktur cache directory.

Dengan menjalankan perintah berikut, squid akan membentuk struktur direktori untuk penyimpanan cachenya:

$ sudo -u squid squid –z

5. Test squid

Jalankah perintah berikut untuk menguji coba konfigurasi squid yang telah dimodifikasi:

$ squid –d 1 -D

Kalau tidak ada error maka configuration file yang kita buat sudah ok. Dan jika ternyata masih ada error maka setelah melakukan perubahan pada squid.conf, jalankan perintah squid –k reconfigure untuk memerintahkan squid membaca ulang squid conf yang telah diedit.

6. Menjalankan squid

Untuk menjalankan squid, gunakan perintah berikut ini:

$ squid -sYD
Setelah langkah langkah diatas sukses, selanjutnya kita perlu mensetting browser supaya menggunakan proxy pada localhost port 3128.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

Backup dan Restore Database MySQL dari Aplikasi

Untuk proses backup kita cukup menggunakan tool bawaan MySQL yaitu mysqldump dan untuk restorenya menggunakan mysql.

Adapun perintah dasar untuk melakukan backup dan restore adalah sebagai berikut :

1' backup
2mysqldump -uUSER_NAME -pUSER_PASSWORD --routines NAMA_DATABASE > LOKASI_FILE_BACKUP.SQL
3
4' restore
5mysql -uUSER_NAME -pUSER_PASSWORD NAMA_DATABASE < LOKASI_FILE_BACKUP.SQL

parameter –routines ditambahkan jika database mempunyai fungsi/trigger

Sekarang tinggal kita siapkan kode berikut :

01Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
02Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
03Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
04
05Private Const SYNCHRONIZE As Long = &H100000
06Private Const INFINITE As Long = &HFFFF
07
08Private Sub execCommand(ByVal cmd As String)
09 Dim result As Long
10 Dim lPid As Long
11 Dim lHnd As Long
12 Dim lRet As Long
13
14 cmd = "cmd /c " & cmd
15 result = Shell(cmd, vbHide)
16
17 lPid = result
18 If lPid <> 0 Then
19 lHnd = OpenProcess(SYNCHRONIZE, 0, lPid)
20 If lHnd <> 0 Then
21 lRet = WaitForSingleObject(lHnd, INFINITE)
22 CloseHandle (lHnd)
23 End If
24 End If
25End Sub

kemudian tinggal panggil di masing-masing proses (backup dan restore)

01Dim cmd As String
02
03Private Sub cmdBackup_Click()
04 Screen.MousePointer = vbHourglass
05 DoEvents
06
07 cmd = Chr(34) & "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqldump" & Chr(34) & " -uroot -prahasia --routines --comments nama_database > c:\nama_database.sql"
08 Call execCommand(cmd)
09
10 Screen.MousePointer = vbDefault
11 MsgBox "done"
12End Sub
13
14Private Sub cmdRestore_Click()
15 Screen.MousePointer = vbHourglass
16 DoEvents
17
18 cmd = Chr(34) & "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysql" & Chr(34) & " -uroot -prahasia --comments nama_database < c:\nama_database.sql"
19 Call execCommand(cmd)
20
21 Screen.MousePointer = vbDefault
22 MsgBox "done"
23End Sub

kode diatas dengan asumsi direktori bin MySQL ada di folder “C:\Program Files\MySQL\MySQL Server 5.1\bin”.

Selamat mencoba :) sumber

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

Membuat paket instalasi vb + mysql dengan NSIS

NSIS adalah salah satu tool gratis dan open source untuk membuat paket instalasi. Oke sebelum kita melangkah lebih jauh, berikut adalah hal-hal yang perlu kita persiapkan :

  1. NSIS
  2. MySQL versi noninstall disesuaikan dengan versi MySQL yang terinstall di komputer Anda
  3. Connector ODBC yang sudah terinstall biasanya ada di C:\Program Files\MySQL\Connector ODBC 5.1
  4. Database yang sudah di backup/dump
  5. Untuk editor, bagi Anda yang buta warna cukup pake notepad :D , saya sendiri menggunakan notepad++ atau kalo pengen lebih nyaman bisa menggunakan eclipse kemudian download plug-in NSIS

Memang kalo dilihat dari segi skrip, Inno Setup lebih simple dibandingkan NSIS tetapi setelah saya bandingkan hasil paket instalasi NSIS lebih kecil dibandingkan Inno Setup.

Skrip Inno Setup dan NSIS sama-sama dikelompokkan dalam section-section bedanya kalo Inno Setup untuk nama sectionnya sudah fix (misal Setup, Tasks, Files de el el) sedangkan NSIS untuk nama sectionnya bebas dan tentunya dalam penamaan section di NSIS disesuaikan dengan isinya (misal Install MySQL 5).

Salah satu bagian penting dari skrip NSIS yang kita bahas disini adalah skrip yang digunakan untuk membuat service MySQL, mendaftarkan driver MySQL Connector ODBC dan melakukan proses undump skrip databse (.sql).

Saya ambil contoh untuk membuat service MySQL tentunya dilihat dari versi windows yang terinstall kalo keluarga Win9x jelas tidak bisa karena belum mendukung pembuatan service, oleh karena itu sebelum menjalankan perintah membuat service akan dilakukan pengecekan versi windows terlebih dulu.

Nah disini akan terlihat jelas perbedaan skrip Inno Setup dan NSIS dimana untuk melakukan ini inno setup cukup menambahkan flag MinVersion, misal :

1[Run]
2;mysqld --install MySQL
3Filename: "{app}\mysql\bin\mysqld.exe"; Parameters: "install ""MySQL"""; StatusMsg: "Sedang menginstall service MySQL ..."; Flags: runhidden; MinVersion: 0,5.01.2600sp2; Tasks: installmysql

Sedangkan untuk NSIS kita perlu mendownload Version plug-in terlebih dulu dan mengekstraknya kemudiakan mengcopykan file version.dll ke folder instalasi NSIS\Plugins, walaupun sebenarnya kita bisa membuat fungsi sendiri di NSIS untuk mengecek versi windows yang terinstall.

Contoh skrip NSIS untuk mengecek versi windows dan menginstall service MySQL :

01Section "Install MySQL 5"
02 Version::IsWindowsXP
03
04 Pop $0 ;nilai var $0 akan bersisi 1 jika windows XP selain itu 0
05 StrCmp $0 "1" ItIsWindowsXP ItIsNotWindowsXP ;StrCmp sama seperti fungsi IIF di VB
06
07 ItIsWindowsXP:
08 Goto installservice
09
10 ItIsNotWindowsXP:
11 Goto done
12
13 installservice:
14 DetailPrint "Sedang menginstall service MySQL ..."
15 ExecWait '"$MYSQL_DIR\bin\mysqld.exe" install "MySQL"'
16
17 done:
18 ;do nothing
19SectionEnd

Gimana lumayan beda kan? :)

Khusus untuk file-file Runtime VB memerlukan penanganan khusus dan untuk memudahkan Anda mencoba sample skrip ini download terlebih dahulu file Runtime VB disini dan jangan lupa diekstrak.

Persiapan terakhir untuk struktur folder saya buat seperti berikut :

Dan saya tidak akan menjelaskan fungsi-fungsi/perintah yang digunakan dalam skrip NSIS karena sudah saya sisipkan komentar di sample skrip instalasi NSIS.

Jika masih kesulitan Anda bisa langsung membaca manual NSIS yang penjelasannya sudah sangat lengkap.

Berikut contoh skrip instalasi lengkap menggunakan NSIS :

001;Skrip instalasi by k4m4r82
002;http://coding4ever.wordpress.com
003
004!include VB6RunTime.nsh
005
006;deklarasi konstanta
007;format pemanggilan ${NAMA_KONSTANTA}
008!define APP_NAME "Sistem Pembelian Bahan Baku PT. ALBASI"
009!define APP_PUBLISHER "K4m4r82's Laboratory"
010!define APP_VERSION "2.0.50"
011
012BrandingText /TRIMCENTER "-- ${APP_PUBLISHER} --"
013Name "${APP_NAME} ${APP_VERSION}"
014Caption "${APP_NAME} ${APP_VERSION}"
015
016CompletedText "Instalasi sudah selesai"
017
018Icon "setup.ico"
019LoadLanguageFile "${NSISDIR}\Contrib\Language files\Indonesian.nlf"
020OutFile "output\DemoSetupNSIS.exe"
021ShowInstDetails show
022ShowUninstDetails show
023WindowIcon on
024XPStyle on
025
026;informasi default folder instalasi
027InstallDir "$PROGRAMFILES\SPBB"
028
029;informasi folder instalasi disimpan disini
030;informasi ini akan memudahkan kita untuk membuat program update
031InstallDirRegKey HKCU "Software\PT ALBASI\SPBB" "InstallDir"
032
033VIAddVersionKey /LANG=${LANG_INDONESIAN} "ProductName" "${APP_NAME}"
034VIAddVersionKey /LANG=${LANG_INDONESIAN} "Comments" ""
035VIAddVersionKey /LANG=${LANG_INDONESIAN} "CompanyName" "${APP_PUBLISHER}"
036VIAddVersionKey /LANG=${LANG_INDONESIAN} "LegalTrademarks" "${APP_NAME} is a trademark of ${APP_PUBLISHER}"
037VIAddVersionKey /LANG=${LANG_INDONESIAN} "LegalCopyright" "Copyright © 2009. ${APP_PUBLISHER}"
038VIAddVersionKey /LANG=${LANG_INDONESIAN} "FileDescription" "${APP_NAME}"
039VIAddVersionKey /LANG=${LANG_INDONESIAN} "FileVersion" "2.0.0.50"
040VIProductVersion "2.0.0.50"
041
042RequestExecutionLevel admin
043
044AddBrandingImage left 150|234
045Page custom BrandingImage
046Page components
047Page directory
048Page instfiles
049
050UninstPage custom un.BrandingImage
051UninstPage uninstConfirm
052UninstPage instfiles
053
054;deklarsi variabel
055;format pemanggilan $NAMA_VARIABEL ingat ada sedikit perbedaan dg konstanta
056Var MainDir
057Var MySQLDir
058Var AlreadyInstalled
059
060;section yang diawali karakter -, pilihannya tidak ditampilkan
061Section "-Inisialisasi Variabel"
062 StrCpy $MainDir $INSTDIR
063 StrCpy $MySQLDir $MainDir\mysql
064SectionEnd
065
066Section "-Visual Basic Runtime"
067 ;download file Visual Basic Runtime di: http://nsis.sourceforge.net/vb6runtime.zip
068 IfFileExists "$MainDir\Albasi.exe" 0 new_installation
069 StrCpy $AlreadyInstalled 1
070
071 new_installation:
072 !insertmacro VB6RunTimeInstall "dll&ocx\vb6runtime" $AlreadyInstalled
073SectionEnd
074
075Section "-My Application Runtime"
076 SetOutPath $MainDir
077 File "main\Albasi.exe.manifest"
078 File "main\Albasi.exe"
079
080 SetOutPath $SYSDIR
081
082 File "dll&ocx\LVbuttons.OCX"
083 RegDLL "$SYSDIR\LVbuttons.ocx"
084
085 File "dll&ocx\MSMASK32.OCX"
086 RegDLL "$SYSDIR\MSMASK32.ocx"
087
088 File "dll&ocx\cTreeOpt6.ocx"
089 RegDLL "$SYSDIR\cTreeOpt6.ocx"
090
091 File "dll&ocx\Comdlg32.ocx"
092 RegDLL "$SYSDIR\Comdlg32.ocx"
093
094 File "dll&ocx\vbalDTab6.ocx"
095 RegDLL "$SYSDIR\vbalDTab6.ocx"
096
097 File "dll&ocx\vbalExpBar6.ocx"
098 RegDLL "$SYSDIR\vbalExpBar6.ocx"
099
100 File "dll&ocx\MSCOMCTL.OCX"
101 RegDLL "$SYSDIR\MSCOMCTL.ocx"
102
103 File "dll&ocx\vbalIml6.ocx"
104 RegDLL "$SYSDIR\vbalIml6.ocx"
105
106 File "dll&ocx\cPopMenu6.ocx"
107 RegDLL "$SYSDIR\cPopMenu6.ocx"
108
109 File "dll&ocx\cNewMenu6.dll"
110 RegDLL "$SYSDIR\cNewMenu6.DLL"
111
112 File "dll&ocx\scrrun.dll"
113 RegDLL "$SYSDIR\scrrun.DLL"
114
115 File "dll&ocx\vbalMDITabs6.dll"
116 RegDLL "$SYSDIR\vbalMDITabs6.DLL"
117
118 File "dll&ocx\SSubTmr6.dll"
119 RegDLL "$SYSDIR\SSubTmr6.DLL"
120
121 File "dll&ocx\msado21.tlb"
122 RegDLL "$SYSDIR\msado21.tlb"
123SectionEnd
124
125; param /e -> expand
126SectionGroup /e "Komponen Server"
127 Section "Install MySQL 5"
128 ; param /r -> recursive
129 SetOutPath $MySQLDir\bin
130 File /r "mysql-5.1.36-win32\bin\*.*"
131
132 SetOutPath $MySQLDir\Docs
133 File /r "mysql-5.1.36-win32\Docs\*.*"
134
135 SetOutPath $MySQLDir\lib
136 File /r "mysql-5.1.36-win32\lib\*.*"
137
138 SetOutPath $MySQLDir\share
139 File /r "mysql-5.1.36-win32\share\*.*"
140
141 SetOutPath $MySQLDir\data
142 File /r "mysql-5.1.36-win32\data\*.*"
143
144 SetOutPath $MySQLDir
145 File "mysql-5.1.36-win32\*.*"
146
147 ;informasi lokasi instalasi mysql
148 WriteINIStr $MySQLDir\my.ini "mysqld" "basedir" $MySQLDir
149 WriteINIStr $MySQLDir\my.ini "mysqld" "datadir" $MySQLDir\data
150
151 ;proses membuat dan menjalankan service mysql, cek versi windows terlebih dulu
152 ;untuk contoh disini baru di tes untuk windows xp sp2
153 Version::IsWindowsXP
154
155 Pop $0 ;nilai var $0 akan bersisi 1 jika windows XP selain itu 0
156 StrCmp $0 "1" ItIsWindowsXP ItIsNotWindowsXP ;StrCmp sama seperti fungsi IIF di VB
157
158 ItIsWindowsXP:
159 Goto installservice
160
161 ItIsNotWindowsXP:
162 Goto done
163
164 installservice:
165 DetailPrint "Sedang menginstall service MySQL ..."
166 ExecWait '"$MySQLDir\bin\mysqld.exe" install "MySQL"'
167
168 ;jalankan service MySQL
169 DetailPrint "Sedang menjalankan service MySQL ..."
170 ExecWait '"$SYSDIR\net.exe" start "MySQL"'
171
172 ;mendaftarkan port default mysql (3306) ke firewall
173 DetailPrint "Sedang mendaftarkan port MySQL ..."
174 ExecWait '"$SYSDIR\netsh.exe" firewall add portopening TCP 3306 "Port MySQL"'
175
176 ;mengganti password default root (blank). ex : masterkey
177 DetailPrint "Mengganti password root"
178 ExecWait '"$MySQLDir\bin\mysqladmin.exe" -uroot password masterkey'
179
180 ;menghapus user default1 (user=blank, password=blank)
181 ExecWait '"$MySQLDir\bin\mysql.exe" -uroot -pmasterkey -e "DELETE FROM mysql.user WHERE Host=$\'localhost$\' AND User=$\'$\'"'
182 ExecWait '"$MySQLDir\bin\mysql.exe" -uroot -pmasterkey -e "FLUSH PRIVILEGES"'
183
184 ;menghapus user default2 (user=root, password=blank)
185 ExecWait '"$MySQLDir\bin\mysql.exe" -uroot -pmasterkey -e "DELETE FROM mysql.user WHERE Host=$\'127.0.0.1$\' AND User=$\'root$\'"'
186 ExecWait '"$MySQLDir\bin\mysql.exe" -uroot -pmasterkey -e "FLUSH PRIVILEGES"'
187
188 ;set agar user root bisa login dari mesin lain (kalo diperlukan)
189 ExecWait '"$MySQLDir\bin\mysql.exe" -uroot -pmasterkey -e "GRANT ALL PRIVILEGES ON *.* TO root@$\'%$\' IDENTIFIED BY $\'masterkey$\'"'
190 ExecWait '"$MySQLDir\bin\mysql.exe" -uroot -pmasterkey -e "FLUSH PRIVILEGES"'
191
192 done:
193 ;do nothing
194 SectionEnd
195
196 Section "Install MySQL Connector ODBC"
197 SetOutPath $SYSDIR
198
199 ;dll mysql odbc tidak perlu diregistrasikan
200 ;jadi otomatis tidak perlu memanggil fungsi RegDLL
201 File "C:\Program Files\MySQL\Connector ODBC 5.1\myodbc5.dll"
202 File "C:\Program Files\MySQL\Connector ODBC 5.1\myodbc5S.dll"
203 File "C:\Program Files\MySQL\Connector ODBC 5.1\myodbc5.lib"
204 File "C:\Program Files\MySQL\Connector ODBC 5.1\myodbc5S.lib"
205 File "C:\Program Files\MySQL\Connector ODBC 5.1\myodbc-installer.exe"
206
207 Version::IsWindowsXP
208
209 Pop $0
210 StrCmp $0 "1" ItIsWindowsXP ItIsNotWindowsXP
211
212 ItIsWindowsXP:
213 Goto installdriverodbc
214
215 ItIsNotWindowsXP:
216 Goto done
217
218 installdriverodbc:
219 ;install driver myodbc
220 DetailPrint "Tunggu sedang mendaftarkan driver MySQL Connector ODBC 5.1.5"
221 ExecWait '"$SYSDIR\myodbc-installer.exe" -d -a -n "MySQL ODBC 5.1 Driver" -t "DRIVER=myodbc5.dll;SETUP=myodbc5S.dll"'
222
223 done:
224 ;do nothing
225 SectionEnd
226
227 Section "Install Database"
228 SetOutPath $MySQLDir\bin
229
230 File "main\albasi.sql"
231 File "main\exec.cmd"
232
233 Version::IsWindowsXP
234
235 Pop $0
236 StrCmp $0 "1" ItIsWindowsXP ItIsNotWindowsXP
237
238 ItIsWindowsXP:
239 Goto installdatabase
240
241 ItIsNotWindowsXP:
242 Goto done
243
244 installdatabase:
245 ;membuat database kosong
246 ExecWait '"$MySQLDir\bin\mysql.exe" -uroot -pmasterkey -e "CREATE DATABASE albasi"'
247
248 ;menjalankan file batch exec.cmd untuk melakukan proses undump
249 ExecWait '"$MySQLDir\bin\exec.cmd"'
250
251 done:
252 ;do nothing
253 SectionEnd
254SectionGroupEnd
255
256SectionGroup /e "Buat Shortcut"
257 Section "Start Programs"
258 SectionIn RO ;RO -> Read Only
259
260 CreateDirectory "$SMPROGRAMS\PT. ALBASI"
261 CreateShortCut "$SMPROGRAMS\PT. ALBASI\${APP_NAME}.lnk" "$MainDir\Albasi.exe" "" "$MainDir\Albasi.exe" 0
262 SectionEnd
263
264 Section "Desktop"
265 ;CreateDirectory "$DESKTOP\SPBB"
266 CreateShortCut "$DESKTOP\${APP_NAME}.lnk" "$MainDir\Albasi.exe" "" "$MainDir\Albasi.exe" 0
267 SectionEnd
268
269 Section "Quick Launch"
270 ;CreateDirectory "$QUICKLAUNCH\SPBB"
271 CreateShortCut "$QUICKLAUNCH\${APP_NAME}.lnk" "$MainDir\Albasi.exe" "" "$MainDir\Albasi.exe" 0
272 SectionEnd
273SectionGroupEnd
274
275Section "-Registry Windows"
276 ;informasi uninstall
277 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SPBB" "DisplayName" "${APP_NAME}"
278 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SPBB" "UninstallString" '"$MainDir\uninstaller.exe"'
279 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SPBB" "DisplayIcon" '"$MainDir\uninstaller.exe"'
280
281 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SPBB" "NoModify" 1
282 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SPBB" "NoRepair" 1
283
284 WriteUninstaller $MainDir\uninstaller.exe
285SectionEnd
286
287Section "-File Konfigurasi Program"
288 WriteINIStr $MainDir\infoprogram.ini "Sistem" "serverName" "127.0.0.1"
289 WriteINIStr $MainDir\infoprogram.ini "Sistem" "dbName" "albasi"
290SectionEnd
291
292Section "Uninstall"
293 ;stop service MySQL
294 DetailPrint "Menghentikan Service MySQL ..."
295 ExecWait '"$SYSDIR\net.exe" stop "MySQL"'
296
297 ;hapus service MySQL
298 DetailPrint "Sedang menghapus service MySQL ..."
299 ExecWait '"$MySQLDir\bin\mysqld.exe" remove "MySQL"'
300
301 ;driver MySQL Connector ODBC 5.1
302 DetailPrint "Tunggu sedang menghapus driver MySQL Connector ODBC 5.1"
303 ExecWait '"$SYSDIR\myodbc-installer.exe" -d -r -n "MySQL ODBC 5.1 Driver"'
304
305 ; Remove registry keys
306 DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\SPBB"
307
308 ; Remove files and uninstaller
309 Delete $MainDir\*.*
310 RMDir $MainDir
311
312 ; Remove shortcuts
313 Delete "$SMPROGRAMS\PT. ALBASI\*.*"
314 RMDir "$SMPROGRAMS\PT. ALBASI"
315
316 Delete "$DESKTOP\${APP_NAME}.lnk"
317 Delete "$QUICKLAUNCH\${APP_NAME}.lnk"
318SectionEnd
319
320;fungsi untuk menampilkan gambar/banner pada saat instalasi
321;untuk contoh disini posisi gambar di sebelah kiri
322Function BrandingImage
323 SetOutPath "$TEMP"
324
325 SetFileAttributes SetupModern21.bmp temporary
326 File SetupModern21.bmp
327 SetBrandingImage "$TEMP\SetupModern21.bmp" /resizetofit
328FunctionEnd
329
330;fungsi untuk menampilkan gambar/banner pada saat uninstall
331Function un.BrandingImage
332 SetBrandingImage "$TEMP\SetupModern21.bmp" /resizetofit
333FunctionEnd

Di dalam skrip instalasi ada file exec.cmd, isinya adalah :

1mysql -uroot -pmasterkey albasi < albasi.sql

Isi file exec.cmd sebenarnya untuk proses undump dan ternyata Inno Setup dan NSIS gagal menjalankan perintah tersebut, padahal perintah-perintah yang lainnya sukses.

Contoh hasil instalasi :

Gambar 1

Gambar 2

Gambar 3

Gambar 4

Selamat mencoba :)

sumber

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS