NSIS从Jenkins运行时出错

时间:2017-03-13 21:32:12

标签: powershell jenkins nsis

我有一个构建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}"

1 个答案:

答案 0 :(得分:0)

问题是,原来是复制粘贴错误。在Jenkins配置中,我有一个withEnv闭包。在那个闭包中,它将TMP指向D:驱动器。 D:驱动器在系统上不存在,当NSIS必须转到文件系统创建临时文件时,没有空间,因此出错。

对于搜索NSIS内部编译器错误#12345的任何人,其中一个原因可能是缺少磁盘空间,这就是这种情况。