Sep 30, 2008
Tuesday, September 30, 2008

เรียนรู้วิธีใช้งาน AutoIt :2 สร้างไฟล์ติดตั้งโปรแกรมอัตโนมัติ

บทความนี้จะเสนอวิธีการสร้างไฟล์ติดตั้งโปรแกรมอัตโนมัติด้วยโปรแกรม Autoit

     เพื่อให้เข้าใจยิ่งขึ้น ผมจะอธิบายวิธีการเขียนคำสั่งโดยอ้างอิงจากโปรแกรม KMPlayer คุณควรจะดาวน์โหลดโปรแกรม KMPlayer ตามลิงก์ด้านล่างนี้ด้วยนะครับ

http://imgcdn.pandora.tv/pan_img/KMP/Download/kmp.exe

     เมื่อพร้อมแล้วก็เปิดโปรแกรม SciTE Script Editor ขึ้นมา(ใครเพิ่งเปิดมาเจอ ข้ามไปอ่านตอนที่ 1 ก่อนจะได้ไม่งง) จากนั้นก็บันทึกไฟล์เป็นชื่อ kmpinstall เก็บไว้ในโฟลเดอร์เดียวกับไฟล์ติดตั้งโปรแกรม KMPlayer แล้วเริ่มเขียนคำสั่งจากตัวโปรแกรม SciTE Script Editor ดังนี้

1. หลักการเขียนคำสั่ง เพื่อให้โปรแกรมทำงานแบบอัตโนมัติก็ต้องอ้างอิงขั้นตอนในเวลาที่เราทำจริงๆ โดยคำสั่งแรกที่ใช้คำคือสั่ง

Run("kmp")

คำสั่งนี้จะเปิดไฟล์ติดตั้งโปรแกรม KMPlayer ขึ้นมา คุณอาจจะใส่แค่ชื่อไฟล์เท่านั้น หรือใส่เต็มทั้งชื่อและนามสกุล เช่น kmp.exe ก็ได้

ถ้าจะเทียบแล้วคำสั่ง Run ก็เหมือนการที่ดับเบิลคลิกไฟล์ kmp.exe ขึ้นมาเพื่อติดตั้งโปรแกรมนั่นเอง

หมายเหตุ
     คุณไม่จำเป็นต้องเขียนคำสั่งทั้งหมดขึ้นมาแล้วค่อยทดสอบ เราสามารถทดสอบทีละขั้นตอนได้ด้วยการกดปุ่ม F5 ที่คีย์บอร์ด และเนื่องจากการส่งคำสั่งเข้าไปยังตัวโปรแกรมจะรวดเร็วมาก คุณควรจะใช้คำสั่งสำหรับการหน่วงเวลาการส่งค่าคีย์เอาไว้ด้วย เผื่อตรวจดูว่ามีขั้นตอนผิดพลาดหรือเปล่า

คำสั่งหน่วงเวลาคือ
sleep (ตัวเลข milliseconds คือ 1000 เท่ากับ 1 วินาที) เช่น
sleep (2000) ;เป็นการหน่วงเวลา 2 วินาที
sleep (1500) ;เป็นการหน่วงเวลา 1 วินาที ครึ่ง
คำสั่ง sleep นี้หลังจากทดสอบคำสั่งติดตั้งโปรแกรมจะเสร็จเรียบร้อยแล้วก็ลบทิ้งไปนะครับ


2. ขั้นตอนต่อไปหน้าต่างติดตั้งโปรแกรมจะปรากฏขึ้นมาดังรูปด้านล่างนี้ เราจะใส่คำสั่งเพื่อทำการกดปุ่ม OK คือ

WinWaitActive("Installer","")
Send("{ENTER}")

อธิบาย

     คำสั่ง WinWaitActive("ข้อความในไตเติลบาร์","ข้อความในหน้าต่าง") เป็นคำสั่งสำหรับรอข้อความในหน้าต่างโปรแกรม ซึ่งจะรอจนกว่าจะตรงกับเงื่อนไข ถึงจะทำคำสั่งที่อยู่ในบรรทัดถัดไป ตัวแปรจะมีสองแบบคือ

2.1 รอไตเติลบาร์หน้าต่าง เช่นตามรูปนี้คือ Installer Language

