| # 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 |
| ########### |