Saving NSIS Install Log

What's the easiest way to save the install log that is displayed in NSIS? I seem to remember reading somewhere that you can recompile the NSIS code with a special flag to enable it to save the log. Is there an easier way?

1

3 Answers

In an attempt to keep file sizes small, the default installation of the NSIS compiler doesn't make log files. Download the Special Build of a release and copy it over the makensis.exe application (and Stub folder) to patch it to have logging support.

Once you have done that, simply add the following to your script:

 LogSet on 

No other changes are needed. I have no idea why this isn't default as in my cases, it only adds 48 bytes to the filesize!

3

Try the NSISLog plugin.

There's also LogEx.

0

Here's a solution straight from the 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 
2

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like