2.2 รออีกแบบคือ รอข้อความในหน้าต่าง Please select a language.

เราไม่จำเป็นต้องใส่ครบทั้งสองแบบ แค่ใส่แบบใดแบบหนึ่งก็ได้

     คำสั่ง Send("{ข้อความหรือปุ่มที่จะส่ง}") เป็นคำสั่งส่งค่าคีย์การกดปุ่ม Enter ที่คีย์บอร์ดไปยังหน้าต่างที่รออยู่ (ถ้าเป็นหน้าต่างอื่นจะไม่ส่งค่าคีย์เข้าไปถือว่าเป็นการป้องกันการกดปุ่มผิดโปรแกรม)


3. หน้าต่างถัดมาก็จะเขียนคำสั่งได้ดังนี้

WinWaitActive("","Welcome")
; รอข้อความในหน้าต่างที่มีคำว่า Welcome ถึงจะทำตามคำสั่งด้านล่างนี้
Send("{ENTER}")
; คำสั่งส่งค่าการกดปุ่ม Enter เข้าไปในหน้าต่างที่มีคำว่า Welcome

     ที่ผมยกตัวอย่างการทำแบบนี้เพื่อแสดงให้เห็นว่าคุณไม่จำเป็นต้องใส่ตัวแปรเสมอไป บางครั้งบางโปรแกรม เมื่อมีการติดตั้งข้อความในไตเติลบาร์อาจจะเหมือนกันหมด เราก็หันไปใช้การตรวจสอบข้อความที่อยู่ในหน้าต่างแทนก็ได้ ซึ่งข้อความที่อยู่ในหน้าต่างสำหรับตรวจสอบนั้นไม่ต้องพิมพ์จนหมดทุกข้อความ เอาแค่ข้อความที่อยู่แรกสุดสักข้อความหนึ่งก็ได้เช่นกัน



4. หน้าต่างถัดมาเขียนคำสั่งได้ดังนี้

WinWaitActive("","License Agreement")
;รอข้อความในหน้าต่างที่มีคำว่า License Agreement ถึงจะทำตามคำสั่งด้านล่างนี้

Send("{ENTER}"); คำสั่งส่งค่าการกดปุ่ม Enter เข้าไปในหน้าต่างที่มีคำว่า License Agreement



5. หน้าต่างถัดมา เป็นหน้าต่างที่มีตัวเลือกสำหรับการติดตั้งส่วนประกอบต่างๆ ลงไป การเขียนคำสั่งคือ

WinWaitActive("","Choose Components")
;รอข้อความในหน้าต่างที่มีคำว่า Choose Components ถึงจะทำตามคำสั่งด้านล่างนี้

send("{TAB}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{SPACE}{ENTER}")
;ส่งค่าคีย์การกดปุ่ม แท็บ, ลูกศรลง, ลูกศรลง, ลูกศรลง, ลูกศรลง, ลูกศรลง, สเปชบาร์, เอ็นเทอร์ เข้าไปในหน้าต่างที่มีคำว่า Choose Components ตามตัวอย่างนี้ เมื่อกดปุ่มข้างต้น ตัวเลือก KMPlayer Skins จะไม่ถูกเลือก

     ถ้าคุณเจอหน้าต่างที่มีตัวเลือกสำหรับติดตั้ง วิธีการที่จะเลือกว่าติดตั้งส่วนประกอบใดบ้าง ก็ต้องลองกดปุ่มจริงๆ บนคีย์บอร์ดก่อน จากนั้นก็จำลองขั้นตอนมาเขียนคำสั่งลงไป ในบางโปรแกรมจะมีตัวช่วยคือกดปุ่ม Alt คู่กับปุ่มอื่นในคีย์บอร์ดได้ เช่น กดปุ่ม Alt + n เราก็จะต้องเขียนคำสั่งดังนี้

Send("!n")
ใส่เครื่อง ! หน้าข้อความที่จะส่งค่าคีย์เข้าไป ก็จะหมายถึงการส่งค่า Alt ร่วมไปด้วย



6. หน้าต่างถัดมาจะเป็นหน้าต่างที่มีการกำหนดโฟลเดอร์ เพื่อติดตั้งโปรแกรมลงไปด้วย เราเขียนคำสั่งได้ดังนี้

