blob: e07c0c81e7b439c60d29f6480703b3afd68554f0 [file] [log] [blame]
# 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
###########