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
- Từ phân vùng Windows cài cùng máy (dual-boot):
C:\Windows\system32\. - Từ đĩa cài Windows: dùng
expandgiải nén filemsftedit.dl_,msls31.dl_. - 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
- Tạo thư mục:
mkdir -p "~/.wine/drive_c/Program Files/KeyNote-NF". - Copy
keynote.exe+ 2 DLL vào đó. - Chạy: chuột phải
keynote.exe→ "Run with Wine" hoặc terminalwine keynote.exe.
Excel/Delphi (CreateOleObject)
Đặt 2 DLL trong thư mục chứa file .exe Delphi/Excel đang chạy.
WordPad (write.exe)
- Tạo
~/.wine/drive_c/Program Files/Windows Accessories/. - Copy
write.exe,msftedit.dll,msls31.dllvào. - 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.