VSTO Word插件MSI安装后控制面板残留条目问题咨询
解决VSTO插件MSI安装后残留控制面板条目问题
一、绕过Word触发的额外安装条目
那个控制面板条目是Word首次启动时,触发VSTO的ClickOnce式注册生成的。要彻底避免这个问题,直接通过MSI完成插件的注册,不让Word弹出安装对话框:
- 在你的Setup Project里,手动添加Office插件的注册表项:
- 针对Word 2016及以上版本,注册表路径选
HKEY_CURRENT_USER\Software\Microsoft\Office\Word\AddIns\[你的插件唯一ID](要全局部署就用HKEY_LOCAL_MACHINE下的对应路径) - 必须添加的键值:
LoadBehavior:设为DWORD类型的3(表示Word启动时自动加载插件)Manifest:字符串类型,填插件.vsto清单文件的本地绝对路径,格式比如file:///C:\Program Files\你的插件目录\YourAddIn.vstoFriendlyName:插件的显示名称Description:插件的简要描述
- 针对Word 2016及以上版本,注册表路径选
- 完成注册表配置后,Word启动时会直接识别并加载插件,不会再弹出安装提示,自然不会生成额外的控制面板条目。
二、通过MSI卸载时清理残留条目
如果已经有残留的控制面板条目,给Setup Project加个自定义卸载动作,自动清理:
- 残留条目对应的注册表项一般在
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall或HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall下,找和插件名称/GUID匹配的子项 - 写个简单的VBScript脚本,用来删除这个注册表子项:
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") ' 替换成你找到的残留条目注册表路径 strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Uninstall\{残留条目的GUID或名称}" ' &H80000001对应HKCU,&H80000002对应HKLM,按需修改 objReg.DeleteKey &H80000001, strKeyPath - 把这个脚本添加到Setup Project的「自定义操作」→「卸载」节点里,这样卸载MSI时会自动执行脚本,清理残留的卸载条目。
三、修改VSTO清单阻断ClickOnce注册
编辑插件的.vsto清单文件,禁用自动安装行为:
- 打开.vsto文件,找到
<deployment>节点,加上install="false"属性,改成<deployment install="false" ...> - 这样就算Word读取到清单,也不会触发ClickOnce安装流程,只会使用MSI部署好的本地文件。
内容的提问来源于stack exchange,提问作者Oliver Karger
相关产品推荐
相关产品推荐