WinWaitActive("","Install Location")
;รอข้อความในหน้าต่างที่มีคำว่า Install Location ถึงจะทำตามคำสั่งด้านล่างนี้

Send("C:\KMPlayer")
; ส่งข้อความว่า C:\KMPlayer เข้าไปในหน้าต่างโปรแกรม

Send("{ENTER}")
; คำสั่งส่งค่าการกดปุ่ม Enter เข้าไปในหน้าต่างที่มีคำว่า Install Location



7. สุดท้ายเมื่อติดตั้งโปรแกรมเสร็จ ก็จะถึงหน้าต่างสุดท้าย เราเขียนคำสั่งได้ดังนี้

WinWaitActive("","Completing")
;รอข้อความในหน้าต่างที่มีคำว่า Completing ถึงจะทำตามคำสั่งด้านล่างนี้

Send("{SPACE}{ENTER}")
;ส่งค่าคีย์การกดปุ่ม สเปชบาร์ และปุ่ม เอ็นเทอร์ ลงไปในหน้าต่าง



จบแล้วนะครับ คำสั่งทั้งหมดเมื่อเขียนออกมาแล้วก็จะได้ตามรูปด้านล่างนี้

Run("kmp")
WinWaitActive("Installer","")
Send("{ENTER}")
WinWaitActive("","Welcome")
Send("{ENTER}")
WinWaitActive("","License Agreement")
Send("{ENTER}")
WinWaitActive("","Choose Components")
send("{TAB}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{SPACE}{ENTER}")
WinWaitActive("","Install Location")
Send("C:\KMPlayer")
Send("{ENTER}")
WinWaitActive("","Completing")
Send("{SPACE}{ENTER}")

---------------------------------------------------------------------

สร้างไฟล์ .exe เพื่อนำไปใช้กับคอมพิวเตอร์เครื่องอื่น

ขั้นตอนต่อไปก็ Compile คำสั่งทั้งหมดให้กลายเป็นโปรแกรมนามสกุล .exe วิธีการก็คือ

1. คลิกไปที่เมนูคำสั่ง Tools -> Compile (หรือกดปุ่ม Ctrl + F7 ที่คีย์บอร์ด) ตามรูปด้านล่างนี้



2. ไปที่โฟลเดอร์ที่เราเก็บไฟล์ติดตั้งโปรแกรม คุณจะเห็นว่ามีไฟล์ kmpinstall.exe เพิ่มขึ้นมา ไฟล์นี้เราจะนำไปใช้คู่กับไฟล์โปรแกรมkmp.exe ไปไหนก็เอาไปด้วย เวลาจะติดตั้งโปรแกรมแบบอัตโนมัติก็ดับเบิลที่ไฟล์ kmpinstall.exe ได้เลย

     ส่วนไฟล์ kmpinstall.au3 เป็นไฟล์ที่บรรจุคำสั่งที่เราเซฟเอาไว้ตอนแรก (เป็นไฟล์ดิบที่ยังไม่ได้ Compile) คุณจะแก้ไขคำสั่งก็ต้องมาแก้ไขที่ไฟล์นี้ ไม่จำเป็นต้องนำไฟล์นี้ติดไปกับไฟล์ kmpinstall.exe และ kmp.exe นะครับ


3. ถ้าคุณอยากจะเปลี่ยนไอคอน Autoit ก็เปลี่ยนได้นะครับ ด้วยการเข้าไปโปรแกรมย่อย Compile Script to .exe ซึ่งจะอยู่ในโฟลเดอร์เดียวกับโปรแกรม SciTE Script Editor (อยู่ใน Start -> Programs นะครับ) วิธีการก็คลิกปุ่ม Browse เพื่อเลือกไฟล์ที่จะนำมา Compile ใหม่ในตัวอย่างนี้คือ kmpinstall.au3 และคลิกปุ่ม Browse อันล่างสุด (ไม่ใช่อันกลาง) เพื่อเลือกไฟล์ไอคอนใหม่มาใส่แทนของเดิม

4. คลิกปุ่ม Convert โปรแกรมจะสร้างไฟล์ใหม่ขึ้นมา พร้อมกับใช้ไอคอนที่คุณกำหนดมาทันที


