我有一个构建NSIS安装程序的PowerShell脚本。如果我直接在系统上运行它,它的效果很好。当我将它添加到我的Jenkins管道时,我收到以下错误:
Internal compiler error #12345
我知道2GB的大小限制;它窒息的文件只有52MB ......除了詹金斯以外的剧本运行良好。
我尝试添加一些睡眠,删除全部或部分Jenkins工作区(如果没有工作区,有时安装程序会编译)。
有人有什么想法吗?我有点难过。
编辑:这是PowerShell调用以及爆炸源代码:
Write-Output "Compiling installer"
$relmod = $deployXML.'deploy-bundler'.relmod
$cmd = '& ${env:ProgramFiles(x86)}\NSIS\makensis .\deploy-bundler\install\win32\installer-pieces\bundle.nsi -DRELMOD=$relmod'
invoke-expression $cmd
这是NSIS:
Section /o "${PRODUCT_IBMI}" SECSoftware
SectionIn 1
SetOutPath "$TEMP\${PRODUCT_BUNDLE_PATH}$uniquePath"
SetDetailsView hide
; The following lines modify the text display in the progress banner
GetDlgItem $R0 $HWNDPARENT 1037
SendMessage $R0 ${WM_SETTEXT} 0 "${PROGRESS_BANNER_BOLD_TEXT}"
GetDlgItem $R0 $HWNDPARENT 1038
SendMessage $R0 ${WM_SETTEXT} 0 "${PROGRESS_BANNER_TEXT}"
File "deliverables\${PRODUCT_FILE}"
答案 0 :(得分:0)
问题是,原来是复制粘贴错误。在Jenkins配置中,我有一个withEnv闭包。在那个闭包中,它将TMP指向D:驱动器。 D:驱动器在系统上不存在,当NSIS必须转到文件系统创建临时文件时,没有空间,因此出错。
对于搜索NSIS内部编译器错误#12345的任何人,其中一个原因可能是缺少磁盘空间,这就是这种情况。