จาก Blog ตอนที่แล้วที่จะว่าตัว Sun One มัน Required Specific Locale ทำให้ dotnet build เจอ Error MSB3554 เลยต้องหาทางแก้กัน เพราะ ผบห ไม่ให้งบ Resource เพิ่มและ ให้เอามาฝาก Agent ที่ผมดูแลแบบงงๆ
Table of Contents
Solution ที่เป็นไปได้
- แยก user และกำหนด Profile สำหรับ Run ไปเลย ตอนใช้งานให้ Run As User ไปแทน
- ลองใช้งานตัว Locale Remulator สร้าง ENV ปลอมๆสำหรับให้ Sun One ใช้งานตอน Run เท่านั้นครับ
หลังจากถกกันสรุปจะไม่เพิ่ม User แนวทางเลยมาเป็นการใช้ Locale Emulator แทนครับ
Locale Emulator / Locale Remulator คือ อะไร
เป็น Utility เล็กๆ ที่ช่วยจำลอง Environment ขึ้นมา เพราะตัว App
- อาจจะ Lock ประเทศไม่ให้เปิด เหมือนยุคนึงจะใช้วิธีนี้กันของเถื่อน
- หรือ ต้องการให้ Set ENV ตามประเทศนั้น เพื่อการแสดงภาษาที่สมบูรณ์ครับ เช่น พวกภาษาจีน และ ญี่ปุ่น (จริง สมัยนี้ Windows ยุคใหม่น่าจะทำได้หมดแล้ว)
ดังนั้น เพื่อแก้ปัญหานี้ทาง Microsoft ได้ทำ App Microsoft AppLocale แต่หยุดพัฒนาไป 10 กว่าปีแล้วครับ ทีนี่มีชุมชน Open Source พัฒนาขึ้นมามาต่อครับ โดยตอนแรกจะเป็นตัว
- Locale Emulator - รองรับเฉพาะ App 32 bits แต่ได้หยุดพัฒนาไปตอนปี 2022
- Locale Remulator - อันนี้เค้า Fork จาก Locale Emulator มาปรับปรุง และรองรับ App 64 bits เพิ่มเติมด้วยครับ
ทางผมเลยจะเลือกใช้ตัวนี้มาแก้ปัญหาเรื่อง Sun One เพราะถ้าแก้ได้ เดี๋ยวผูก Jenkins ต่อได้
การใช้งาน Locale Remulator
- ติดตั้ง Locale Remulator
- Download จาก https://github.com/InWILL/Locale_Remulator + ส่งให้ Scan Virus ให้เรียบร้อย
- แตก Zip และกำหนด Path ให้ชัดเจน Path นี้ห้ามลบเด็ดขาด ของผมจะกำหนดอยู่ใน Path D:\Software\Locale_Remulator.1.6.0
- เข้าไปที่ติดตั้ง ดับเบิ๊ลคลิก LRInstaller.exe ด้วยสิทธิ Administrator และกด Install


- กำหนด Profile ใน Locale Remulator
ที่ Path ติดตั้ง ดับเบิ๊ลคลิก LREditor.exe ด้วยสิทธิ Administrator จากนั้นทำการกำหนดค่าตาม Step ดังรูป

- CodePage Setting - Thai (Thailand)
- TimeZone Setting - (UTC+07:00) Bangkok, Hanoi, Jakarta
- ตรง Advance Setting ให้เลือก
- Run As Administrator
- Hook Input Method Editor
- Fake System UI Language - จากนั้นกด Save As โดยกำหนดชื่อ Run In Thai(Admin) และกด Save จากนั้นปิดโปรแกรม LREditor.exe
ข้อมูลทั้งหมดจะอยู่ในไฟล์ LRConfig.xml โดยจำ Guid ไว้นะครับ

- ตรวจสอบก่อน Path ของ exe ที่มีปัญหาอยู่ที่ไหน
ดูก่อนว่า Path ที่ตัว Sun One เรียกใช้งานจริงๆ อยู่ที่ไหน โดยคลิกขวาที่ Shortcut ดูที่ Property Target ปกติอยู่ที่

- Target "C:\Program Files\s1studio\ee\bin\runidew.exe"
จริงตอนนี้เราสามารถคลิกขวา shortcut หรือ ตัว exe เพื่อให้ Local Remulator มันมาจำลอง Windows ENV แล้วเปิด App ได้แล้วครับ

- ทำ Shortcut อันใหม่ เพื่อความสะดวกในการใช้งาน
ทำ ShortCut อันใหม่ โดยใช้ LREditor.exe ด้วยสิทธิ Administrator และทำการกำหนดค่า ดังนี้

- Drop Down เลือก Run In Thai(Admin)
- กด Shortcut มันจะขึ้น popup ให้เราไปหา exe ที่ Run Program ไหน ในที่นี้ C:\Program Files\s1studio\ee\bin เลือกไฟล์ runidew.exe
ในที่นี้จะอยู่ใน C:\Program Files\s1studio\ee\bin ลอง Edit ขึ้นมาดูครับ เนื่องจาก Program ตัวนี้มี Bug เล็กน้อย ตอนสร้าง Shortcut มันจะกำหนด path ไปหา exe ที่เราต้องการ ในทีนี้ runidew.exe ไม่ครบต้องมาแก้มือ ให้คลิกขวาที่ Shortcut และตรง Target ในช่วงท้ายๆให้ไปแก้ Path ของ exe เราให้ถูก

- ตัวอย่างที่ผิด
D:\Software\Locale_Remulator.1.6.0\LRProc.exe 29e1b017-88dc-4857-a78b-da5822009950 C:\Program
- ตัวอย่างที่ถูก
D:\Software\Locale_Remulator.1.6.0\LRProc.exe 29e1b017-88dc-4857-a78b-da5822009950 C:\Program Files\s1studio\ee\bin\runidew.exe
ลองใช้งาน เราเปิด Sun One ขึ้นแล้วครับ


จากเรื่อง Shortcut ตอนนี้เรารู้แล้ว ถ้าจะไปให้ Call Jenkins จะเรียกยังไง
[PATH_TO/LRProc.exe] [GUID_IN_LRConfig.xml] [PATH_TO_YOUR_DESIRE_EXE]
ที่เหลือก็ให้ไปศึกษา exe ของ sun one ว่ามี param ยังไง แล้ว build pipeline ระหว่างทำระบบใหม่ขึ้นมาครับ
ถ้ามีการขยับ Version ก่อนจะลง Version ใหม่ ให้ Run LRInstaller.exe ด้วยสิทธิ Administrator และกด Uninstall + Restart สักรอบก่อนลง Ver ใหม่
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.