【问题标题】:Saving NSIS Install Log保存 NSI​​S 安装日志
【发布时间】:2010-10-26 01:37:03
【问题描述】:

保存 NSI​​S 中显示的安装日志最简单的方法是什么?我似乎记得在某处读过,您可以使用特殊标志重新编译 NSIS 代码以使其能够保存日志。有没有更简单的方法?

【问题讨论】:

标签: installation nsis


【解决方案1】:

为了保持文件较小,NSIS 编译器的默认安装不会生成日志文件。下载发行版的Special Build 并将其复制到makensis.exe 应用程序(和Stub 文件夹)以对其进行修补以支持日志记录。

完成后,只需将以下内容添加到您的脚本中:

 LogSet on 

无需进行其他更改。我不知道为什么这不像我的情况那样默认,它只为文件大小增加了 48 个字节!

【讨论】:

  • 确保复制 makensis 和存根目录中的文件。我刚刚复制了 makesis.exe,一切正常,但从未创建 install.log 文件。
  • $INSTDIR must have a value before you call this function or it will not work. - 来自 NSIS 手册
  • 另一个陷阱:必须将 LogSet on 添加到您要记录内容的每个部分和/或函数中(不仅仅是一次)
【解决方案2】:

试试NSISLog 插件。

还有LogEx

【讨论】:

    【解决方案3】:

    这是直接来自NSIS website的解决方案

    StrCpy $0 "$EXEDIR\install.log"
    Push $0
    Call DumpLog
    
    
    
    !define LVM_GETITEMCOUNT 0x1004
    !define LVM_GETITEMTEXT 0x102D
    
    Function DumpLog
      Exch $5
      Push $0
      Push $1
      Push $2
      Push $3
      Push $4
      Push $6
    
      FindWindow $0 "#32770" "" $HWNDPARENT
      GetDlgItem $0 $0 1016
      StrCmp $0 0 exit
      FileOpen $5 $5 "w"
      StrCmp $5 "" exit
        SendMessage $0 ${LVM_GETITEMCOUNT} 0 0 $6
        System::Alloc ${NSIS_MAX_STRLEN}
        Pop $3
        StrCpy $2 0
        System::Call "*(i, i, i, i, i, i, i, i, i) i \
          (0, 0, 0, 0, 0, r3, ${NSIS_MAX_STRLEN}) .r1"
        loop: StrCmp $2 $6 done
          System::Call "User32::SendMessageA(i, i, i, i) i \
            ($0, ${LVM_GETITEMTEXT}, $2, r1)"
          System::Call "*$3(&t${NSIS_MAX_STRLEN} .r4)"
          FileWrite $5 "$4$\r$\n"
          IntOp $2 $2 + 1
          Goto loop
        done:
          FileClose $5
          System::Free $1
          System::Free $3
      exit:
        Pop $6
        Pop $4
        Pop $3
        Pop $2
        Pop $1
        Pop $0
        Exch $5
    FunctionEnd
    

    【讨论】:

    • 在静默模式下不工作,如果出现故障将无法工作。这种日志记录的原因是什么?
    • @JackNova 只需删除顶部声明的 lvm_getitemcount
    猜你喜欢
    • 1970-01-01
    • 2011-07-13
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 2014-10-11
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    相关资源
    最近更新 更多