2026-10-16 12:07:25 +07:00
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
manifest ของ Word add-in "e-Court Documents Versioning" (พอร์ตจาก D:\word-addin-poc\addin\manifest.xml)
2026-10-16 13:54:25 +07:00
ไฟล์นี้เป็น **template** — URL ทุกตัวเป็น absolute https ตามข้อบังคับของ Office
โดยค่า default คือ dev (https://localhost:3000/docedit/wordaddin) และถูก serve
ผ่าน route `app/wordaddin/manifest.xml/route.ts` ที่ rewrite origin ให้ตรงกับ
โฮสต์ที่ขอไฟล์อัตโนมัติ (dev/UAT/production ใช้ template เดียวกัน — เข้าถึงที่
/docedit/wordaddin/manifest.xml ของ environment นั้น ๆ ได้เลย)
(รายละเอียดวิธีรัน dev + sideload: docs/WORDADDIN-DEV.md)
2026-10-16 12:07:25 +07:00
ผลต่างจากต้นฉบับ:
- taskpane ชี้ที่หน้า Next.js (/docedit/wordaddin) แทน taskpane.html ของ webpack
- ตัด DialogAPI (login ช่วงนี้เป็น mock ไม่มี Keycloak dialog) — เหลือ WordApi 1.5 + OpenBrowserWindowApi
- ตัด AppDomain ของ Keycloak (https://localhost:8443)
- Commands.Url ชี้ taskpane URL เดียวกัน (ไม่มี commands.html — ปุ่มเดียวคือ ShowTaskpane)
- คง Id GUID เดิม — เครื่องที่เคย sideload ตัว poc จะถือว่าเป็น add-in ตัวเดิม
-->
<OfficeApp xmlns= "http://schemas.microsoft.com/office/appforoffice/1.1" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xmlns:bt= "http://schemas.microsoft.com/office/officeappbasictypes/1.0" xmlns:ov= "http://schemas.microsoft.com/office/taskpaneappversionoverrides" xsi:type= "TaskPaneApp" >
<Id > 4a1e184a-ab31-4fa4-b3c7-9a2283051c3f</Id>
2026-10-16 14:20:24 +07:00
<Version > 1.0.0.2</Version>
2026-10-16 12:07:25 +07:00
<ProviderName > e-Court Documents Versioning</ProviderName>
<DefaultLocale > en-US</DefaultLocale>
<DisplayName DefaultValue= "e-Court Documents Versioning" />
<Description DefaultValue= "Opens the e-Court Documents Versioning task pane." />
<IconUrl DefaultValue= "https://localhost:3000/docedit/wordaddin/icons/icon-32.png" />
<HighResolutionIconUrl DefaultValue= "https://localhost:3000/docedit/wordaddin/icons/icon-64.png" />
<SupportUrl DefaultValue= "https://localhost:3000/docedit/wordaddin" />
<AppDomains >
<AppDomain > https://localhost:3000</AppDomain>
</AppDomains>
<Hosts >
<Host Name= "Document" />
</Hosts>
<!-- Requirement sets ที่ services layer ใช้จริง — host ที่ไม่รองรับจะไม่โหลด add - in เลย (fail fast ดีกว่าพังกลางทาง)
2026-10-16 14:20:24 +07:00
WordApi 1.3: API สูงสุดที่ใช้นอกเหนือจาก close() — customXmlParts (1.3), customProperties /
document.save() / contentControls (1.1) — และเป็นระดับสูงสุดที่ Office 2019 perpetual
รองรับ (WordApi 1.4/1.5 = Microsoft 365 เท่านั้น — เดิมตั้ง 1.5 ทำให้เครื่องศาลที่ใช้
Office 2019 โหลด add-in ไม่ขึ้นเลย 2026-10-16); document.close() (FR-18) ตรวจ runtime
แยกที่ canCloseDocument() → isSetSupported("WordApi","1.5") — เครื่องที่ไม่ถึงซ่อนปุ่ม
ปิดเอกสารทุกแบบ (พฤติกรรมเดียวกับ Word on the web)
2026-10-16 12:07:25 +07:00
OpenBrowserWindowApi 1.1: เปิด presigned download URL ในเบราว์เซอร์ของเครื่อง (webview ของ Word ทิ้ง blob download) -->
<Requirements >
<Sets DefaultMinVersion= "1.1" >
2026-10-16 14:20:24 +07:00
<Set Name= "WordApi" MinVersion= "1.3" />
2026-10-16 12:07:25 +07:00
<Set Name= "OpenBrowserWindowApi" MinVersion= "1.1" />
</Sets>
</Requirements>
<DefaultSettings >
<SourceLocation DefaultValue= "https://localhost:3000/docedit/wordaddin" />
</DefaultSettings>
<Permissions > ReadWriteDocument</Permissions>
<VersionOverrides xmlns= "http://schemas.microsoft.com/office/taskpaneappversionoverrides" xsi:type= "VersionOverridesV1_0" >
<Hosts >
<Host xsi:type= "Document" >
<DesktopFormFactor >
<GetStarted >
<Title resid= "GetStarted.Title" />
<Description resid= "GetStarted.Description" />
<LearnMoreUrl resid= "GetStarted.LearnMoreUrl" />
</GetStarted>
<FunctionFile resid= "Commands.Url" />
<ExtensionPoint xsi:type= "PrimaryCommandSurface" >
<OfficeTab id= "TabHome" >
<Group id= "CommandsGroup" >
<Label resid= "CommandsGroup.Label" />
<Icon >
<bt:Image size= "16" resid= "Icon.16x16" />
<bt:Image size= "32" resid= "Icon.32x32" />
<bt:Image size= "80" resid= "Icon.80x80" />
</Icon>
<Control xsi:type= "Button" id= "TaskpaneButton" >
<Label resid= "TaskpaneButton.Label" />
<Supertip >
<Title resid= "TaskpaneButton.Label" />
<Description resid= "TaskpaneButton.Tooltip" />
</Supertip>
<Icon >
<bt:Image size= "16" resid= "Icon.16x16" />
<bt:Image size= "32" resid= "Icon.32x32" />
<bt:Image size= "80" resid= "Icon.80x80" />
</Icon>
<Action xsi:type= "ShowTaskpane" >
<TaskpaneId > ButtonId1</TaskpaneId>
<SourceLocation resid= "Taskpane.Url" />
</Action>
</Control>
</Group>
</OfficeTab>
</ExtensionPoint>
</DesktopFormFactor>
</Host>
</Hosts>
<Resources >
<bt:Images >
<bt:Image id= "Icon.16x16" DefaultValue= "https://localhost:3000/docedit/wordaddin/icons/icon-16.png" />
<bt:Image id= "Icon.32x32" DefaultValue= "https://localhost:3000/docedit/wordaddin/icons/icon-32.png" />
<bt:Image id= "Icon.80x80" DefaultValue= "https://localhost:3000/docedit/wordaddin/icons/icon-80.png" />
</bt:Images>
<bt:Urls >
<bt:Url id= "GetStarted.LearnMoreUrl" DefaultValue= "https://go.microsoft.com/fwlink/?LinkId=276812" />
<bt:Url id= "Commands.Url" DefaultValue= "https://localhost:3000/docedit/wordaddin" />
<bt:Url id= "Taskpane.Url" DefaultValue= "https://localhost:3000/docedit/wordaddin" />
</bt:Urls>
<bt:ShortStrings >
<bt:String id= "GetStarted.Title" DefaultValue= "Get started with your add-in!" />
<bt:String id= "CommandsGroup.Label" DefaultValue= "e-Court Add-in" />
<bt:String id= "TaskpaneButton.Label" DefaultValue= "e-Court Documents Versioning" />
</bt:ShortStrings>
<bt:LongStrings >
<bt:String id= "GetStarted.Description" DefaultValue= "Your add-in loaded successfully. Go to the HOME tab and click the 'Show Task Pane' button to get started." />
<bt:String id= "TaskpaneButton.Tooltip" DefaultValue= "Opens the e-Court Documents Versioning task pane." />
</bt:LongStrings>
</Resources>
</VersionOverrides>
</OfficeApp>