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

Wix Installer自定义MsiRMFilesInUse对话框重复报错及不显示问题求解

问题原因

你遇到的两个问题根源都是对Wix内置属性的依赖逻辑不熟悉:

  1. Duplicate symbol 'Property:WixUIRMOption'报错是因为你复制默认对话框代码到自定义文件时,重复声明了WixUIExtension已经内置定义的WixUIRMOption属性
  2. 修改属性ID后对话框不弹出,是因为WixUIRMOption是Wix重启管理器逻辑的固定依赖属性,修改ID后内置逻辑找不到对应配置,自然不会触发对话框显示

正确配置步骤

1. 解决属性重复报错

直接删除你自定义对话框wxs文件中<Property Id="WixUIRMOption" ... />这行声明,直接复用WixUIExtension内置的该属性即可,不需要做任何修改,也不用改属性ID。

2. 正确覆盖默认对话框

自定义的对话框ID保持和默认IDMsiRMFilesInUse完全一致,Wix链接时会优先使用你项目中定义的同ID对话框,自动覆盖内置的默认对话框,不需要修改对话框ID或者关联逻辑。

你只需要修改对话框内控件的文本属性为你需要的本地化内容即可,如果是做多语言适配,用Wix原生的本地化变量即可,示例代码如下:

<UI>
  <!-- 对话框ID和默认完全一致,实现覆盖 -->
  <Dialog Id="MsiRMFilesInUse" Width="370" Height="270" Title="!(loc.InstallerTitle)">
    <!-- 仅修改Text属性为你自定义的本地化内容,其余控件属性、事件绑定完全沿用默认代码 -->
    <Control Id="MessageText" Type="Text" X="135" Y="70" Width="220" Height="60" Text="!(loc.CustomRMInUseMessage)" />
    <Control Id="OkButton" Type="PushButton" X="220" Y="243" Width="56" Height="17" Default="yes" Cancel="yes" Text="!(loc.Ok)">
      <Publish Event="EndDialog" Value="Return">1</Publish>
    </Control>
    <!-- 其余控件逻辑完全和默认MsiRMFilesInUse.wxs保持一致即可 -->
  </Dialog>
</UI>

3. 配置本地化字符串

在对应语言的.wxl本地化文件中添加你自定义的字符串即可,示例:

<!-- 中文简体.wxl文件 -->
<WixLocalization Culture="zh-CN" xmlns="http://schemas.microsoft.com/wix/2006/localization">
  <String Id="CustomRMInUseMessage">以下应用程序正在使用需要更新的文件,请关闭程序后继续安装。</String>
  <String Id="InstallerTitle">安装程序</String>
  <String Id="Ok">确定</String>
</WixLocalization>

按照以上步骤配置,既不会出现属性重复报错,也不会出现对话框不弹出的问题,同时可以实现完全自定义的本地化内容。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:24:04