Posted in Programming

NSIS (Nullsoft Scriptable Install System): Get Microsoft-Windows-Foundation-Package Version

Microsoft-Windows-Foundation-Package Version diperlukan ketika akan mengaktifkan fitur-fitur Windows secara offline dengan melalui file .xmlSaya menghabiskan waktu yang cukup lama untuk mencari tahu bagaimana cara mendapatkan versi tersebut dan sempat berujung pada membaca registry dengan kode berikut:

ReadRegStr $WindowsProductVersion HKLM "SOFTWARE\Microsoft\DataAccess" "FullInstallVer"

Awalnya kode tersebut berjalan dengan lancar, tetapi masalah datang ketika Windows10 diluncurkan. Installer yang saya buat tidak dapat mengaktifkan fitur-fitur di Windows10 karena nilai registry tersebut ialah nomor versi Windows8.1. Saya tidak tahu apakah ini tergolong bug dari Windows10 atau memang nilai registry tersebut tidak diperbarui ketika pengguna langsung memperbarui Windows-nya ke Windows10. Percobaan berikutnya ialah menggunakan Image Version Number dari dsim.exe dengan kode berikut:

ExecWait '$WINDIR\System32\cmd.exe /c $WINDIR\System32\dism.exe /online /get-currentedition >$TEMP\currentedition.txt' $0
Push 5 ;line number to read from
Push "$TEMP\currentedition.txt" ;text file to read
Call ReadFileLine
Pop $0 ;output string (read from file.txt)
StrCpy $WindowsProductVersion $0
        
StrCpy $0 $WindowsProductVersion
StrCpy $1 0
loop:
    IntOp $1 $1 - 1
    StrCpy $2 $0 1 $1
    StrCmp $2 '~' found
    StrCmp $2 '' stop loop
found:
    IntOp $1 $1 + 1
stop:
    StrCpy $2 $0 "" $1

StrCpy $WindowsProductVersion $2
Push $WindowsProductVersion
Call Trim
Pop $WindowsProductVersion

Continue reading “NSIS (Nullsoft Scriptable Install System): Get Microsoft-Windows-Foundation-Package Version”

Advertisements
Posted in Programming

NSIS (Nullsoft Scriptable Install System): Add Second License and Installation Page

Jadi, ceritanya sekitar 2 minggu yang lalu saya mendapatkan tugas baru lagi yang masih berkaitan dengan NSIS. Tulisan sebelumnya mengenai NSIS dapat dilihat di sini. Tugas kali ini ialah mengikutsertakan aplikasi NTP Server and Time Monitor  (selanjutnya saya sebut sebagai NTPS saja) ke dalam installer yang telah ada sebelumnya. Menambahkan 3rd-party apps sebenarnya merupakan hal yang mudah (cukup bertanya ke paman Google). Masalahnya ada di spesifikasi sang manajer: sebelum proses instalasi dimulai, user harus melihat license page baru terkait NTPS dan apabila user setuju, NTPS akan di-install sedangkan bila user tidak setuju, halaman instalasi akan langsung berpindah ke finish page.

Perlu diketahui, tipe instalasi ada dua macam, Silent Install dan Non-Silent Install. Untuk kasus ini, instalasi NTPS harus silent install dan license page yang ditampilkan bukanlah license page langsung dari NTPS, melainkan sebuah page baru yang akan menampilkan GNU General Public License (GNU GPL). Sewaktu saya diberi tugas pertama, semua contoh yang saya lihat hanya menggunakan satu license page dan satu install page. Saya pun bertanya-tanya apakah mungkin menggunakan lebih dari satu license dan install page. Jika tidak bisa, maka satu-satunya jalan adalah membuat custom page (caranya hampir serupa dengan membuat custom page untuk mengecek spesifikasi hardware).

Karena tidak menemukan apa yang saya cari di Google, saya pun melontarkan pertanyaan di sini. Ada satu jawaban yang mengatakan bahwa di dalam sebuah installer hanya dapat menggunakan satu page untuk setiap jenis page yang ada di NSIS MUI (Modern User Interface). Saat membaca komentar tersebut, saya pun akhirnya pasrah dan mulai membuat page custom. Tapi, tak lama kemudian, ada jawaban lain yang mengatakan boleh menggunakan multiple page dan itu pun disertai dengan contoh 😀

Continue reading “NSIS (Nullsoft Scriptable Install System): Add Second License and Installation Page”

Posted in Programming

NSIS (Nullsoft Scriptable Install System): Add a Function to Check Hardware Specification

Saya baru mulai berkenalan dengan NSIS di bulan Agustus. Di suatu hari yang cerah *literally cerah karena masih summer dan sedang panas-panasnya*, manajer datang dan berkata, “From now on, these installation scripts are yours. Please maintain it. It should be easy because it’s quite similar with Java.”

Saya, yang belum melihat bentuk kodenya seperti apa, cuma mengangguk saja. Kemudian mulailah saya melihat-lihat seperti apakah NSIS itu. Kesan pertama saya adalah “eh, kok seperti tugas orkom dulu ya? Dimana miripnya sama Java?”. Saya kembali berpikir jangan-jangan si manajer ini mengatakan NSIS mirip Java karena dibuka di Eclipse. Manajer pun datang lagi dan memberikan tugas pertama terkait NSIS, “Please add a function to check hardware specification before start installing this program.”

Karena sudah diberi tugas, saya pun mulai menggunakan kekuatan Google untuk memahami NSIS. Setelah menghabiskan beberapa saat dengan paman Google, saya pun membuat kesimpulan mengenai hal-hal yang harus saya lakukan untuk membuat fungsi ini:

  1. Instalasi plugin NSIS yang dibutuhkan
  2. Membuat custom page untuk menampilkan hardware specification
  3. Membuat fungsi untuk menonaktifkan tombol Next jika spesifikasi tidak memenuhi batas minimal

Saya pun mencari cara bagaimana membuat custom page dan menemukan NSIS Dialog Designer. Software tersebut sangat membantu dalam pembuatan custom page. Langsung saja beranjak ke bagian kode:

Continue reading “NSIS (Nullsoft Scriptable Install System): Add a Function to Check Hardware Specification”