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

WiX制作的MSI安装VSTO插件遇文件独占锁问题求助

VSTO插件MSI安装问题分析与解决方案

核心问题梳理

  • Office运行时安装插件,仅弹出重试/取消对话框,无忽略选项,日志报1306→1603错误,原因是文件被Office进程独占锁定,Restart Manager未正确触发标准FilesInUse流程
  • 静默安装失败,未执行强制重启/进程关闭操作
  • 单独MSI静默安装修复后,Burn调用仍失败,推测与MSIFASTINSTALL=7跳过成本计算有关

关键修复步骤

1. 修复MSI单独运行的交互/静默问题

恢复MSIRESTARTMANAGERCONTROL默认值,同时设置MSIRMSHUTDOWN=1,让Restart Manager在静默模式下自动关闭锁定的Office进程,安装完成后重启进程。在WiX中添加:

<Property Id="MSIRMSHUTDOWN" Value="1" />
  • MSIRMSHUTDOWN=1:强制Restart Manager自动处理进程关闭,避免静默模式下直接报错
  • 保留默认MSIRESTARTMANAGERCONTROL,确保交互模式下能正常触发进程关闭提示

2. 修复Burn调用MSI的异常

Burn默认会给嵌套MSI传递MSIFASTINSTALL=7,跳过文件锁定检测等成本计算步骤,需显式覆盖该参数:

<MsiPackage SourceFile="YourAddin.msi" SuppressMSI="no">
  <MsiProperty Name="MSIFASTINSTALL" Value="0" />
</MsiPackage>
  • 必须设置SuppressMSI="no",否则Burn会忽略自定义MSI属性,继续使用默认的MSIFASTINSTALL=7
  • 可额外添加Burn重启配置,确保安装后重启逻辑协同:
    <Restart PromptRestart="yes" SuppressRestart="no" />
    

3. VSTO插件文件锁定优化

  • 确保插件安装路径符合Office规范,避免因权限问题导致文件长期锁定
  • 为插件文件添加Shared="yes"和KeyPath="yes",帮助MSI识别共享文件锁定状态:
    <File Id="AddinDll" Source="YourAddin.dll" Shared="yes" KeyPath="yes" />
    

关键知识点补全

  • MSIRMSHUTDOWN取值说明:
    • 0:默认值,仅交互模式提示用户关闭进程,静默模式直接报错
    • 1:自动关闭锁定进程并在安装后重启,适配静默/被动安装
    • 2:自动关闭进程但不重启,可能导致Office无法加载新插件
  • MSIFASTINSTALL参数影响:
    • 7 = 跳过系统检查+文件成本计算+注册表成本计算,直接导致MSI无法检测文件锁定
    • 0:执行完整成本计算与系统检查,必须显式覆盖Burn默认值
  • Burn与Restart Manager协同:Burn自带重启管理逻辑,需确保嵌套MSI的Restart配置与Burn设置一致,避免冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 02:06:35