Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การแก้ไขปัญหา >> Linux

แก้ OLE Error 8004013F ใน Wine บน Linux: คู่มือขั้นตอน

รัน database หรือ macro ใน Wine-based environment บน GNU/Linux อาจเจอ error ที่จุดหนึ่งของ program flow: กล่อง OLE Error 8004013F ปรากฏ สคริปต์หยุดทำงานทันที หากเกิดขึ้น ขาด library ที่สคริปต์ต้องการ ใน Windows native libraries นี้ match objects ในไฟล์กับ parent host Linux ไม่มีความสามารถนี้ เพราะแต่ละโปรแกรมใน X Server จัดการเอง

Windows native: Delphi ใช้โค้ดเล็กน้อยเปิด Excel หากต้องการ embedded/linked Excel instance ทำงานกับ objects: eclApp:=CreateOleObject('Excel.Application'); ใน Linux อาจลอง OpenOffice แบบนี้ เจอ 8004013F หลังพยายามสร้าง OLE object ด้วย eclApp:=CreateOleObject('com.sun.star.ServiceManager'); = ปัญหา dependency เดียวกัน เช็ค typo ก่อน (สาเหตุ error มากที่สุดก่อน dependencies) มั่นใจว่าโค้ดถูกต้อง แล้วค่อย recover libraries

OLE Libraries ที่จำเป็น

Error เดียวกันอาจเกิดกับ Windows organizer app keynote-nf ใช้กระบวนการเดียวกันแก้ keynote.exe ไม่มี installer มัก copy ไป Program Files directory อาจรันได้ แต่เจอ 8004013F หรือ 80004001 exception สร้าง directory ใน Program Files (mkdir หรือ file manager) ชื่อ KeyNote-NF ย้าย keynote.exe ไป

หากเข้าถึง partition Windows XP/Vista/7/8/8.1/10 ได้: copy msftedit.dll จาก C:\Windows\system32\ ไป KeyNote-NF directory copy msls31.dll ด้วย ได้จาก installation CD ด้วย (ต้อง expand command inflate) รันโปรแกรม ควรทำงานได้

Thunar, Nautilus ระบุ keynote.exe = DOS executable (ข้ามได้) รันเหมือนเดิม Right-click context menu อาจมี option รันภายใต้ Wine เลือกอันนี้ รันจากเทอร์มินัลดู error messages ได้ บางครั้ง warning ไฟล์อื่น非 msftedit.dll/msls31.dll ต้องหาไฟล์นั้นแทน คล้าย Unix dependency rabbit hole อาจใช้เวลาสร้าง directory เต็มไฟล์ต่างๆ

ปัญหาเดียวกันกับ Excel/Delphi code: ไป directory ที่มี executable ที่พยายามรัน วาง 2 DLL files นั้นไว้ ให้ Wine เข้าถึงได้เต็มที่: วางใน ~/.wine/drive_c/Windows/system32 แต่อาจ overwrite ไฟล์ที่ Wine ติดตั้ง default

DLLs นี้ superior บางด้านจาก open-source solutions ของ Wine ช่วย link objects ในโปรแกรมอื่นได้ แต่หลายคนไม่ชอบปน closed-source files ใน Linux วางเฉพาะ directory ที่โปรแกรมใช้ = แก้ปัญหาได้ดี สร้าง directories สำหรับ Windows accessories ที่ copy จาก partition อื่นได้ ตัวอย่าง: บางคนเจอปัญหา用 bash script/Delphi เริ่ม WordPad instances แบบดั้งเดิม Wine ติดตั้ง write.exe เอง แต่ไม่มีอะไรกีดสร้าง directory ใน ~/.wine/drive_c/Program Files/ วาง write.exe, msftedit.dll, msls31.dll แล้ว reference directory นั้นจากโค้ด Wine มี primitive cmd interpreter จาก Windows NT ใช้ reference ใน Batch script files ได้ ใส่ @ECHO OFF นำหน้า (มิฉะนั้นแต่ละคำสั่งจะเหมือนพิมพ์ที่ command line กด Enter ทีละอัน)

เว็บไซต์หลายแห่งเสนอ DLL objects ดาวน์โหลด น่าสนใจถ้าไม่มี Windows partition อื่น แต่ scan malware msftedit.dll และ msls31.dll หากบังคับต้องเอาแบบนี้ อย่าเทียบเท่า official repositories (Ubuntu, Debian, Fedora)

จำไว้: หากบังคับ acquire แบบนี้ อาจมี licensing concerns หาก redistribute code อย่าติดตั้ง executable ที่ repository ขอ (ส่วนใหญ่ adware ตarget official Microsoft Windows users) กรณีต้องดาวน์โหลด libraries หลายตัวนอกจาก 2 ตัวนี้ ก็อาจเหยื่อ adware เดียวกัน