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

WiX Toolset配置RemoveFolderEx报ICE03无效标识符错误如何解决

问题原因

util:RemoveFolderEx元素的Property属性仅接受合法的MSI属性标识符(纯属性名),不支持直接写入带格式化拼接的字符串,你写的[APPLICATIONFOLDER]\node_modules包含方括号和路径分隔符,不符合标识符命名规则,直接触发ICE03校验错误。
另外你原有配置还有一个隐藏问题:写入注册表的RegistryValue中Value='INSTALLDIR'是写入固定字面量,不会读取INSTALLDIR属性的实际安装路径,会导致后续读注册表拿安装路径失败。

修正方案

实现仅删除node_modules子文件夹的逻辑分三步:

  • 定义独立的公共属性存储node_modules的完整路径,不要直接在RemoveFolderEx上拼路径
  • 通过SetProperty自定义动作,在MSI执行到CostFinalize阶段后,将安装路径拼接\node_modules的结果赋值给上述属性
  • 修正注册表写入逻辑,确保实际安装路径被正确存入注册表,同时将RemoveFolderEx的Property属性绑定到新定义的独立属性上
修正后的配置代码
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
  <!-- 原有读取安装路径的配置 -->
  <Property Id='APPLICATIONFOLDER'>
      <RegistrySearch Id='ApplicationFolder' Root='HKLM' Key='Software\[ProductName]' Name='InstallDir' Type='raw'/>
  </Property>

  <!-- 专门存储node_modules完整路径的公共属性 -->
  <Property Id="NODEMODULES_FOLDER" Secure="yes"/>

  <!-- 自定义动作拼接node_modules路径,在CostFinalize阶段执行 -->
  <SetProperty Id="NODEMODULES_FOLDER"
               Value="[APPLICATIONFOLDER]node_modules"
               After="CostFinalize"
               Sequence="execute"/>

  <DirectoryRef Id='TARGETDIR'>
      <Component Id='RemoveFolder' Guid='3e2231d9-61b3-41a2-b407-8df015be537e'>
          <!-- 注意:Property属性只写纯属性名,不要加方括号、不要拼路径 -->
          <util:RemoveFolderEx Property='NODEMODULES_FOLDER' On='uninstall'/>
          <!-- 修正:Value加方括号,写入INSTALLDIR属性的实际值,而非字面量 -->
          <RegistryValue Root='HKLM' Key='Software\[ProductName]' Name='InstallDir' Type='string' Value='[INSTALLDIR]' KeyPath='yes'/>
      </Component>
  </DirectoryRef>
</Wix>
注意事项
  • 公共属性必须全大写命名(比如示例里的NODEMODULES_FOLDER),同时加Secure="yes"确保在执行序列的提权阶段能正常读取到值
  • 如果安装路径末尾自带反斜杠,拼接node_modules时不需要额外加反斜杠;如果要兼容路径末尾无反斜杠的场景,可以把Value改成[APPLICATIONFOLDER]\node_modules,MSI会自动处理多余的路径分隔符
  • 该逻辑只会删除node_modules文件夹及其所有子内容,不会触碰安装目录下用户自行存放的其他文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 17:01:04