You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wix Installer卸载后Word插件DLL无效无法注册问题

问题根因

你当前写的组件配置只完成了DLL文件的复制,完全没有处理COM组件的注册和卸载逻辑。MSI卸载时只会删除你配置里明确列出来的文件和注册表项,你没声明的COM注册信息会直接残留在系统注册表中,指向已经被删掉的旧DLL路径,后续不管是重装安装包还是手动用regsvr32注册,系统读到这些无效残留项都会判定DLL无效。

先清理残留,恢复regsvr32注册功能

按顺序操作即可:

  • 先从「添加/删除程序」里确认插件已经完成卸载,手动删掉你之前配置的PluginFolder目录下所有残留文件。
  • 按Win+R输入regedit打开注册表编辑器,先点击左上角「文件-导出」存一份注册表备份,避免误删其他项导致异常。
  • 清理COM类残留:定位到HKEY_CLASSES_ROOT\CLSID路径,按Ctrl+F搜索MyWordPlugin,把搜索到的所有匹配项全部删除,按F3继续搜索下一个结果直到搜完为止。如果是64位系统,还要到HKEY_CLASSES_ROOT\Wow6432Node\CLSID路径下重复一遍搜索删除操作,32位插件的注册信息默认存在这个路径下。
  • 清理Office加载项残留:分别定位到以下几个路径,找到和你的插件相关的项直接删除:
    • HKEY_CURRENT_USER\Software\Microsoft\Office\Word\Addins
    • HKEY_LOCAL_MACHINE\Software\Microsoft\Office\Word\Addins
    • 64位系统额外检查HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Office\Word\Addins
  • 重启电脑之后,再尝试执行regsvr32命令注册DLL,基本就能恢复正常。

注意:如果清理后还是提示DLL无效,先确认regsvr32程序和DLL位数匹配:32位DLL必须用C:\Windows\SysWOW64\regsvr32.exe注册,64位DLL要用C:\Windows\System32\regsvr32.exe注册,位数不匹配会直接报错。另外检查DLL依赖的运行库是否被误删:C开发的插件需要对应版本的VC运行时,.NET开发的插件需要安装对应版本的.NET运行环境。

修正WiX配置,避免后续安装卸载再出问题

不要在WiX里写自定义动作调用regsvr32做注册,这种方式很容易遗留残留项,用WiX自带的heat工具自动提取COM注册信息最稳妥:

  1. 打开WiX工具的命令行环境,执行以下命令自动生成DLL对应的完整注册配置:
    heat.exe file MyWordPlugin.dll -out PluginComConfig.wxs -gg -sfrag -srd -dr PluginFolder
  2. 把生成的PluginComConfig.wxs文件加入你的WiX项目,替换掉你之前自己写的只有File标签的cmpPluginDLL组件即可。

这种方式生成的安装包,安装时会自动写入所有正确的COM、Office加载项注册表配置,卸载时会把所有关联项完整删除,不会残留脏数据。

内容的提问来源于stack exchange,提问作者jbmoon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 05:15:54