Computer >> Hướng Dẫn Máy Tính >  >> Xử Lý Sự Cố >> Linux

Khắc Phục Lỗi OLE 8004013F Trong Wine Trên Linux

Chạy ứng dụng Windows (database, macro, Delphi, Keynote-NF...) trên Wine đôi khi báo OLE Error 8004013F — thiếu thư viện OLE/COM để liên kết object (Excel, WordPad...). Linux không có cơ chế OLE gốc, Wine dùng bản mở (thường thiếu tính năng).

Nguyên Nhân & Giải Pháp Cốt Lõi

Cần 2 file DLL từ Windows:

  • msftedit.dll (Rich Edit control)
  • msls31.dll (Line Services)

Copy 2 file này vào thư mục chương trình Windows trong Wine.

Các Cách Lấy File DLL

  1. Từ phân vùng Windows cài cùng máy (dual-boot): C:\Windows\system32\.
  2. Từ đĩa cài Windows: dùng expand giải nén file msftedit.dl_, msls31.dl_.
  3. Tải từ Internet: Quét malware kỹ! Không chạy file .exe từ repo DLL. Có rủi ro license nếu redistribute code.

Đặt File DLL Ở Đâu

Cách 1: Thư Chương Trình Cụ Thể (Khuyên Dùng — Không Ô Nhiễm Hệ Thống)

~/.wine/drive_c/Program Files/TenUngDung/
# hoặc
~/.wine/drive_c/Program Files/KeyNote-NF/  (ví dụ Keynote-NF)

Đặt msftedit.dll, msls31.dll (và .exe nếu cần) ở đây. Code/script tham chiếu thư mục này.

Cách 2: System32 Của Wine (Dễ Nhưng Có Thể Ghi Đè File Mở)

~/.wine/drive_c/Windows/system32/

Ưu điểm: mọi app Wine đều dùng được. Nhược điểm: ghi đè file Wine mặc định, có thể gây xung đột khác.

Ví Dụ Cụ Thể

Keynote-NF

  1. Tạo thư mục: mkdir -p "~/.wine/drive_c/Program Files/KeyNote-NF".
  2. Copy keynote.exe + 2 DLL vào đó.
  3. Chạy: chuột phải keynote.exe → "Run with Wine" hoặc terminal wine keynote.exe.

Excel/Delphi (CreateOleObject)

Đặt 2 DLL trong thư mục chứa file .exe Delphi/Excel đang chạy.

WordPad (write.exe)

  1. Tạo ~/.wine/drive_c/Program Files/Windows Accessories/.
  2. Copy write.exe, msftedit.dll, msls31.dll vào.
  3. Tham chiếu thư mục này từ script/batch.

Batch Script Trong Wine

Wine có bản `cmd.exe` đơn giản. File .bat:

@ECHO OFF
wine "C:\Program Files\Windows Accessories\write.exe"

@ECHO OFF bắt buộc — nếu không mỗi lệnh in ra màn hình như gõ tay.

Lưu Ý Quan Trọng

  • Quét virus bắt buộc nếu tải DLL từ net.
  • Không cài file .exe từ repo DLL — thường là adware.
  • Vấn đề license: DLL Microsoft là closed-source — phân phối kèm code có thể vi phạm bản quyền.
  • Nếu cần nhiều DLL khác → "dependency rabbit hole" — cân nhắc dùng VM Windows thay vì Wine.

Tóm Tắt

Lỗi OLE 8004013F = thiếu msftedit.dll + msls31.dll. Lấy từ Windows partition / đĩa cài / Internet (quét virus). Đặt trong thư mục app cụ thể (~/.wine/drive_c/Program Files/...) — an toàn nhất. Tránh đặt vào system32 Wine trừ khi cần thiết.