【问题标题】:NSIS Erroring out when being run from Jenkins从 Jenkins 运行时 NSIS 出错
【发布时间】:2017-03-13 21:32:12
【问题描述】:

我有一个构建 NSIS 安装程序的 PowerShell 脚本。如果我直接在系统上运行它会很好。当我将它添加到我的 Jenkins 管道时,我收到以下错误:

Internal compiler error #12345

我知道 2GB 的大小限制;它阻塞的文件只有 52MB...除了脚本在 Jenkins 之外运行良好。

我尝试添加一些睡眠,删除全部或部分 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}"

【问题讨论】:

  • NSIS 版本?最少的代码示例?
  • NSIS 2.50…我明天会发布一个最小的代码示例

标签: powershell jenkins nsis


【解决方案1】:

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

对于搜索 NSIS 内部编译器错误 #12345 的任何人,原因之一可能是磁盘空间不足,这里就是这种情况。

【讨论】:

  • 磁盘问题适用于“Internal compiler error #12345: error creating mmap the size of ...”,其他 mmap 错误可能是基于内存的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-26
  • 2014-02-02
  • 2019-01-28
  • 1970-01-01
相关资源
最近更新 更多