ทำไฟล์ Setup ด้วยโปรแกรม Inno Setup

Inno Setup

  • จากที่มานั่งปัดฝุ่นโปรแกรมช่วยเขียนแบบรูปตัดตามขวาง (XSection Plot) และผมเองต้องทำไฟล์ setup เพื่อให้ผู้ใช้สามารถดาวน์โหลดไปติดตั้งได้เอง ก่อนหน้านี้ผมใช้ InstallShield ซึ่งใช้ทั้งเวอร์ชั่นฟรีบ้างและไม่ฟรีบ้าง ก็ลองมองหาตัวใหม่ที่ใช้งานได้ง่ายๆและที่สำคัญต้องฟรี
  • น้องที่สำนักงานแนะนำให้ใช้ Inno Setup เนื่องจากเป็นของฟรี ลองดาวน์โหลดติดตั้งดู ปรากฏว่าต้องเขียน scripts ความรู้สึกแรกมันต้องยากแน่ๆ แต่พอลองถูกลองผิดสักหนึ่งชั่วโมง ปรากฏว่าทำไฟล์ setup อย่างง่ายๆได้สำเร็จ
ลักษณะ script ที่ Inno Setup เตรียมมาให้เป็น template

ความเป็นมาของโปรแกรม

  • พัฒนาโดย Jordan Russell โปรแกรมเมอร์ชาวเยอรมัน ออกเวอร์ชั่นแรกปี 1997 ผมสังเกตว่ามีโปรแกรม freeware ที่พัฒนาโดยโปรแกรมเมอร์ชาวเยอรมันมีมาก ตัวโปรแกรมพัฒนาโดย Delphi โปรแกรมสนับสนุนวินโดส์ทุกเวอร์ชั่นกระทั่ง windows 7 และยังสนับสนุน 64 bits ด้วย สนับสนุนการบีบอัด อย่างเช่นโปรแกรม XSection Plot ที่ผมทำตัวโปรแกรมและข้อมูลรวมๆกันประมาณ 5.4 MB พอเป็นไฟล์ setup ขนาดเหลือประมาณ 1.4 MB

ดาวน์โหลดและติดตั้ง

  • สนใจเข้าไปดาวน์โหลดได้ ที่นี่ ขณะที่เขียนอยู่นี้เป็นเวอร์ชั่น 5.3.8 ในหน้าดาวน์โหลดมี sourcecode ของ Delphi ให้ดาวน์โหลดด้วย ใตรที่เป็นโปรแกรมเมอร์ Delphi อยากจะดัดแปลงไปใช้งานให้ตรงตามต้องการก็ตามสะดวกครับ เมื่อดาวน์โหลดแล้วติดตั้งได้ง่ายๆ เพราะโปรแกรมไม่ใหญ่มาก

เตรียมโฟลเดอร์

  • ในฐานะโปรแกรมเมอร์เมื่อคอมไพล์โปรแกรมมาถึงจุดที่ต้องการและตัวโปรแกรมนั้นต้อง stable พอ ก็จะต้องทำโปรแกรม Setup เรียกกันจริงๆว่า Software Deployment ผมเตรียมโฟลเดอร์ไว้หนึ่งโฟลเดอร์ copy ไำฟล์โปรแกรม XSectionPlot.exe ไฟล์ readme.txt  พร้อมด้วยไฟล์ไลบรารีของ VB6 ที่โปรแกรม XSection Plot ต้องใช้งานมีอยู่ 4 ไฟล์ และผมเตรียมซับโฟลเดอร์ย่อยเตรียมไฟล์ตัวอย่างที่เห็นก็คือ “format-examples”, “kohkong-examples” และ “road-examples” ดูรูปด้านล่าง
เตรียมโฟลเดอร์สำหรับสร้างไฟล์ Setup

Script สำหรับ Inno Setup

  • คุณ Jordan ผู้พัฒนาโปรแกรม ได้ออกแบบโปรแกรมมาได้ดีมาก โดยออกแบบตัว script ไฟล์ คล้ายๆกับไฟล์ .INI คือจะมี Section เป็นหัวข้อหลัก ปิดด้วยเครื่องหมาย [ ] (เรียกว่า bracket) ตัวอย่างเช่น [Files], [Setup], [Icon], [Registry] เป็นต้นส่วนองค์ประกอบในแต่ละ section จะเรียกว่า Entry ลองดูรูปด้านล่าง
การกำหนดค่าให้กับ script
  • ดู script ไฟล์ชัดๆอีกครั้ง ตรง [Setup] บรรทัดท้ายสุดคือ OutputDir ถ้าเราไม่ใส่ entry นี้โปรแกรมจะไม่สร้างไฟล์ setup.exe ให้เราเพราะหาโฟลเดอร์ผลลัพธ์ไม่พบ

