【问题标题】:Uninstalling an MS Office Application-Level VSTO Add-In卸载 MS Office 应用程序级 VSTO 加载项
【发布时间】:2011-05-04 22:45:22
【问题描述】:

我正在使用 VSTO 4 部署我的第一个 Visual Studio Tools for Office (VSTO) 插件。

有一些不同的选项可用于安装加载项注册表项。它可以是 HKEY_CURRENT_USER 下的每个用户或每个机器 HKEY_LOCAL_MACHINE。我的一些用户在 Citrix 或终端服务下运行。我的情况是管理员将在服务器上运行我的安装,因为用户没有正确的权限。另外,我的用户只是这些服务器上的一小部分用户。

出于这些原因,我计划构建一个随插件一起提供的小型实用程序。该实用程序将创建正确的每用户注册表项以启用加载项。管理员会将加载项 dll 和我的实用程序安装到 c:\program files*。然后将指示实际需要该插件的用户运行该实用程序一次并单击“启用”按钮。

我现在遇到的问题是如何卸载加载项。我的卸载程序(由管理员再次运行)可以处理它创建的所有内容,但无法删除 Per User 注册表项。

我希望这会是一个问题,并且 Word 会在下次启动时忽略丢失的加载项。

这不起作用 - Word 在下次运行时尝试“安装”自定义项时报告错误。

“安装 Office 自定义” 期间出现错误 安装。下载文件 file://xxx/xxx.vsto 没有成功。

我在每个 Registry Entries for Application-Level Add-Ins msdn article 的注册表项末尾包含“|vstolocal”。

如果文件不存在,是否可以阻止 Word 尝试加载加载项?

卸载程序是否有办法在卸载时为运行卸载的用户以外的用户清理 Per User 注册表项?

我正在使用 Office 2007 的 Windows 7 机器上进行测试。我正在使用面向 .Net 4 框架的 VSTO 4。

【问题讨论】:

    标签: vsto ms-office uninstallation


    【解决方案1】:

    关于你的两个问题

    有没有办法阻止 Word 如果文件尝试加载加载项 不存在?

    我不知道,但是,我只是尝试将我的 reg 条目指向我的一个插件的 DLL 移开,但我没有收到任何消息(如果我进入 Word 的选项 COM ADDins 区域,我可以看到插件未加载,这是正确的)。

    有没有办法让卸载程序 清理每个用户的注册表项 为其他用户卸载 一个正在运行卸载?

    不,我几乎肯定没有办法做到这一点。它需要每个用户的个人资料文件夹的权限。

    但是,您可以在 Office reg 树下创建这些奇怪的键,这些键本质上用作 Office 应用程序在加载时执行的“命令”。

    因此,在卸载时,您需要将额外的密钥写入 Office reg 密钥,其实质上是“在加载 Office 应用程序时从当前 HKCU 配置单元中删除这些密钥”。

    这是我发现的一个示例 Reg 脚本,它显示了奇怪的键,但我无法立即找到任何可以准确记录它们的链接:

    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\AllUsersTemplates]
    "Count"=dword:00000001
    "Order"=dword:00000008
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\AllUsersTemplates\Create\Software\Microsoft\Office\12.0\Common\General]
    "SharedTemplates"=hex(2):-fill in your own Binary Value-
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\RemoveInstantSearchBar]
    "Count"=dword:00000001
    "Order"=dword:00000001
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\RemoveInstantSearchBar\Create\Software\Microsoft\Office\12.0\Outlook\Search]
    "DisableDownloadSearchPrompt"=dword:00000001
    
    <<<<< CreateFile >>>>>>>
    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\FileCopy1]
    "Count"=dword:00000001
    "Order"=dword:00000008
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\FileCopy1\CreateFile\FileCopy1.potx]
    "TargetFile"="[AppDataFolder]\\Microsoft\\Templates\\FileCopy1.potx"
    "SourceFile"="C:\\Documents and Settings\\All Users\\Templates\\FileCopy1.potx"
    

    如果您仔细观察,您会在 \Office\ 键下看到一个“用户设置{name}\Create\”键,然后该键路径的其余部分复制了 HKCU 下从 Software\ 开始的路径。

    您可以使用关键字 CREATE 或 DELETE(删除键)。

    请注意 COUNT 和 ORDER 值。这些很重要,需要正确设置。

    但同样,我无法找到记录此内容的链接。

    【讨论】:

    • 您提到您没有收到来自 word 的消息。您是添加 VSTO 插件还是直接添加 COM?我看到的错误消息似乎确实来自 VSTO 运行时。
    【解决方案2】:

    您可以使用 Active Setup 卸载您的每用户 VSTO 加载项。

    如果您不熟悉 Active Setup,此功能会将 HKLM Installed Components 子项与 HKCU Installed Components 子项进行比较,如果缺少子项(或者如果找到并且子项版本值更大),则会执行 StubPath 值并 HKLM Installed Components 子项被复制到 HKCU Installed Components。

    免责声明: Active Setup 是一种未记录但经常使用的 Windows 功能。使用风险自负。不要嘲讽 Active Setup。

    【讨论】:

      猜你喜欢
      • 2015-12-14
      • 1970-01-01
      • 1970-01-01
      • 2011-06-17
      • 2017-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多