【问题标题】:How to re-add a deleted VSTO Add-In如何重新添加已删除的 VSTO 加载项
【发布时间】:2019-10-07 00:18:57
【问题描述】:

我在一台机器上的 Word VSTO 插件有一个奇怪的问题,在该机器上运行 Visual Studio 项目会打开 Word,但据我所知并未尝试启动插件。

我到这一步是因为我不小心在管理 COM 加载项页面上为加载项单击了删除,而不是在失败后重新启用它。

我想知道如何重新启用已删除的加载项 - 我在想也许我需要删除某个注册表项。

  • 当我从 Visual Studio 运行项目时,它不会尝试 完全启动,Word 立即启动,没有“失败” 输入暂停。
  • ThisAddIn_Startup 中没有遇到断点。
  • 在 Word 中:文件/选项/加载项 - 加载项不会出现在非活动或禁用的加载项下
  • Word : Manage COM Add-ins Go... 没有出现。
  • Word : Manage Disabled Items Go... 为空。

我尝试安装和卸载已发布的版本,看看是否会唤醒任何东西,并且我尝试更改 VS 项目的路径,以防万一(以及各种重新启动、清理、重建) ,从 git 等本地删除和重新克隆),但我找不到让它再次工作的方法。在另一台机器上,从 Git 克隆加载项并在 Visual Studio 中打开它,一切正常。

我尝试通过 COM 加载项上的选择 DLL(或选择 .)对话框重新添加,但我选择的所有加载项似乎都不是有效的加载项。

任何帮助弄清楚如何回到工作开发环境的帮助将不胜感激。

编辑 下面发生了很多事情 - 所以我想我会澄清一下,成功的解决方案是 Office 的在线修复

【问题讨论】:

  • 您是否尝试增加发布版本(在 Visual Studio 中,项目属性页,选项卡发布)?
  • 如果你运行Build/Clean Solution 然后Build/Rebuild solution 会发生什么?这通常有助于“为我解决问题*...
  • 我已经尝试过清理和重建(连同删除所有并重新克隆)。发布版本更改也没有帮助。我还尝试更改 csproj 文件中的 projectguid,但同样没有帮助...奇怪)
  • 在线维修对我不起作用。到目前为止,对我有用的唯一解决方法是更改​​大会名称。显然,这在生产中是不可行的......这个按钮不应该存在(事实:它不适用于 Excel COM 加载项!)。对于任何有同样问题的人,我在这里提供进一步的尝试:stackoverflow.com/questions/57098810/…

标签: ms-word visual-studio-2017 vsto word-addins


【解决方案1】:

我认为您需要更改 VSTO 加载项的版本才能对其进行更新或重新安装。一旦加载项版本被禁用,这是永久性的。

详情请参阅Uninstall MS Word Add-in。让我知道这是否有效。

【讨论】:

  • 按照链接文章中的步骤,它成功安装了插件,并在从桌面执行时在 Word 中运行。但是,从 VS(2017 或 2019)运行时,它不显示加载项,或遇到任何启动断点
  • 您在 Visual Studio 中看到类似禁用的断点吗?在调试中运行时,Visual Studio 可能没有看到正确的代码。尝试手动删除 bin 和 obj 文件夹,然后重建。这有时可以解决这类问题。
  • 它们没有被禁用。即使在运行时,它们也是纯红色断点。删除 bin 和 obj 无济于事:我刚刚重新测试过,但我之前删除了项目并从 git 重新克隆,这会做同样的事情
【解决方案2】:

注册表中的LoadBehaviour 是什么?应该是3...

要找出答案,请查看

  • 32 位 Word => Root\Software\Microsoft\Office\Word\Addins\插件 ID
  • 64 位 Word => Root\Software\Wow6432Node\Microsoft\Office\Word\Addins\加载项 ID

其中 Root 是 HKEY_CURRENT_USERHKEY_LOCAL_MACHINE,具体取决于插件是为当前用户还是所有人安装。

如果LoadBehaviour 的值不是3,则将其更改为3 并重新启动Word。

这是有关它的 Microsoft 文档:Registry entries for VSTO Add-ins

如果仍然无法正常工作,请尝试重新启用,因为它可能被硬禁用

  • 管理框中,将COM Add-ins更改为Disabled Add-ins,然后点击Go .
  • 选择加载项并单击启用。点击关闭。现在可以再次加载加载项...
  • 回到管理框,将Disabled Add-ins更改为COM Add-ins,然后点击Go em>。
  • 选中已禁用加载项旁边的复选框。点击确定