; XSection Plot Setup
[Setup]
AppName=XSection Plot
AppVerName=XSection Plot version 3.25
DefaultDirName={pf}\Survey Suite\XSection Plot
DefaultGroupName=Survey Suite\XSection Plot
UseSetupLdr=yes
UninstallDisplayIcon={app}\XSectionPlot.exe
VersionInfoProductName=XSection Plot for Surveyor/Civil
VersionInfoCompany=http://priabroy.wordpress.com
VersionInfoCopyright=Copyright 1997-2010 by Prajuab Riabroy
VersionInfoDescription=XSection Plot for surveyor/civil
VersionInfoProductVersion=3.25.0.1033
VersionInfoVersion=3.25.0.1033
OutputDir=XSectionPlotSetup

[Files]
Source: “XSectionPlot.exe”; DestDir: “{app}”
Source: “Readme.txt”; DestDir: “{app}”; Flags: isreadme
Source: “KongKong-Examples\*”; DestDir: “{app}\Examples\KohKong”
Source: “Format-Examples\*”; DestDir: “{app}\Format-Examples”
Source: “Road-Examples\*”; DestDir: “{app}\Examples\Road”
Source: “Mscomctl.ocx”; DestDir: “{sys}”; Flags: regserver sharedfile restartreplace
Source: “comdlg32.ocx”; DestDir: “{sys}”; Flags: regserver sharedfile restartreplace
Source: “tabctl32.ocx”; DestDir: “{sys}”; Flags: regserver sharedfile restartreplace
Source: “MSHFLXGD.OCX”; DestDir: “{sys}”; Flags: regserver sharedfile restartreplace

[Icons]
;create icon at start menu group
Name: “{group}\XSection Plot”; Filename: “{app}\XSectionPlot.exe”
;create icon at desktop
Name: “{commondesktop}\XSection Plot”; FileName:”{app}\XSectionPlot.exe”

[Registry]
; Start “Software\My Company\My Program” keys under HKEY_CURRENT_USER
; and HKEY_LOCAL_MACHINE. The flags tell it to always delete the
; “My Program” keys upon uninstall, and delete the “My Company” keys
; if there is nothing left in them.
Root: HKCU; Subkey: “Software\Survey Suite”; Flags: uninsdeletekeyifempty
Root: HKCU; Subkey: “Software\Survey Suite\XSection Plot”; Flags: uninsdeletekey
Root: HKLM; Subkey: “Software\Survey Suite”; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: “Software\Survey Suite\XSection Plot”; Flags: uninsdeletekey
Root: HKLM; Subkey: “Software\Survey Suite\XSection Plot\Settings”; ValueType: string; ValueName: “InstalledPath”; ValueData: “{app}”
Root: HKLM; Subkey: “Software\Survey Suite\XSection Plot\Settings”; ValueType: string; ValueName: “DevelopedBy”; ValueData: “Prajuab Riabroy”
Root: HKLM; Subkey: “Software\Survey Suite\XSection Plot\Settings”; ValueType: string; ValueName: “ApplicationName”; ValueData: “XSection Plot”

ตัวแปร constant

  • เมื่อดู script จะเห็นตัวแปรเช่น {app}, {sys}, {pf} ที่ผมใช้งาน
    • {app} ก็คือโฟลเดอร์ที่ผู้ใช้เลือกติดตั้งโปรแกรม
    • {sys} – โฟลเดอร์ “c:\windows\system32”
    • {pf} – โฟลเดอร์ “c:\program files”
  • ส่วนใน section [Registry] ก็ไม่มีอะไรยากเกินไป ลองศึกษาดู ใน help ก็เขียนไว้ดี

Compile และสร้างไฟล์ Setup

  • ที่ toolbar คลิกที่ compile ที่ผมพบบ่อยคือ compile ไม่ผ่านไม่ใช่ syntax ผิดแต่เตือนดังรูปด้านล่าง ผมใช้วิธีคลิก compile หลายๆครั้งจะผ่าน ไม่ทราบว่าทำไม
คอมไพล์ script

ผลลัพธ์ของไฟล์ setup

  • ตามที่ผมกล่าวไปแล้วว่าใน section => [Setup] ผมกำหนด OutputDir=XSectionPlotSetup เมื่อคอมไพล์ผ่านจะเห็นโฟลเดอร์ XSectionPlotSetup ขึ้นมาดังรูป
โฟลเดอร์เก็บผลลัพธ์ไฟล์ setup.exe
  • เข้าไปในโฟลเดอร์ก็จะเห็น
ไฟล์ setup.exe ที่เราสร้างขึ้นมาจาก Inno Setup

สรุปการใช้งาน

  • นอกจากตอนคอมไพล์แล้วเอ๋อเป็นบางครั้ง ที่เหลือดีหมด ได้ไฟล์ setup.exe ที่ถูกใจคือมีขนาดเล็ก ขั้นตอนการติดตั้งไม่ต้องมาก คลิกไม่กี่ครั้งก็เสร็จ

Leave a Reply

Your email address will not be published. Required fields are marked *