# Code taken from http://nsis.sourceforge.net/GetTimeStamp # and modified: # - UTC time instead of local time # - output format is changed for readability # Usage: # ${TimeStamp} $var ; $var -> yyyy-MM-dd HH:mm:ss ### TimeStamp !ifndef TimeStamp !define TimeStamp "!insertmacro _TimeStamp" !macro _TimeStamp FormatedString !ifdef __UNINSTALL__ Call un.__TimeStamp !else Call __TimeStamp !endif Pop ${FormatedString} !macroend !macro __TimeStamp UN Function ${UN}__TimeStamp ClearErrors ## Store the needed Registers on the stack Push $0 ; Stack $0 Push $1 ; Stack $1 $0 Push $2 ; Stack $2 $1 $0 Push $3 ; Stack $3 $2 $1 $0 Push $4 ; Stack $4 $3 $2 $1 $0 Push $5 ; Stack $5 $4 $3 $2 $1 $0 Push $6 ; Stack $6 $5 $4 $3 $2 $1 $0 ## Call System API to get the current system Time System::Alloc 16 Pop $0 System::Call 'kernel32::GetSystemTime(i) i(r0)' System::Call '*$0(&i2, &i2, &i2, &i2, &i2, &i2, &i2)i (.r1, .r2, n, .r3, .r4, .r5, .r6)' System::Free $0 IntFmt $2 "%02i" $2 IntFmt $3 "%02i" $3 IntFmt $4 "%02i" $4 IntFmt $5 "%02i" $5 IntFmt $6 "%02i" $6 ## Generate Timestamp ;StrCpy $0 "YEAR=$1$\nMONTH=$2$\nDAY=$3$\nHOUR=$4$\nMINUITES=$5$\nSECONDS=$6$" StrCpy $0 "$1-$2-$3 $4:$5:$6" ## Restore the Registers and add Timestamp to the Stack Pop $6 ; Stack $5 $4 $3 $2 $1 $0 Pop $5 ; Stack $4 $3 $2 $1 $0 Pop $4 ; Stack $3 $2 $1 $0 Pop $3 ; Stack $2 $1 $0 Pop $2 ; Stack $1 $0 Pop $1 ; Stack $0 Exch $0 ; Stack ${TimeStamp} FunctionEnd !macroend !insertmacro __TimeStamp "" !insertmacro __TimeStamp "un." !endif ###########