tests/nsis3/share/nsis/Include/VPatchLib.nsh

Summary

Maintainability
Test Coverage
; PatchLib v3.0
; =============
;
; Library with macro for use with VPatch (DLL version) in NSIS 2.0.5+
; Created by Koen van de Sande

!include LogicLib.nsh

!macro VPatchFile PATCHDATA SOURCEFILE TEMPFILE

  Push $1
  Push $2
  Push $3
  Push $4

  Push ${SOURCEFILE}
  Push ${TEMPFILE}

  Pop $2 # temp file
  Pop $3 # source file

  InitPluginsDir
  GetTempFileName $1 $PLUGINSDIR
  File /oname=$1 ${PATCHDATA}

  vpatch::vpatchfile $1 $3 $2
  Pop $4
  DetailPrint $4

  StrCpy $4 $4 2
  ${Unless} $4 == "OK"
    SetErrors
  ${EndIf}

  ${If} ${FileExists} $2
    Delete $3
    Rename /REBOOTOK $2 $3
  ${EndIf}

  Delete $1

  Pop $4
  Pop $3
  Pop $2
  Pop $1

!macroend