###จบแล้วครับ###

9 comments:

  1. . ขอบคุณครับ

    ReplyDelete
  2. เจ๋งจริง อย่างงี้ลดเวาในการลงโปรแกรม มากทีเดียว ขอบคุณมากครับ

    ReplyDelete
  3. หาวิธีทำมานานเหมือนกันครับ เพิ่งมาเจอ ของคุณที่แนะนำและแสดงเป็นขั้นตอน ขอบคุณมากๆ ครับ ได้ลองทำแล้ว มีปัญหาปรึกษา ครับ
    - ถ้าเจอขั้นตอนการลงโปรแกรมที่ต้องเลือก Accept ทำอย่างไรครับ เพราะผมได้ลอง ใช้คำสั่ง Tab ก็ไม่ได้ครับ
    - ผมเคยโหลดได้โปรแกรม ที่มัน มีไฟล์เดียว แล้ว Run จะคลิกตั้งให้อัตโนมัติ จนลงเสร็จทั้งโปรแกรม ไม่ทราบว่าใช้โปรแกรมนี้ทำหรือเปล่าครับ และทำอย่างไงครับ
    - กรณีต้องตั้งค่าโปรแกรม ในบางส่วนหลังจากติดตั้งเสร็จ ทำอย่างไรครับ คือว่าความรู้น้อย ถ้าทำเป็นตัวอย่างด้วยจะขอบพระคุณมากครับ
    - ผมเคยทำ Bat Files เพื่อทำการ Copy ฟอนท์ ภาษาไทย ไปไว้ใน Folder มันทำการ Copy ไปได้เสร็จสมบูรณ์ครับ แต่พอเข้าไปดูในแบบอักษรของ Word กลับไม่พบ เพราะอะไรครับ แล้วจะรับจากโปรแกรม นี้ทำอย่างไรครับ
    - รบกวนท่านทำหัวข้อเกี่ยวกับ การทำ WPI ด้วยอีกหนึ่งเรื่องนะครับ แบบเป็นขั้นตอน และมีแบบฝึกหัดลองทำ
    ขอบพระคุณมากครับ ...............

    ReplyDelete
  4. ในกรณีที่ใช้คำสั่ง Run แต่ไม่ใช้ .exe จะใช้คำสั่งอะไรคับ พอดีผมเป็น .msi จะต้องใช้คำสั่งอะไรคับ

    ReplyDelete
  5. ใช้คำสั่ง ShellExecute เช่น ShellExecute("setup.msi")

    ปล. ตอบช้านะครับ ถามตรงนี้เพราะไม่ได้เข้ามาดูบ่อย ยังไงเข้าไปถามตรงฟอรั่ม AutoIt จะตอบเร็วกว่าเพราะเข้าไปเกือบทุกวัน ฟอรั่มตามลิงก์นี้

    http://pssix.forumotion.com/forum-f2/

    ReplyDelete
  6. ขอบคุณมากๆครับพี่

    ReplyDelete
  7. ขอบคุณครับใช้ได้จริงๆ

    ReplyDelete
  8. ขอถามหน่อยครับ ปัจจุบันผมจะใช้คำสั่ง Send("{ENTER}") แต่ว่ามันไม่กด ENTER ที่โปรแกรมให้ครับ WinWaitActive ก็ใช้แล้วครับ เป็นเพราะ Windowns หรือป่าวครับ ผมใช้ Win8,10 ก็ไม่ได้

    ReplyDelete

    ส่วนนี้สำหรับแสดงความคิดเห็นทั่วไป สอบถามปัญหาตั้งถามได้ที่ฟอรั่ม


>>> [โปรดอ่าน] เนื่องจาก บทความการใช้งานบางโปรแกรมได้โฟสไปนานแล้ว
โปรแกรมอาจมีการอัปเดท วิธีการใช้งาน อาจใช้ไม่ได้ หรือมีวิธีที่ง่ายกว่าในเวอร์ชั่นใหม่
หากคุณพบว่าวิธีการใช้งานไม่ตรงกับบทความในบล็อกนี้ สามารถแนะนำเพิ่มเติมได้ครับ