From 1aeaae38f145f17c7eb6cd80221295296020aca5 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 16 Oct 2026 14:20:24 +0700 Subject: [PATCH] fix(wordaddin): lower WordApi requirement for Office 2019 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit add-in โหลดไม่ขึ้นเลยบนเครื่องศาลที่ใช้ Office 2019 — manifest ตั้ง WordApi 1.5 ซึ่งเป็น Microsoft 365 เท่านั้น (Office 2019 perpetual รองรับสูงสุด 1.3) host ที่ไม่ถึง requirement จะปฏิเสธ โหลด add-in ตั้งแต่ต้นตามกลไกของ Office แก้: รองลงเป็น WordApi 1.3 (customXmlParts คือ API สูงสุดที่ใช้ ประจำ — customProperties/save/contentControls เป็น 1.1) + bump Version 1.0.0.1 → 1.0.0.2 ให้ Word ทุกเครื่องเห็นว่าเป็น เวอร์ชันใหม่แล้วดึง manifest ใหม่ (กันแค manifest เดิมของตัว poc ที่เคย sideload — GUID เดิม) ผลข้างเคียงบน Office 2019: ปุ่ม "บันทึกและปิดเอกสาร" / "บันทึกเวอร์ชันและปิดเอกสาร" ถูกซ่อนอัตโนมัติ — document.close() ต้องการ WordApi 1.4/1.5 โดย canCloseDocument() เช็ค isSetSupported("WordApi","1.5") ตอน runtime อยู่แล้ว (กลไกเดิม ที่ทำไว้สำหรับ Word on the web) ฟีเจอร์อื่นใช้ได้ครบ ยืนยัน: parse XML ผ่าน (@xmldom) — WordApi=1.3, OpenBrowserWindowApi=1.1 (Office 2019 รองรับ), Version=1.0.0.2 · สำรวจ API ที่ใช้จริงทั้ง wordaddin/services แล้วทุกตัว ≤1.3 ยกเว้น close() ที่มี runtime guard Co-Authored-By: Claude Code --- docs/WORDADDIN-DEV.md | 2 ++ public/wordaddin/manifest.template.xml | 11 ++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/docs/WORDADDIN-DEV.md b/docs/WORDADDIN-DEV.md index eb8efbc..65edac4 100644 --- a/docs/WORDADDIN-DEV.md +++ b/docs/WORDADDIN-DEV.md @@ -41,6 +41,8 @@ manifest ต้องชี้ https — 2 ทางเลือก: Deploy จริง (intranet): **ไม่ต้อง rewrite อะไรแล้ว** — manifest serve ผ่าน `app/wordaddin/manifest.xml/route.ts` ซึ่งเขียนทับ origin ให้ตรงโฮสต์ที่ขอไฟล์อัตโนมัติ ดาวน์โหลด `https://<โฮสต์>/docedit/wordaddin/manifest.xml` แล้วใช้ sideload ได้ทันทีทุก environment (dev/UAT/production) · proxy ฝั่งหน้าควรส่ง `X-Forwarded-Host`/`X-Forwarded-Proto` ตามมาตรฐาน — ถ้าไม่ส่ง route ก็ยังใช้ Host ของ request และบังคับ https ให้โฮสต์ที่ไม่ใช่ localhost อยู่ดี +รุ่น Office ที่รองรับ: manifest กำหนด WordApi **1.3** เป็นค่าต่ำสุด (customXmlParts คือ API สูงสุดที่ใช้ประจำ) — Microsoft 365 / Office 2021+ ใช้ได้ครบทุกฟีเจอร์ · **Office 2019 โหลดได้ แต่ปุ่ม "…และปิดเอกสาร" ถูกซ่อนอัตโนมัติ** เพราะ `document.close()` ต้องการ WordApi 1.4/1.5 (Microsoft 365 เท่านั้น) — `canCloseDocument()` เช็ค `isSetSupported` ตอน runtime แล้วซ่อน พฤติกรรมเดียวกับ Word on the web · Office 2016 (WordApi 1.1) โหลดไม่ขึ้น (เดิมเคยตั้ง 1.5 ทำให้ Office 2019 โหลดไม่ขึ้นด้วย — แก้ 2026-10-16) + ## ทดสอบใน browser ธรรมดา (ไม่ต้องเปิด Word) - **`/docedit/wordaddin`** — เส้นทางจริง: Office.js โหลดได้แม่นนอก host (host เป็น null) → เห็น `signed-out` → กด Sign in (mock ผ่านทันที) → detect พังที่ `Word.run` → `bootError` + ปุ่มลองใหม่ (ตรวจ state machine/handler ได้ครบ) diff --git a/public/wordaddin/manifest.template.xml b/public/wordaddin/manifest.template.xml index 6cc87ef..efe2e93 100644 --- a/public/wordaddin/manifest.template.xml +++ b/public/wordaddin/manifest.template.xml @@ -18,7 +18,7 @@ --> 4a1e184a-ab31-4fa4-b3c7-9a2283051c3f - 1.0.0.1 + 1.0.0.2 e-Court Documents Versioning en-US @@ -33,11 +33,16 @@ - +