卸载MS Office应用程序级VSTO加载项

时间:2011-05-04 22:45:22

标签: vsto ms-office uninstall

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

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

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

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

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

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

  

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

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

如果该文件不存在,是否仍然阻止Word尝试加载加载项?

卸载程序是否有办法在卸载时为运行卸载的用户清除每用户注册表项?

我正在使用Office 2007在Windows 7计算机上进行测试。我正在使用针对.Net 4 Framework的VSTO 4。

2 个答案:

答案 0 :(得分:1)

关于你的两个问题

  

无论如何都要阻止Word   尝试加载文件加载项   不存在?

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

  

卸载程序有没有办法   清理每个用户注册表项   卸载除以外的用户   一个运行卸载?

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

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

因此,在卸载时,您需要将额外的密钥写入Office reg密钥,该密钥基本上是“当办公室应用程序加载时从当前的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 \”键,然后其余的密钥路径会复制来自Software \ on on HKCU下的路径。

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

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

但是,再一次,我找不到手头的链接记录这个。

答案 1 :(得分:0)

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

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

免责声明: Active Setup是一种未经证实但经常使用的Windows功能。使用风险由您自己承担。不要嘲笑Active Setup。