Forums:

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

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

สาเหตุที่ส่วนเสริมไม่สามารถใช้งานกับ NVDA เวอร์ชันใหม่ได้

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

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

วิธีแก้โค้ดในไฟล์ manifest

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

Clock; Incompatible; 22.01; Hrvoje Katic hrvojekatic@gmail.com, Abdel abdelkrim.bensaid@gmail.com

ซึ่งสำหรับส่วนเสริมตัวนี้ เราสามารถแก้ไขไฟล์ manifest เพื่อทำให้สถานะกลับมาเป็น enable และสามารถใช้งานได้ (ผู้เขียนทดลองด้วยตัวเองแล้ว)

(เพิ่มเติม: ล่าสุดนักพัฒนาได้ออกส่วนเสริม Clock เวอร์ชัน ที่รองรับ NVDA 2022.1 มาแล้ว แต่ยังไม่ได้ปล่อยบนเว็บส่วนเสริมอย่างเป็นทางการของ NVDA ใครอยากได้ไฟล์ติดตั้งก็สามารถ download Clock-22.06 ได้ที่นี่ )

วิธีก็คือ

  1. เข้าไปที่โฟลเดอร์ของส่วนเสริมตัวที่เราต้องการแก้ไข ซึ่งจะอยู่ในโฟลเดอร์ที่เก็บการตั้งค่าของโปรแกรม NVDA %appdata%\nvda\addons(ชื่อส่วนเสริมตัวนั้นๆ) โดยถ้าเป็นส่วนเสริม clock ก็จะชื่อว่า clock นั่นเอง หมายเหตุ: ส่วนเสริมบางตัวอาจมีชื่อไม่ตรงกับเวลาเราเลื่อนอ่านในหน้าต่าง add-on manager ได้เช่นส่วนเสริม ZExplorer ในหน้าต่าง add-on manager จะอ่านว่า Add status bar reading
  2. เมื่อมาอยู่ในโฟลเดอร์ของส่วนเสริมที่ต้องการแล้ว ให้เลื่อนลงไปหาไฟล์ที่ชื่อ manifest และกดคลิกขวาหรือกดปุ่ม application แล้วเข้าเมนู edit เพื่อแก้ไข
  3. ให้เลื่อนลงไปล่างสุดแล้วกดย้อนขึ้นมา หาบรรทัดที่เขียนว่า lastTestedNVDAVersion = (จะต่อท้ายด้วยเลขเวอร์ของ NVDA) โดยถ้าเป็นของส่วนเสริม Clock เวอร์ชันล่าสุด เลขในบรรทัดนี้จะเป็น 2021.3 ซึ่งส่วนที่เราต้องแก้ไขก็คือจุดนี้ โดยการเปลี่ยนเลขเวอร์ชันให้เท่ากับหรือมากกว่าเวอร์ชันของ NVDA ที่เราต้องการ ซึ่งในที่นี้ NVDA เวอร์ชันล่าสุด คือ NVDA 2022.1 เราจะแก้ค่าตรงนี้ให้เป็น 22.1 ก็ได้ หรืออย่างผู้เขียนก็จะแก้ตัวเดียว คือเปลี่ยนจาก 2021.3 > 2022.3 ไปเลย
  4. เมื่อแก้ไขเสร็จแล้วก็ให้กด control+s เพื่อ save ไฟล์ manifest นี้ แล้วก็กดปิดหน้าต่างออกไป
  5. restart NVDA หนึ่งครั้ง เพียงเท่านี้ส่วนเสริมของเราก็ (อาจจะ) กลับมาสามารถใช้งานกับ NVDA เวอร์ชันล่าสุดได้อีกครั้ง

** หมายเหตุ **

ย้ำอีกครั้งว่าอันนี้เป็นวิธีที่ไม่มีการรับประกันผลในการใช้งาน เนื่องจากถ้าหากส่วนเสริมตัวนนั้น มีคำสั่งที่มีการเปลี่ยนแปลง และต้องได้รับการอัพเดตโค้ดภายในจริงๆ ต่อให้เราทำให้สถานะของส่วนเสริมในหน้า add-on manager กลับมาเป็น enable ได้ แต่เมื่อเรากดคำสั่งของส่วนเสริมตัวนั้นๆ ใช้งาน ก็อาจจะใช้งานไม่ได้ก็ได้ หรือบางกรณีคือ ส่วนเสริมที่เราแก้ไขให้กลับมาใช้งานได้ ก็อาจจะใช้ฟีเจอร์ได้ไม่ครบถ้วน อย่างส่วนเสริม Clock ที่ยกตัวอย่างนี้ ผู้เขียนทดสอบแล้วว่าสามารถตั้งค่าให้มีเสียงเตือนตามเวลาที่กำหนดได้ แต่ก็ไม่ได้ทดสอบว่าฟีเจอร์อื่นๆ เช่น จับเวลา จะมีปัญหาหรือไม่

นอกจากนี้ส่วนเสริมอีกหลายๆ ตัวที่โดนปิดการใช้งานไป และผู้เขียนแก้ไขไฟล์ manifest ให้กลับมาใช้งานได้ ก็ยังไม่พบตัวใดที่มีปัญหา (เท่าที่ทดลองใช้ประมาณนึง) ดังนั้น สำหรับเหตุการณ์เฉพาะหน้ากับ NVDA 2022.1 นี้ ก็ยังไม่มีปัญหามากนัก

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