想法是以静默模式运行 NSIS 脚本到远程机器,一旦安装成功完成,然后将日志文件返回到主机。

我有很多 Detailprint 命令消息显示脚本的进度。现在的问题是我如何将这些消息保存到日志文件中。我正在研究这个 http://nsis.sourceforge.net/Dump_log_to_file,但它说它在静音模式下不起作用。

最佳答案

我使用这种方法来保存日志。我不知道这是否是最好的方法,但对我来说效果很好。

!ifndef DEBUG_MODE
  !define DEBUG_MODE true
!endif

!define LOGFILE "$TEMP\my_logfile.log"

!if ${DEBUG_MODE} == true
  !define DetailPrint '!insertmacro _debugMsg'
!else
  !define DetailPrint '!insertmacro _nodebugMsg'
!endif

!macro _debugMsg MSG
  push $3
  push $2
  push $1
  push $0
  push $R0

  strcpy $R0 "${MSG}"

  ClearErrors
  FileOpen $1 ${LOGFILE} a
  FileSeek $1 0 END
  IfErrors +8
  ${GetTime} "" "L" $0 $0 $0 $0 $0 $2 $3
  FileWrite $1 "$0:$2:$3$\t"
  FileWrite $1 "${__FUNCTION__}$\t"
  FileWrite $1 "$R0"
  FileWrite $1 "$\t(${__FILE__},${__FUNCTION__},${__LINE__})"
  FileWrite $1 "$\n"
  FileClose $1

  pop $R0
  pop $0
  pop $1
  pop $2
  pop $3
!macroend

!macro _nodebugMsg _MSG
  ;you can put here nothing or you can put the regular DetailPrint
  DetailPrint "${MSG}"
!macroend

之后你只需要找到并用 ${DetailPrint} 替换 DetailPrint

关于deployment - 如何在 NSIS 脚本的文件中保存 DetailPrint 命令消息?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9234402/

10-13 08:45