卸载正在开发的加载项
未完全删除的加载项在开发过程中可能会在计算机上留下项目,例如自定义功能区按钮或注册表项。 在本文中,我们将这些称为“虚影加载项”。
当你使用与用于开发加载项的相同 ID 登录 Outlook 时,Outlook 加载项也可能将这些项目添加到其他计算机。
重要
当你登录到 Outlook 时,它会从 Exchange 下载并旁加载与你的 ID 关联的所有 Outlook 外接程序清单, 包括你正在使用同一 ID 在不同计算机上开发的加载项。 例如,清单中定义的任何自定义功能区按钮都将针对加载项显示。
如果清单中的 URL 指向非 localhost 服务器,并且该服务器正在运行并且可供非开发计算机访问,则 Outlook 会将外接程序的文件缓存在本地文件系统中,并且加载项通常在计算机上正常运行。 否则,加载项不起作用,但将显示其可见部分,例如自定义功能区按钮。 它们具有清单中定义的标签。 如果加载项的按钮图标曾经缓存在非开发计算机上本地,并且从未清除缓存,也会显示。 图标文件不随 Exchange 一起存储,因此,如果它们从未在非开发计算机上缓存 (或缓存已被) 清除,则按钮具有默认图标。
在从 Exchange 中删除加载项注册之前,加载项将继续显示。 有关在 Exchange 中删除注册的信息,请参阅删除 虚影加载项 。
本文提供了一些指导,可最大程度地减少出现这些问题的可能性,并在这些问题发生时予以解决。
防止问题
旁加载加载项时,会发生以下几种情况:
- Web 服务器(通常在 localhost 上)开始为加载项的文件提供服务, (如 HTML、CSS 和 JavaScript 文件) 。
- 这些相同的文件缓存在开发计算机上。
- 加载项注册到开发计算机。 使用 Windows 计算机上的注册表项或保存到 Mac 上的文件系统的某些文件完成注册。
- 旁加载加载项的大多数工具都会自动打开加载项面向的 Office 应用程序。 这些工具还会使用外接程序清单中定义的任何自定义功能区按钮或上下文菜单项填充应用程序。
- 对于 Outlook 外接程序,外接程序的清单注册到 Exchange 服务。
使用工具的卸载工具
若要防止虚影加载项,请使用用于启动会话的工具提供的卸载 (也称为 unacre) 选项结束每个测试、调试和旁加载会话。 这样做会逆转旁加载的影响,如本文前面所述。
以下列表标识了每个工具的卸载方式,但未详细描述过程或语法。 请务必使用这些链接获取完整的说明。
注意
其中某些工具不会关闭自动打开的 Office 应用程序。 在这种情况下,请在结束会话后立即手动关闭应用程序。
-
Office 加载项的 Yeoman 生成器 (Yo Office) :在
npm stop
启动会话npm start
的同一命令行中使用脚本。 有关详细信息,请参阅 入门 和 快速入门 部分和 删除旁加载加载项中的各种文章。 - 适用于Visual Studio Code的 Teams 工具包:在Visual Studio Code中选择“运行 | 停止调试”。 有关详细信息,请参阅 创建 Outlook 外接程序项目的最后一 步,该项目也适用于非 Outlook 加载项。
- Visual Studio Code Office 加载项开发工具包:打开Office 加载项开发工具包扩展后,选择“停止预览 Office 加载项”。 有关详细信息,请参阅 停止测试加载项。
-
office-addin-debugging 工具:在
office-addin-debugging stop
启动会话的同一命令行中使用office-addin-debugging start
命令。 有关详细信息,请参阅 使用 Office-Addin-Debugging 工具旁加载。 -
Teams 工具包 CLI:在
teamsapp uninstall
启动会话的同一命令行中使用teamsapp install
命令。 有关详细信息,请参阅 使用 Teams 工具包 CLI 旁加载。 - Visual Studio:在菜单中选择“ 调试 | 停止调试 ”,或按 Shift+F5,或单击调试栏上的红色“停止”按钮。 或者,关闭 Office 应用程序也会停止会话并卸载加载项。 有关详细信息,请参阅 首先查看 Visual Studio 调试器。
删除虚影加载项
若要删除虚影加载项,需要删除上次旁加载时创建的项目,删除其本地注册,对于 Outlook 外接程序,请删除它在 Exchange 中的注册。
删除加载项的过程因加载项是用于 Outlook 还是某些其他 Office 应用程序而异。
注意
在 Microsoft 365 的统一清单中,可以将加载项配置为支持 Outlook 和一个或多个其他 Office 应用程序;也就是说,清单中有多个“extensions.requirements.scopes”数组的成员,其中一个成员是“mail” (或“extensions.requirements.scopes”属性不存在) 。 将按这种方式配置的外接程序视为 Outlook 外接程序。
如果虚影加载项不是 Outlook 加载项,请跳到 删除加载项项目部分。
删除虚影 Outlook 加载项的 Exchange 注册
使用旁加载加载项时使用的相同 ID 登录到 Outlook。
以管理员身份打开 PowerShell。
运行以下命令。 对所有确认提示回答“是”。
Install-Module -Name ExchangeOnlineManagement -RequiredVersion 3.4.0 Set-ExecutionPolicy RemoteSigned Connect-ExchangeOnline
注意
Connect-ExchangeOnline
如果命令返回错误“ActiveX 控件 '8856f961-340a-11d0-a96b-00c04fd705a2',因为当前线程不在单线程单元中”,只需再次运行命令。 这是一个众所周知的 bug。运行以下命令: 对所有确认提示回答“是”。
Get-App | Format-Table -Auto DisplayName,AppId
将显示 Outlook 上安装的加载项列表。 其中包括已安装的内置Microsoft加载项和加载项。 还将列出任何虚影 Outlook 加载项。
在列表中查找虚影加载项。 如果它是使用 Yo Office 或其他Microsoft工具创建的,则其名称可能是“Contoso 任务窗格加载项”。
复制加载项的 GUID) (应用 ID。 稍后的步骤需要用到它。
(运行 命令
Remove-App -Identity {{The GUID OF YOUR ADD-IN HERE}}
,Remove-App -Identity 26ead0cb-10dd-4ba2-86c6-4db111876652
例如,) 。 此命令从 Exchange 中删除加载项。警告
删除注册需要传播到所有 Exchange 服务器。 请至少等待三个小时,然后继续下一步。
继续执行 删除加载项项目部分。
删除加载项项目
重要
在已旁加载加载项的所有设备上执行此过程。
- 从所有 Office 应用程序注销,然后关闭所有应用程序,包括 Outlook。
- 清除 Office 缓存。 如果虚影加载项支持 Outlook,请使用 手动清除 Outlook 中的缓存。
- 继续执行 删除本地注册部分。
删除本地注册
重要
在已旁加载加载项的所有计算机上执行此过程。
删除虚影加载项的本地注册。 该过程因作系统而异。
打开注册表编辑器。
导航到 Computer\HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\WEF\Developer。 此项列出了当前旁加载或过去旁加载但未完全卸载的加载项。 每个条目 的数据 值是加载项清单的路径。 Name 值因用于创建和旁加载加载项的工具版本而异。 如果使用 Visual Studio,则名称通常也是清单的路径。 对于其他工具,名称通常是加载项的 ID。 当 Office 应用程序启动时,它会重新加载此密钥 (中列出的支持 Office 应用程序) 的所有加载项。 如果加载项的项目已从缓存中删除,或者路径中不再存在清单,或者服务器未为加载项的文件提供服务,则重载可能没有实际或可识别的效果。
找到虚影加载项的条目并将其删除。 如果它是 Outlook 加载项,则你具有 删除 Exchange 注册的 ID。 还可以使用 “数据 ”列中的路径查找清单,以帮助标识条目引用的加载项,并从清单中读取 ID。 如果指定路径中不再存在 “数据 ”列中列出的任何清单,请删除这些清单的条目。
展开 ... 注册表树中的开发人员节点。 查找其名称与虚影加载项 ID 相同的子项。 如果存在,请将其删除。
导航到 Computer\HKEY_USERS\{SID}\Software\Microsoft\Office\16.0\WEF\Developer,其中 {SID} 是旁加载加载项时使用登录的用户的 SID ,并重复上述两个步骤。
导航到 Computer\HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Common\CustomUIValidationCache。 在 “名称” 列中,找到以加载项 ID (GUID) 开头的所有条目并将其删除。 然后导航到 Computer\HKEY_USERS\{SID}\Software\Microsoft\Office\16.0\Common\CustomUIValidationCache,其中 {SID} 是旁加载加载项时使用登录的用户的 SID,并重复此过程。
- 如果要删除 Outlook 加载项,请继续执行 Outlook 加载项删除测试部分。
测试是否删除 Outlook 加载项
使用创建外接程序时使用的相同标识打开 Outlook。 如果加载项 (项目(如自定义功能区按钮)在几分钟后) 重新出现,或者外接程序中的事件处理程序似乎处于活动状态,则从 Exchange 中删除加载项注册尚未传播到所有 Exchange 服务器。 至少等待三个小时,然后重复 删除加载项项目 和删除观察到项目的计算机上的 本地注册 部分中的过程。