GetTimeStamp: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
(→‎Function Source: Rewritten to address uninstallation issues and added some minir improvments,)
 
(One intermediate revision by the same user not shown)
Line 5: Line 5:
=== Example ===
=== Example ===
<highlight-nsis>
<highlight-nsis>
Call GetTimeStamp
${TimeStamp} $0
Pop $0
DetailPrint "TimeStamp=$0"
DetailPrint "TimeStamp=$0"
</highlight-nsis>
</highlight-nsis>
Line 13: Line 12:
<highlight-nsis>
<highlight-nsis>
### TimeStamp
### TimeStamp
!ifndef SetupLog::TimeStamp
!ifndef TimeStamp
     !define SetupLog::TimeStamp "!insertmacro SetupLog_TimeStamp"
     !define TimeStamp "!insertmacro _TimeStamp"
     !macro SetupLog_TimeStamp FormatedString
     !macro _TimeStamp FormatedString
         !ifdef __UNINSTALL__
         !ifdef __UNINSTALL__
             Call un._SetupLog_TimeStamp
             Call un.__TimeStamp
         !else
         !else
             Call _SetupLog_TimeStamp
             Call __TimeStamp
         !endif
         !endif
         Pop ${FormatedString}
         Pop ${FormatedString}
     !macroend
     !macroend


!macro _SetupLog_TimeStamp UN
!macro __TimeStamp UN
Function ${UN}_SetupLog_TimeStamp
Function ${UN}__TimeStamp
     ClearErrors
     ClearErrors
     ## Store the needed Registers on the stack
     ## Store the needed Registers on the stack
Line 68: Line 67:
FunctionEnd
FunctionEnd
!macroend
!macroend
!insertmacro _SetupLog_TimeStamp ""
!insertmacro __TimeStamp ""
!insertmacro _SetupLog_TimeStamp "un."
!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
###########