Jenkins构建WiX项目时报candle.exe CNDL0103找不到Source类型文件问题
报错原因定位
你遇到的CNDL0103报错是WiX编译器candle.exe找不到指定的源文件导致的,最核心的诱因是Windows系统的32/64位路径重定向机制,结合你当前的Jenkins工作空间路径,可以确定问题根源如下:
- 你当前Jenkins的工作空间放在了
C:\windows\system32\路径下,而WiX Toolset v3.11的candle.exe是32位程序(安装在C:\Program Files (x86)目录下) - 64位Windows系统中,32位程序访问
C:\Windows\System32路径时,会被系统自动重定向到C:\Windows\SysWOW64目录,你实际放在64位System32路径下的.wxs源文件,32位的candle.exe完全访问不到,自然会报找不到文件的错误。 - 次要可能的诱因:Jenkins任务未正确拉取源码到工作空间、本地开启了「隐藏已知文件类型的扩展名」导致文件名实际是
Product_PHP.wxs.txt而非你看到的.wxs后缀。
解决方案
最优方案(彻底避免路径坑)
修改Jenkins全局工作空间根目录,远离系统级路径:
- 打开Jenkins控制台,进入「Manage Jenkins → Configure System」
- 找到「Workspace Root Directory」配置项,修改为和系统目录无关的路径,例如
C:\Jenkins\Workspace\${JOB_NAME} - 重启Jenkins服务后重新执行构建即可。
临时验证方案
你可以在当前Jenkins任务的WiX构建步骤之前,新增一个「Execute Windows batch command」步骤,输入以下命令:
dir "C:\windows\system32\config\systemprofile\AppData\Local\Jenkins\.jenkins\workspace\Installer\WiXInstaller"
执行构建后查看日志输出的文件列表,就能确认candle.exe运行环境下该路径到底有没有对应的源文件。
备选方案
如果你不想修改全局Jenkins配置,可以直接将WiX源码存放在C盘根目录的独立文件夹(例如C:\InstallerSource),在Jenkins WiX插件中直接填写源文件的绝对路径即可。
内容的提问来源于stack exchange,提问作者Konstantin
相关产品推荐
相关产品推荐