这是有关它的 Microsoft 文档:How to: Re-enable a VSTO Add-in that has been disabled

另外,如果您还没有这样做,则值得将 VSTO_SUPPRESSDISPLAYALERTS 设置为 0,如本页所述:How do I enable VSTO error / display alerts?

如果以上都没有帮助,那么值得从添加或删除程序中对Office进行在线修复

【讨论】:

  • Loadbehaviour 是 3。一直都是。这是其中最奇怪的部分!
  • 它不会出现在禁用加载项或管理 Com 加载项屏幕中(根据问题描述),因此无法应用这些步骤。我现在试试显示警报。
  • Computer\HKEY_CURRENT_USER\Software\Microsoft\Office\Word\Addins\HB_Toolbar 在其他 3 个潜在位置不存在
  • @Andiih - 如果没有其他帮助 - 从添加/删除程序中进行 Office 修复...选择完整/在线的。
  • VSTO_SUPPRESSDISPLAYALERTS 设置为 0 时不显示任何警报。这是有道理的,因为我认为实际上没有任何东西在尝试启动/安装它。
【解决方案3】:

当事情没有按预期工作时,我不得不采取的最极端的步骤是清除注册表或文件系统中的 VSTA 缓存。请注意,我使用附加到文档的基于模板的customizations,而不是始终存在的加载项,因此这可能不适用于您。或者可能确实如此,我不知道。

注册表

在 HKCU:\Software\Microsoft\VSTA\Solutions 下为您的加载项查找条目。我为此使用 PowerShell,示例命令链如下所示:

gci "HKCU:\Software\Microsoft\VSTA\Solutions"


    Hive: HKEY_CURRENT_USER\Software\Microsoft\VSTA\Solutions


Name                           Property                                                                                                                                                                                     
----                           --------                                                                                                                                                                                     
1234abcd-1234-abcd-1234-abcd12 Url                 : file:///Z:/path/to/your/addin.vsto                                                              
34abcd                         SubscriptionID      : addin.vsto, Culture=neutral, PublicKeyToken=<removed>, processorArchitecture=msil                                                                        
                               ApplicationID       : file:///Z:/path/to/your/addin.vsto#addin.vsto, Version=<removed>, Culture=neutral, 
                                                     PublicKeyToken=<removed>, processorArchitecture=msil/addin.dll, Version=<removed>, Culture=neutral, PublicKeyToken=<removed>,                     
                               processorArchitecture=msil, type=win32                                                                                                                                                       
                               ProductName         : addin                                                                                                                                                           
                               LastCheckedTime     : {4, 201, 185, 1...}                                                                                                                                                    
                               UpdateEnabled       : 1                                                                                                                                                                      
                               UpdateInterval      : 1                                                                                                                                                                      
                               UpdateIntervalUnits : days            

remove-item "HKCU:\Software\Microsoft\VSTA\Solutions\1234abcd-1234-abcd-1234-abcd1234abcd"

文件系统

我的自定义设置(请参阅开头的注释)安装在%localappdata%\Apps\2.0,在极少数情况下我需要手动删除它们。清除这个不那么简单,但通常有一个匿名文件夹,如ABCDEFG0.QWE。我只是删除了它,连同它的另一半,我从来没有遇到过我无法解决的问题。仅供参考,如果您有多个部署,这可能会卸载所有部署。我不经常这样做,所以我不是 100% 熟悉这个领域的工作原理,但我从来没有因为这样做而变得更糟。

我不知道这对于可以安装到 Program Files 的应用程序级插件有什么不同(如果有的话)。

编辑:添加一些相关链接。

How do I completely uninstall a ClickOnce application from my computer?

Clear the .NET-downloaded application cache without Mage?

【讨论】:

  • HKCU:\Software\Microsoft\VSTA\ 下没有任何内容 - 我猜 COM 插件并不存在于那里。我尝试清除注册表中其他地方可以找到的所有内容,但没有成功让它从 VS 运行
  • @Andiih 您的加载项是否为所有用户安装,和/或从 Program Files 文件夹安装?如果是这样,请尝试使用 HKLM。您可能需要进行一些注册表搜索,该文件夹可能不完全相同。 IE。 WOW6432Node 可能会把事情搞砸。
  • 通过添加名称、路径等,完成了很多注册表搜索。请注意上面缺乏进展。
猜你喜欢
  • 2017-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多