GetTimeStamp: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
(→Example: New Example to reflect new code changes) |
|||
Line 12: | Line 12: | ||
<highlight-nsis> | <highlight-nsis> | ||
### TimeStamp | ### TimeStamp | ||
!ifndef | !ifndef TimeStamp | ||
!define | !define TimeStamp "!insertmacro _TimeStamp" | ||
!macro | !macro _TimeStamp FormatedString | ||
!ifdef __UNINSTALL__ | !ifdef __UNINSTALL__ | ||
Call un. | Call un.__TimeStamp | ||
!else | !else | ||
Call | Call __TimeStamp | ||
!endif | !endif | ||
Pop ${FormatedString} | Pop ${FormatedString} | ||
!macroend | !macroend | ||
!macro | !macro __TimeStamp UN | ||
Function ${UN} | Function ${UN}__TimeStamp | ||
ClearErrors | ClearErrors | ||
## Store the needed Registers on the stack | ## Store the needed Registers on the stack | ||
Line 67: | Line 67: | ||
FunctionEnd | FunctionEnd | ||
!macroend | !macroend | ||
!insertmacro | !insertmacro __TimeStamp "" | ||
!insertmacro | !insertmacro __TimeStamp "un." | ||
!endif | !endif | ||
########### | ########### | ||
</highlight-nsis> | </highlight-nsis> |
Latest revision as of 22:19, 12 June 2009
Usage
Format
- YYYYMMDDHHmmSS.xxxx
Example
${TimeStamp} $0 DetailPrint "TimeStamp=$0"
Function Source
### 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 Push $7 ; Stack $7 $6 $5 $4 $3 $2 $1 $0 ;Push $8 ; Stack $8 $7 $6 $5 $4 $3 $2 $1 $0 ## Call System API to get the current system Time System::Alloc 16 Pop $0 System::Call 'kernel32::GetLocalTime(i) i(r0)' System::Call '*$0(&i2, &i2, &i2, &i2, &i2, &i2, &i2, &i2)i (.r1, .r2, n, .r3, .r4, .r5, .r6, .r7)' 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$\nMS$7" StrCpy $0 "$1$2$3$4$5$6.$7" ## Restore the Registers and add Timestamp to the Stack ;Pop $8 ; Stack $7 $6 $5 $4 $3 $2 $1 $0 Pop $7 ; Stack $6 $5 $4 $3 $2 $1 $0 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 ###########