OfficeDev / OfficeDev/Office-Addin-Scripts

office-addin-debugging 5.x / 6.x doesn't sideload on LTSC 2024 Mac

Open
#1,006 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
194
Forks
117
Avg merge
1d 32m
Merged PRs (30d)
2

Description

Summary

office-addin-debugging start (verified on 5.1.6 and 6.1.1) writes only
2 of the 6 SQL rows that the WEF scanner on Office LTSC 2024 Mac
requires to register a dev catalog. After registration, the dev add-in
is invisible to Excel's Insert > Add-ins > My Add-ins, no WefProcess
is spawned, no HTTP request reaches the dev server, and Excel's
diagnostic log contains zero references to the add-in GUID or the dev
server URL.

The same project on Microsoft 365 Mac sideloads normally (the dev
catalog gets auto-injected as a custom ribbon tab). The gap is specific
to LTSC 2024 Mac (which moved WEF storage to a WebView2-backed
on-disk layout the tooling doesn't populate).

Environment

  • Office LTSC Standard for Mac 2024, version 16.110.2, build 26062818
  • macOS 15.5
  • office-addin-debugging@5.1.6 and 6.1.1 (both reproduce identically)
  • office-addin-dev-settings@2.3.6 and 3.1.1 (the dev-settings-mac.js
    write path is byte-equivalent between these versions)
  • Excel is the only Office process running; no WefProcess child is ever spawned
  • Dev server: webpack serve on https://127.0.0.1:3000 (the dev cert
    from office-addin-dev-certs install is in the system keychain)

Repro

# 1. New project
mkdir repro && cd repro
# (initialize a taskpane add-in via Yo Office with manifest id e504fb41-...)

# 2. Start dev server
npm run dev-server &  # listens on https://127.0.0.1:3000

# 3. Sideload
./node_modules/.bin/office-addin-debugging start manifest.xml \
  --app excel --source-bundle-url-host 127.0.0.1 --source-bundle-url-port 3000 --no-debug

# 4. Open Excel
open -a "Microsoft Excel"
sleep 15

# 5. Observe:
#  - Insert > Add-ins > My Add-ins: dev add-in is NOT listed
#  - ps -ax | grep WefProcess: 0 matches (no child process)
#  - Dev server log: 0 requests from WefProcess
#  - Excel log: 0 references to the add-in GUID

Expected

After office-addin-debugging start, the dev catalog should be
discoverable by Excel's WEF scanner and the add-in should appear in
Insert > Add-ins > My Add-ins. WefProcess should spawn and load
taskpane.html from the dev server.

Actual

The dev catalog is registered in
~/Library/Group Containers/UBF8T346G9.Office/MicrosoftRegistrationDB/MicrosoftRegistrationDB_19413899015.reg
at HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Wef\Providers\<catalog-hash>,
but only with these 2 values:

Value Type Size
Entitlements REG_QWORD 8 (FILETIME)
UniqueId REG_SZ 9 ("developer")

Compare to a working Omex catalog (geLWvPTNy9pxk4xxzFEGHw==) on the
same machine, which has 4 values + an AppStates child node:

Value Type
BlockForMinor REG_DWORD
Entitlements REG_QWORD (FILETIME)
EntitlementsInvalid REG_SZ
UniqueId REG_SZ (LiveId, not "developer")
+ child: AppStates with <assetid>_<ver> REG_QWORD per add-in

The on-disk WEF layout at
~/Library/Containers/com.microsoft.Excel/Data/Library/Application Support/Microsoft/Office/16.0/Wef/{EC993EB3-E226-5544-8239-1F3370D3A9CD}/<catalog-hash>/
is also never created for dev catalogs (Omex catalogs have a full
10-subdir layout with Manifests/, AppStates/, Tokens/,
Metadata/, Html/, TrustedApps/, etc.).

Suggested fix

office-addin-debugging should detect LTSC 2024+ Mac installs (e.g.
Excel.app/Contents/Info.plist CFBundleVersion >= 16.110) and on
register, in addition to the current 2 SQL rows:

  1. Write BlockForMinor=0 (REG_DWORD)
  2. Write EntitlementsInvalid={unique-guid} (REG_SZ)
  3. Create AppStates child node under the catalog with
    <assetid>_<ver> REG_QWORD FILETIME per add-in
  4. Create the 10-subdir on-disk layout
    (Wef/{EC993EB3-...}/<catalog-hash>/) and populate
    Manifests/<aid>_<ver> (the manifest XML), AppStates/<aid>_<ver>
    (XML <o:results>), Tokens/<aid>_<ver> (XML <o:assets>),
    Metadata/<aid>_<ver>_<locale> (JSON), Html/<aid>_<ver>_<locale>
    (HTML redirector), and TrustedApps/<aid>_<ver> (empty marker).
  5. Set UniqueId to the user's LiveId rather than the literal
    "developer" (or add a fallback scan path that matches on
    UniqueId being absent).

The dev-settings-mac.js write path would also need to be updated to
target the new on-disk path; the legacy ~/Documents/wef/
fs.ensureLinkSync symlink is no longer read by LTSC 2024 Mac.

Related

  • See also: LTSC 2024 Mac WefProcess rejects manually-registered dev
    catalog (issue TBD) — even with all 5 preconditions written manually
    • the manifest signed, the WefProcess still does not spawn.
  • See also: Omex manifest signing not reproducible for non-Microsoft
    add-ins (issue TBD) — production Omex add-ins ship with XAdES-T
    signatures from CN=Microsoft Corporation Third-Party App Distribution,
    which no third party can obtain.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the dev-settings-mac.js write path and the office-addin-debugging start flow, then reproduce the registration with the supplied LTSC 2024 Mac steps. Compare the resulting MicrosoftRegistrationDB entry and Wef directory with the working Omex catalog. Done means the dev catalog is discoverable, the add-in appears in Excel, WefProcess starts, and the dev server receives a request.

Written by the indexing model from the issue text.

Assessment

Tech stack
macos, typescript
Domain
desktop, tooling
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.