From d376b04b361ff58292981d7c6b6b6d149f6a255a Mon Sep 17 00:00:00 2001 From: Archie Saxena Date: Sun, 4 Jan 2026 22:31:20 +0530 Subject: [PATCH 1/4] fix: resolve Invalid id in Terminal add in still installed error --- .../office-addin-dev-settings/src/publish.ts | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/packages/office-addin-dev-settings/src/publish.ts b/packages/office-addin-dev-settings/src/publish.ts index 702602c6a..354109c90 100644 --- a/packages/office-addin-dev-settings/src/publish.ts +++ b/packages/office-addin-dev-settings/src/publish.ts @@ -57,17 +57,22 @@ export async function uninstallWithTeams(id: string): Promise { return new Promise((resolve, reject) => { const guidRegex = /[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}/; const manifestIdRegex = new RegExp(`^${guidRegex.source}$`); - const titleIdRegex = new RegExp(`^U_${guidRegex.source}$`); + const titleIdRegex = new RegExp(`^.+_(${guidRegex.source})$`); let mode: string = ""; + let uninstallId: string = id; - if (titleIdRegex.test(id)) { - mode = `--mode title-id --title-id ${id}`; - } else if (manifestIdRegex.test(id)) { + if (manifestIdRegex.test(id)) { mode = `--mode manifest-id --manifest-id ${id}`; } else { - console.error(`Error: Invalid id "${id}". Add-in is still installed.`); - resolve(false); - return; + const match = id.match(titleIdRegex); + if (match) { + uninstallId = match[1]; + mode = `--mode manifest-id --manifest-id ${uninstallId}`; + } else { + console.error(`Error: Invalid id "${id}". Add-in is still installed. archieiieieiieiei`); + resolve(false); + return; + } } const uninstallCommand = `npx -p @microsoft/m365agentstoolkit-cli atk uninstall ${mode} --interactive false`; From 2195bbccff5d49daf9698a0215b185e1d4e81e98 Mon Sep 17 00:00:00 2001 From: Archie Saxena Date: Sun, 4 Jan 2026 22:34:49 +0530 Subject: [PATCH 2/4] fix: resolve Invalid id in Terminal add in still installed error --- packages/office-addin-dev-settings/src/publish.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/office-addin-dev-settings/src/publish.ts b/packages/office-addin-dev-settings/src/publish.ts index 354109c90..7ae7b7df9 100644 --- a/packages/office-addin-dev-settings/src/publish.ts +++ b/packages/office-addin-dev-settings/src/publish.ts @@ -69,7 +69,7 @@ export async function uninstallWithTeams(id: string): Promise { uninstallId = match[1]; mode = `--mode manifest-id --manifest-id ${uninstallId}`; } else { - console.error(`Error: Invalid id "${id}". Add-in is still installed. archieiieieiieiei`); + console.error(`Error: Invalid id "${id}". Add-in is still installed.`); resolve(false); return; } From c38133ac06b4b7e8c3210275c3f5c05e52b1c249 Mon Sep 17 00:00:00 2001 From: Archie Saxena Date: Thu, 8 Jan 2026 09:56:08 +0530 Subject: [PATCH 3/4] Resolved Comments --- .../office-addin-dev-settings/src/dev-settings-mac.ts | 10 ++++++++-- .../src/dev-settings-windows.ts | 5 +++-- packages/office-addin-dev-settings/src/publish.ts | 6 ++---- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/packages/office-addin-dev-settings/src/dev-settings-mac.ts b/packages/office-addin-dev-settings/src/dev-settings-mac.ts index f68b823be..9f3aa5238 100644 --- a/packages/office-addin-dev-settings/src/dev-settings-mac.ts +++ b/packages/office-addin-dev-settings/src/dev-settings-mac.ts @@ -119,7 +119,10 @@ export async function unregisterAddIn(addinId: string, manifestPath: string): Pr if (registeredFileName === manifestFileName || registeredFileName.startsWith(addinId)) { if (!registeredFileName.endsWith(".xml")) { - uninstallWithTeams(registeredFileName.substring(registeredFileName.indexOf(".") + 1)); + // Try manifest id first, fall back to titleId from filename + const titleIdFromFilename = registeredFileName.substring(registeredFileName.indexOf(".") + 1); + const idToUninstall = addinId || titleIdFromFilename; + uninstallWithTeams(idToUninstall); // TODO: Add support for refreshing add-ins in Outlook via registry key } fs.unlinkSync(registeredAddIn.manifestPath); @@ -133,7 +136,10 @@ export async function unregisterAllAddIns(): Promise { for (const registeredAddIn of registeredAddIns) { const registeredFileName = path.basename(registeredAddIn.manifestPath); if (!registeredFileName.endsWith(".xml")) { - uninstallWithTeams(registeredFileName.substring(registeredFileName.indexOf(".") + 1)); + // Try manifest id first, fall back to titleId from filename + const titleIdFromFilename = registeredFileName.substring(registeredFileName.indexOf(".") + 1); + const idToUninstall = registeredAddIn.id || titleIdFromFilename; + uninstallWithTeams(idToUninstall); // TODO: Add support for refreshing add-ins in Outlook via registry key } fs.unlinkSync(registeredAddIn.manifestPath); diff --git a/packages/office-addin-dev-settings/src/dev-settings-windows.ts b/packages/office-addin-dev-settings/src/dev-settings-windows.ts index c8ef8679e..aff98c845 100644 --- a/packages/office-addin-dev-settings/src/dev-settings-windows.ts +++ b/packages/office-addin-dev-settings/src/dev-settings-windows.ts @@ -340,8 +340,9 @@ async function unacquire(key: registry.RegistryKey, id: string) { if (manifest != undefined) { const key = getDeveloperSettingsRegistryKey(OutlookSideloadManifestPath); const registration = await registry.getStringValue(key, TitleId); - const uninstallId = registration != undefined ? registration : id; - if (await uninstallWithTeams(uninstallId)) { + // Try manifest id first, fall back to titleId from registry + const uninstallId = id || registration; + if (uninstallId && await uninstallWithTeams(uninstallId)) { if (registration != undefined) { registry.deleteValue(key, TitleId); } diff --git a/packages/office-addin-dev-settings/src/publish.ts b/packages/office-addin-dev-settings/src/publish.ts index 7ae7b7df9..6f87e1680 100644 --- a/packages/office-addin-dev-settings/src/publish.ts +++ b/packages/office-addin-dev-settings/src/publish.ts @@ -58,16 +58,14 @@ export async function uninstallWithTeams(id: string): Promise { const guidRegex = /[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}/; const manifestIdRegex = new RegExp(`^${guidRegex.source}$`); const titleIdRegex = new RegExp(`^.+_(${guidRegex.source})$`); - let mode: string = ""; let uninstallId: string = id; if (manifestIdRegex.test(id)) { - mode = `--mode manifest-id --manifest-id ${id}`; + uninstallId = id; } else { const match = id.match(titleIdRegex); if (match) { uninstallId = match[1]; - mode = `--mode manifest-id --manifest-id ${uninstallId}`; } else { console.error(`Error: Invalid id "${id}". Add-in is still installed.`); resolve(false); @@ -75,7 +73,7 @@ export async function uninstallWithTeams(id: string): Promise { } } - const uninstallCommand = `npx -p @microsoft/m365agentstoolkit-cli atk uninstall ${mode} --interactive false`; + const uninstallCommand = `npx -p @microsoft/m365agentstoolkit-cli atk uninstall --mode manifest-id --manifest-id ${uninstallId} --interactive false`; console.log(`running: ${uninstallCommand}`); childProcess.exec(uninstallCommand, (error, stdout, stderr) => { if (error || stderr.match('"error"')) { From 74b86d9e6dfe5f8ce7b7163a63af56f747ec176e Mon Sep 17 00:00:00 2001 From: Archie Saxena Date: Fri, 9 Jan 2026 09:57:50 +0530 Subject: [PATCH 4/4] Resolved Comments --- packages/office-addin-dev-settings/src/publish.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/office-addin-dev-settings/src/publish.ts b/packages/office-addin-dev-settings/src/publish.ts index 6f87e1680..5603d3fc9 100644 --- a/packages/office-addin-dev-settings/src/publish.ts +++ b/packages/office-addin-dev-settings/src/publish.ts @@ -60,9 +60,7 @@ export async function uninstallWithTeams(id: string): Promise { const titleIdRegex = new RegExp(`^.+_(${guidRegex.source})$`); let uninstallId: string = id; - if (manifestIdRegex.test(id)) { - uninstallId = id; - } else { + if (!manifestIdRegex.test(id)) { const match = id.match(titleIdRegex); if (match) { uninstallId = match[1];