From 1ffd66b1e7dace1b7cf51fe8635000c8f17337d6 Mon Sep 17 00:00:00 2001 From: David Pinedo Date: Wed, 6 Jan 2016 09:59:58 -0700 Subject: windows RT installer: Remove include files. Cosmetic changes to nsi file. --- windowsRuntimeInstaller/InstallerRT.nsi | 125 ++++- windowsRuntimeInstaller/LogicLib.nsh | 825 -------------------------------- windowsRuntimeInstaller/StrRep.nsh | 69 --- windowsRuntimeInstaller/x64.nsh | 61 --- 4 files changed, 113 insertions(+), 967 deletions(-) delete mode 100644 windowsRuntimeInstaller/LogicLib.nsh delete mode 100644 windowsRuntimeInstaller/StrRep.nsh delete mode 100644 windowsRuntimeInstaller/x64.nsh (limited to 'windowsRuntimeInstaller') diff --git a/windowsRuntimeInstaller/InstallerRT.nsi b/windowsRuntimeInstaller/InstallerRT.nsi index 2ac3d9b6..d6c024a5 100644 --- a/windowsRuntimeInstaller/InstallerRT.nsi +++ b/windowsRuntimeInstaller/InstallerRT.nsi @@ -36,6 +36,9 @@ #!define VERSION_PATCH "1" !define PRODUCTVERSION "${VERSION_API_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" +# Includes +!include LogicLib.nsh + # This number is determined by doing an install, and then from Windows Explorer, # doing a "Properties" on the install directory. Add to this the size of the # files installed to C:\Windows\System32. And then add a little bit more. @@ -54,13 +57,111 @@ OutFile "VulkanRT-${PRODUCTVERSION}-Installer.exe" # Define default installation directory InstallDir "C:\Program Files (x86)\${PRODUCTNAME}\${PRODUCTVERSION}" -# Includes -!include StrRep.nsh -!include x64.nsh -!include LogicLib.nsh +# Variable that holds version string used in file names +Var FileVersion + + +############################################# +# StrRep - string replace + +!define StrRep "!insertmacro StrRep" +!macro StrRep output string old new + Push `${string}` + Push `${old}` + Push `${new}` + !ifdef __UNINSTALL__ + Call un.StrRep + !else + Call StrRep + !endif + Pop ${output} +!macroend + +!macro Func_StrRep un + Function ${un}StrRep + Exch $R2 ;new + Exch 1 + Exch $R1 ;old + Exch 2 + Exch $R0 ;string + Push $R3 + Push $R4 + Push $R5 + Push $R6 + Push $R7 + Push $R8 + Push $R9 + + StrCpy $R3 0 + StrLen $R4 $R1 + StrLen $R6 $R0 + StrLen $R9 $R2 + loop: + StrCpy $R5 $R0 $R4 $R3 + StrCmp $R5 $R1 found + StrCmp $R3 $R6 done + IntOp $R3 $R3 + 1 ;move offset by 1 to check the next character + Goto loop + found: + StrCpy $R5 $R0 $R3 + IntOp $R8 $R3 + $R4 + StrCpy $R7 $R0 "" $R8 + StrCpy $R0 $R5$R2$R7 + StrLen $R6 $R0 + IntOp $R3 $R3 + $R9 ;move offset by length of the replacement string + Goto loop + done: + + Pop $R9 + Pop $R8 + Pop $R7 + Pop $R6 + Pop $R5 + Pop $R4 + Pop $R3 + Push $R0 + Push $R1 + Pop $R0 + Pop $R1 + Pop $R0 + Pop $R2 + Exch $R1 + FunctionEnd +!macroend +!insertmacro Func_StrRep "" +!insertmacro Func_StrRep "un." + +############################################# +# x64 macros + +!define IsWow64 `"" IsWow64 ""` +!macro _IsWow64 _a _b _t _f + !insertmacro _LOGICLIB_TEMP + System::Call kernel32::GetCurrentProcess()p.s + System::Call kernel32::IsWow64Process(ps,*i0s) + Pop $_LOGICLIB_TEMP + !insertmacro _!= $_LOGICLIB_TEMP 0 `${_t}` `${_f}` +!macroend + +!define RunningX64 `"" RunningX64 ""` +!macro _RunningX64 _a _b _t _f + !if ${NSIS_PTR_SIZE} > 4 + !insertmacro LogicLib_JumpToBranch `${_t}` `${_f}` + !else + !insertmacro _IsWow64 `${_a}` `${_b}` `${_t}` `${_f}` + !endif +!macroend + +!define DisableX64FSRedirection "!insertmacro DisableX64FSRedirection" +!macro DisableX64FSRedirection + System::Call kernel32::Wow64EnableWow64FsRedirection(i0) +!macroend + +!define EnableX64FSRedirection "!insertmacro EnableX64FSRedirection" +!macro EnableX64FSRedirection + System::Call kernel32::Wow64EnableWow64FsRedirection(i1) +!macroend -# Declar var that holds version string used in file names -Var FV Function .onInit @@ -95,15 +196,15 @@ Section # Set up version number for file names ${StrRep} $0 ${VERSION_PATCH} "." "-" - StrCpy $FV ${VERSION_ABI_MAJOR}-${VERSION_API_MAJOR}-${VERSION_MINOR}-$0 + StrCpy $FileVersion ${VERSION_ABI_MAJOR}-${VERSION_API_MAJOR}-${VERSION_MINOR}-$0 # Libraries SetOutPath $WINDIR\System32 - File /oname=vulkan-$FV.dll ..\build\loader\Release\vulkan-${VERSION_ABI_MAJOR}.dll + File /oname=vulkan-$FileVersion.dll ..\build\loader\Release\vulkan-${VERSION_ABI_MAJOR}.dll # vulkaninfo.exe SetOutPath $WINDIR\System32 - File /oname=vulkaninfo-$FV.exe ..\build\demos\Release\vulkaninfo.exe + File /oname=vulkaninfo-$FileVersion.exe ..\build\demos\Release\vulkaninfo.exe SetOutPath "$INSTDIR" File ..\build\demos\Release\vulkaninfo.exe SetShellVarContext all @@ -167,7 +268,7 @@ Section "uninstall" # Set up version number for file names ${StrRep} $0 ${VERSION_PATCH} "." "-" - StrCpy $FV ${VERSION_ABI_MAJOR}-${VERSION_API_MAJOR}-${VERSION_MINOR}-$0 + StrCpy $FileVersion ${VERSION_ABI_MAJOR}-${VERSION_API_MAJOR}-${VERSION_MINOR}-$0 # Decrement the number of times we have been installed. ReadRegDword $1 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCTNAME}${PRODUCTVERSION}" "IC" @@ -183,12 +284,12 @@ Section "uninstall" # Delete vulkaninfo.exe in C:\Windows\System32 Delete /REBOOTOK $WINDIR\System32\vulkaninfo.exe - Delete /REBOOTOK "$WINDIR\System32\vulkaninfo-$FV.exe" + Delete /REBOOTOK "$WINDIR\System32\vulkaninfo-$FileVersion.exe" # Delete vullkan dll files: vulkan-.dll and vulkan----.dll Delete /REBOOTOK $WINDIR\System32\vulkan-${VERSION_ABI_MAJOR}.dll ${StrRep} $0 ${VERSION_PATCH} "." "-" - Delete /REBOOTOK $WINDIR\System32\vulkan-$FV.dll + Delete /REBOOTOK $WINDIR\System32\vulkan-$FileVersion.dll # Run the ConfigLayersAndVulkanDLL.ps1 script to: # Copy the most recent version of vulkan--*.dll to vulkan-.dll diff --git a/windowsRuntimeInstaller/LogicLib.nsh b/windowsRuntimeInstaller/LogicLib.nsh deleted file mode 100644 index 89e129f2..00000000 --- a/windowsRuntimeInstaller/LogicLib.nsh +++ /dev/null @@ -1,825 +0,0 @@ -; NSIS LOGIC LIBRARY - LogicLib.nsh -; Version 2.6 - 08/12/2007 -; By dselkirk@hotmail.com -; and eccles@users.sf.net -; with IfNot support added by Message -; -; Questions/Comments - -; See http://forums.winamp.com/showthread.php?s=&postid=1116241 -; -; Description: -; Provides the use of various logic statements within NSIS. -; -; Usage: -; The following "statements" are available: -; If|IfNot|Unless..{ElseIf|ElseIfNot|ElseUnless}..[Else]..EndIf|EndUnless -; - Conditionally executes a block of statements, depending on the value -; of an expression. IfNot and Unless are equivalent and -; interchangeable, as are ElseIfNot and ElseUnless. -; AndIf|AndIfNot|AndUnless|OrIf|OrIfNot|OrUnless -; - Adds any number of extra conditions to If, IfNot, Unless, ElseIf, -; ElseIfNot and ElseUnless statements. -; IfThen|IfNotThen..|..| -; - Conditionally executes an inline statement, depending on the value -; of an expression. -; IfCmd..||..| -; - Conditionally executes an inline statement, depending on a true -; value of the provided NSIS function. -; Select..{Case[2|3|4|5]}..[CaseElse|Default]..EndSelect -; - Executes one of several blocks of statements, depending on the value -; of an expression. -; Switch..{Case|CaseElse|Default}..EndSwitch -; - Jumps to one of several labels, depending on the value of an -; expression. -; Do[While|Until]..{ExitDo|Continue|Break}..Loop[While|Until] -; - Repeats a block of statements until stopped, or depending on the -; value of an expression. -; While..{ExitWhile|Continue|Break}..EndWhile -; - An alias for DoWhile..Loop (for backwards-compatibility) -; For[Each]..{ExitFor|Continue|Break}..Next -; - Repeats a block of statements varying the value of a variable. -; -; The following "expressions" are available: -; Standard (built-in) string tests (which are case-insensitive): -; a == b; a != b -; Additional case-insensitive string tests (using System.dll): -; a S< b; a S>= b; a S> b; a S<= b -; Case-sensitive string tests: -; a S== b; a S!= b -; Standard (built-in) signed integer tests: -; a = b; a <> b; a < b; a >= b; a > b; a <= b -; Standard (built-in) unsigned integer tests: -; a U< b; a U>= b; a U> b; a U<= b -; 64-bit integer tests (using System.dll): -; a L= b; a L<> b; a L< b; a L>= b; a L> b; a L<= b -; ptrdiff_t integer tests -; a P= b; a P<> b; a P< b; a P>= b; a P> b; a P<= b -; Built-in NSIS flag tests: -; ${Abort}; ${Errors}; ${RebootFlag}; ${Silent} -; Built-in NSIS other tests: -; ${FileExists} a -; Any conditional NSIS instruction test: -; ${Cmd} a -; Section flag tests: -; ${SectionIsSelected} a; ${SectionIsSectionGroup} a; -; ${SectionIsSectionGroupEnd} a; ${SectionIsBold} a; -; ${SectionIsReadOnly} a; ${SectionIsExpanded} a; -; ${SectionIsPartiallySelected} a -; -; Examples: -; See LogicLib.nsi in the Examples folder for lots of example usage. - -!verbose push -!verbose 3 -!ifndef LOGICLIB_VERBOSITY - !define LOGICLIB_VERBOSITY 3 -!endif -!define _LOGICLIB_VERBOSITY ${LOGICLIB_VERBOSITY} -!undef LOGICLIB_VERBOSITY -!verbose ${_LOGICLIB_VERBOSITY} - -!ifndef LOGICLIB - !define LOGICLIB - !define | "'" - !define || "' '" - !define LOGICLIB_COUNTER 0 - - !include Sections.nsh - - !macro _LOGICLIB_TEMP - !ifndef _LOGICLIB_TEMP - !define _LOGICLIB_TEMP - Var /GLOBAL _LOGICLIB_TEMP ; Temporary variable to aid the more elaborate logic tests - !endif - !macroend - - !macro LogicLib_JumpToBranch _Jump _Skip - StrCmp "" "" `${_Jump}` ${_Skip} - !macroend - - !macro _IncreaseCounter - !define _LOGICLIB_COUNTER ${LOGICLIB_COUNTER} - !undef LOGICLIB_COUNTER - !define /math LOGICLIB_COUNTER ${_LOGICLIB_COUNTER} + 1 - !undef _LOGICLIB_COUNTER - !macroend - - !macro _PushLogic - !insertmacro _PushScope Logic _LogicLib_Label_${LOGICLIB_COUNTER} - !insertmacro _IncreaseCounter - !macroend - - !macro _PopLogic - !insertmacro _PopScope Logic - !macroend - - !macro _PushScope Type label - !ifdef _${Type} ; If we already have a statement - !define _Cur${Type} ${_${Type}} - !undef _${Type} - !define _${Type} ${label} - !define ${_${Type}}Prev${Type} ${_Cur${Type}} ; Save the current logic - !undef _Cur${Type} - !else - !define _${Type} ${label} ; Initialise for first statement - !endif - !macroend - - !macro _PopScope Type - !ifndef _${Type} - !error "Cannot use _Pop${Type} without a preceding _Push${Type}" - !endif - !ifdef ${_${Type}}Prev${Type} ; If a previous statment was active then restore it - !define _Cur${Type} ${_${Type}} - !undef _${Type} - !define _${Type} ${${_Cur${Type}}Prev${Type}} - !undef ${_Cur${Type}}Prev${Type} - !undef _Cur${Type} - !else - !undef _${Type} - !endif - !macroend - - ; String tests - !macro _== _a _b _t _f - StrCmp `${_a}` `${_b}` `${_t}` `${_f}` - !macroend - - !macro _!= _a _b _t _f - !insertmacro _== `${_a}` `${_b}` `${_f}` `${_t}` - !macroend - - ; Case-sensitive string tests - !macro _S== _a _b _t _f - StrCmpS `${_a}` `${_b}` `${_t}` `${_f}` - !macroend - - !macro _S!= _a _b _t _f - !insertmacro _S== `${_a}` `${_b}` `${_f}` `${_t}` - !macroend - - ; Extra string tests (cannot do these case-sensitively - I tried and lstrcmp still ignored the case) - !macro _StrCmpI _a _b _e _l _m - !insertmacro _LOGICLIB_TEMP - System::Call `kernel32::lstrcmpi(ts, ts) i.s` `${_a}` `${_b}` - Pop $_LOGICLIB_TEMP - IntCmp $_LOGICLIB_TEMP 0 `${_e}` `${_l}` `${_m}` - !macroend - - !macro _S< _a _b _t _f - !insertmacro _StrCmpI `${_a}` `${_b}` `${_f}` `${_t}` `${_f}` - !macroend - - !macro _S>= _a _b _t _f - !insertmacro _S< `${_a}` `${_b}` `${_f}` `${_t}` - !macroend - - !macro _S> _a _b _t _f - !insertmacro _StrCmpI `${_a}` `${_b}` `${_f}` `${_f}` `${_t}` - !macroend - - !macro _S<= _a _b _t _f - !insertmacro _S> `${_a}` `${_b}` `${_f}` `${_t}` - !macroend - - ; Integer tests - !macro _= _a _b _t _f - IntCmp `${_a}` `${_b}` `${_t}` `${_f}` `${_f}` - !macroend - - !macro _<> _a _b _t _f - !insertmacro _= `${_a}` `${_b}` `${_f}` `${_t}` - !macroend - - !macro _< _a _b _t _f - IntCmp `${_a}` `${_b}` `${_f}` `${_t}` `${_f}` - !macroend - - !macro _>= _a _b _t _f - !insertmacro _< `${_a}` `${_b}` `${_f}` `${_t}` - !macroend - - !macro _> _a _b _t _f - IntCmp `${_a}` `${_b}` `${_f}` `${_f}` `${_t}` - !macroend - - !macro _<= _a _b _t _f - !insertmacro _> `${_a}` `${_b}` `${_f}` `${_t}` - !macroend - - ; Unsigned integer tests (NB: no need for extra equality tests) - !macro _U< _a _b _t _f - IntCmpU `${_a}` `${_b}` `${_f}` `${_t}` `${_f}` - !macroend - - !macro _U>= _a _b _t _f - !insertmacro _U< `${_a}` `${_b}` `${_f}` `${_t}` - !macroend - - !macro _U> _a _b _t _f - IntCmpU `${_a}` `${_b}` `${_f}` `${_f}` `${_t}` - !macroend - - !macro _U<= _a _b _t _f - !insertmacro _U> `${_a}` `${_b}` `${_f}` `${_t}` - !macroend - - ; Int64 tests - !macro _Int64Cmp _a _o _b _t _f - !insertmacro _LOGICLIB_TEMP - System::Int64Op `${_a}` `${_o}` `${_b}` - Pop $_LOGICLIB_TEMP - !insertmacro _= $_LOGICLIB_TEMP 0 `${_f}` `${_t}` - !macroend - - !macro _L= _a _b _t _f - !insertmacro _Int64Cmp `${_a}` = `${_b}` `${_t}` `${_f}` - !macroend - - !macro _L<> _a _b _t _f - !insertmacro _L= `${_a}` `${_b}` `${_f}` `${_t}` - !macroend - - !macro _L< _a _b _t _f - !insertmacro _Int64Cmp `${_a}` < `${_b}` `${_t}` `${_f}` - !macroend - - !macro _L>= _a _b _t _f - !insertmacro _L< `${_a}` `${_b}` `${_f}` `${_t}` - !macroend - - !macro _L> _a _b _t _f - !insertmacro _Int64Cmp `${_a}` > `${_b}` `${_t}` `${_f}` - !macroend - - !macro _L<= _a _b _t _f - !insertmacro _L> `${_a}` `${_b}` `${_f}` `${_t}` - !macroend - - ; ptrdiff_t tests - !macro LogicLib_PtrDiffTest _o _a _b _t _f - !if ${NSIS_PTR_SIZE} <= 4 - !insertmacro _${_o} `${_a}` `${_b}` `${_t}` `${_f}` - !else - !insertmacro _L${_o} `${_a}` `${_b}` `${_t}` `${_f}` - !endif - !macroend - !macro _P= _a _b _t _f - !insertmacro LogicLib_PtrDiffTest = `${_a}` `${_b}` `${_t}` `${_f}` - !macroend - !macro _P<> _a _b _t _f - !insertmacro LogicLib_PtrDiffTest <> `${_a}` `${_b}` `${_t}` `${_f}` - !macroend - !macro _P< _a _b _t _f - !insertmacro LogicLib_PtrDiffTest < `${_a}` `${_b}` `${_t}` `${_f}` - !macroend - !macro _P>= _a _b _t _f - !insertmacro LogicLib_PtrDiffTest >= `${_a}` `${_b}` `${_t}` `${_f}` - !macroend - !macro _P> _a _b _t _f - !insertmacro LogicLib_PtrDiffTest > `${_a}` `${_b}` `${_t}` `${_f}` - !macroend - !macro _P<= _a _b _t _f - !insertmacro LogicLib_PtrDiffTest <= `${_a}` `${_b}` `${_t}` `${_f}` - !macroend - - ; Flag tests - !macro _Abort _a _b _t _f - IfAbort `${_t}` `${_f}` - !macroend - !define Abort `"" Abort ""` - - !macro _Errors _a _b _t _f - IfErrors `${_t}` `${_f}` - !macroend - !define Errors `"" Errors ""` - - !macro _FileExists _a _b _t _f - IfFileExists `${_b}` `${_t}` `${_f}` - !macroend - !define FileExists `"" FileExists` - - !macro _RebootFlag _a _b _t _f - IfRebootFlag `${_t}` `${_f}` - !macroend - !define RebootFlag `"" RebootFlag ""` - - !macro _Silent _a _b _t _f - IfSilent `${_t}` `${_f}` - !macroend - !define Silent `"" Silent ""` - - ; "Any instruction" test - !macro _Cmd _a _b _t _f - !define _t=${_t} - !ifdef _t= ; If no true label then make one - !define __t _LogicLib_Label_${LOGICLIB_COUNTER} - !insertmacro _IncreaseCounter - !else - !define __t ${_t} - !endif - ${_b} ${__t} - !define _f=${_f} - !ifndef _f= ; If a false label then go there - Goto ${_f} - !endif - !undef _f=${_f} - !ifdef _t= ; If we made our own true label then place it - ${__t}: - !endif - !undef __t - !undef _t=${_t} - !macroend - !define Cmd `"" Cmd` - - ; Section flag test - !macro _SectionFlagIsSet _a _b _t _f - !insertmacro _LOGICLIB_TEMP - SectionGetFlags `${_b}` $_LOGICLIB_TEMP - IntOp $_LOGICLIB_TEMP $_LOGICLIB_TEMP & `${_a}` - !insertmacro _= $_LOGICLIB_TEMP `${_a}` `${_t}` `${_f}` - !macroend - !define SectionIsSelected `${SF_SELECTED} SectionFlagIsSet` - !define SectionIsSubSection `${SF_SUBSEC} SectionFlagIsSet` - !define SectionIsSubSectionEnd `${SF_SUBSECEND} SectionFlagIsSet` - !define SectionIsSectionGroup `${SF_SECGRP} SectionFlagIsSet` - !define SectionIsSectionGroupEnd `${SF_SECGRPEND} SectionFlagIsSet` - !define SectionIsBold `${SF_BOLD} SectionFlagIsSet` - !define SectionIsReadOnly `${SF_RO} SectionFlagIsSet` - !define SectionIsExpanded `${SF_EXPAND} SectionFlagIsSet` - !define SectionIsPartiallySelected `${SF_PSELECTED} SectionFlagIsSet` - - !define IfCmd `!insertmacro _IfThen "" Cmd ${|}` - - !macro _If _c _a _o _b - !verbose push - !verbose ${LOGICLIB_VERBOSITY} - !insertmacro _PushLogic - !define ${_Logic}If - !define ${_Logic}Else _LogicLib_Label_${LOGICLIB_COUNTER} ; Get a label for the Else - !insertmacro _IncreaseCounter - !define _c=${_c} - !ifdef _c=true ; If is true - !insertmacro _${_o} `${_a}` `${_b}` "" ${${_Logic}Else} - !else ; If condition is false - !insertmacro _${_o} `${_a}` `${_b}` ${${_Logic}Else} "" - !endif - !undef _c=${_c} - !verbose pop - !macroend - !define If `!insertmacro _If true` - !define Unless `!insertmacro _If false` - !define IfNot `!insertmacro _If false` - - !macro _And _c _a _o _b - !verbose push - !verbose ${LOGICLIB_VERBOSITY} - !ifndef _Logic | ${_Logic}If - !error "Cannot use And without a preceding If or IfNot/Unless" - !endif - !ifndef ${_Logic}Else - !error "Cannot use And following an Else" - !endif - !define _c=${_c} - !ifdef _c=true ; If is true - !insertmacro _${_o} `${_a}` `${_b}` "" ${${_Logic}Else} - !else ; If condition is false - !insertmacro _${_o} `${_a}` `${_b}` ${${_Logic}Else} "" - !endif - !undef _c=${_c} - !verbose pop - !macroend - !define AndIf `!insertmacro _And true` - !define AndUnless `!insertmacro _And false` - !define AndIfNot `!insertmacro _And false` - - !macro _Or _c _a _o _b - !verbose push - !verbose ${LOGICLIB_VERBOSITY} - !ifndef _Logic | ${_Logic}If - !error "Cannot use Or without a preceding If or IfNot/Unless" - !endif - !ifndef ${_Logic}Else - !error "Cannot use Or following an Else" - !endif - !define _label _LogicLib_Label_${LOGICLIB_COUNTER} ; Skip this test as we already - !insertmacro _IncreaseCounter - Goto ${_label} ; have a successful result - ${${_Logic}Else}: ; Place the Else label - !undef ${_Logic}Else ; and remove it - !define ${_Logic}Else _LogicLib_Label_${LOGICLIB_COUNTER} ; Get a label for the next Else and perform the new If - !insertmacro _IncreaseCounter - !define _c=${_c} - !ifdef _c=true ; If is true - !insertmacro _${_o} `${_a}` `${_b}` "" ${${_Logic}Else} - !else ; If condition is false - !insertmacro _${_o} `${_a}` `${_b}` ${${_Logic}Else} "" - !endif - !undef _c=${_c} - ${_label}: - !undef _label - !verbose pop - !macroend - !define OrIf `!insertmacro _Or true` - !define OrUnless `!insertmacro _Or false` - !define OrIfNot `!insertmacro _Or false` - - !macro _Else - !verbose push - !verbose ${LOGICLIB_VERBOSITY} - !ifndef _Logic | ${_Logic}If - !error "Cannot use Else without a preceding If or IfNot/Unless" - !endif - !ifndef ${_Logic}Else - !error "Cannot use Else following an Else" - !endif - !ifndef ${_Logic}EndIf ; First Else for this If? - !define ${_Logic}EndIf _LogicLib_Label_${LOGICLIB_COUNTER} ; Get a label for the EndIf - !insertmacro _IncreaseCounter - !endif - Goto ${${_Logic}EndIf} ; Go to the EndIf - ${${_Logic}Else}: ; Place the Else label - !undef ${_Logic}Else ; and remove it - !verbose pop - !macroend - !define Else `!insertmacro _Else` - - !macro _ElseIf _c _a _o _b - !verbose push - !verbose ${LOGICLIB_VERBOSITY} - ${Else} ; Perform the Else - !define ${_Logic}Else _LogicLib_Label_${LOGICLIB_COUNTER} ; Get a label for the next Else and perform the new If - !insertmacro _IncreaseCounter - !define _c=${_c} - !ifdef _c=true ; If is true - !insertmacro _${_o} `${_a}` `${_b}` "" ${${_Logic}Else} - !else ; If condition is false - !insertmacro _${_o} `${_a}` `${_b}` ${${_Logic}Else} "" - !endif - !undef _c=${_c} - !verbose pop - !macroend - !define ElseIf `!insertmacro _ElseIf true` - !define ElseUnless `!insertmacro _ElseIf false` - !define ElseIfNot `!insertmacro _ElseIf false` - - !macro _EndIf _n - !verbose push - !verbose ${LOGICLIB_VERBOSITY} - !ifndef _Logic | ${_Logic}If - !error "Cannot use End${_n} without a preceding If or IfNot/Unless" - !endif - !ifdef ${_Logic}Else - ${${_Logic}Else}: ; Place the Else label - !undef ${_Logic}Else ; and remove it - !endif - !ifdef ${_Logic}EndIf - ${${_Logic}EndIf}: ; Place the EndIf - !undef ${_Logic}EndIf ; and remove it - !endif - !undef ${_Logic}If - !insertmacro _PopLogic - !verbose pop - !macroend - !define EndIf `!insertmacro _EndIf If` - !define EndUnless `!insertmacro _EndIf Unless` - - !macro _IfThen _a _o _b _t - !verbose push - !verbose ${LOGICLIB_VERBOSITY} - ${If} `${_a}` `${_o}` `${_b}` - ${_t} - ${EndIf} - !verbose pop - !macroend - !define IfThen `!insertmacro _IfThen` - - !macro _IfNotThen _a _o _b _t - !verbose push - !verbose ${LOGICLIB_VERBOSITY} - ${IfNot} `${_a}` `${_o}` `${_b}` - ${_t} - ${EndIf} - !verbose pop - !macroend - !define IfNotThen `!insertmacro _IfNotThen` - - !macro _ForEach _v _f _t _o _s - !verbose push - !verbose ${LOGICLIB_VERBOSITY} - StrCpy "${_v}" "${_f}" ; Assign the initial value - Goto +2 ; Skip the loop expression for the first iteration - !define _DoLoopExpression `IntOp "${_v}" "${_v}" "${_o}" "${_s}"` ; Define the loop expression - !define _o=${_o} - !ifdef _o=+ ; Check the loop expression operator - !define __o > ; to determine the correct loop condition - !else ifdef _o=- - !define __o < - !else - !error "Unsupported ForEach step operator (must be + or -)" - !endif - !undef _o=${_o} - !insertmacro _Do For false `${_v}` `${__o}` `${_t}` ; Let Do do the rest - !undef __o - !verbose pop - !macroend - !define ForEach `!insertmacro _ForEach` - - !macro _For _v _f _t - !verbose push - !verbose ${LOGICLIB_VERBOSITY} - ${ForEach} `${_v}` `${_f}` `${_t}` + 1 ; Pass on to ForEach - !verbose pop - !macroend - !define For `!insertmacro _For` - - !define ExitFor `!insertmacro _Goto ExitFor For` - - !define Next `!insertmacro _Loop For Next "" "" "" ""` - - !define While `!insertmacro _Do While true` - - !define ExitWhile `!insertmacro _Goto ExitWhile While` - - !define EndWhile `!insertmacro _Loop While EndWhile "" "" "" ""` - - !macro _Do _n _c _a _o _b - !verbose push - !verbose ${LOGICLIB_VERBOSITY} - !insertmacro _PushLogic - !define ${_Logic}${_n} _LogicLib_Label_${LOGICLIB_COUNTER} ; Get a label for the start of the loop - !insertmacro _IncreaseCounter - ${${_Logic}${_n}}: - !insertmacro _PushScope Exit${_n} _LogicLib_Label_${LOGICLIB_COUNTER} ; Get a label for the end of the loop - !insertmacro _IncreaseCounter - !insertmacro _PushScope Break ${_Exit${_n}} ; Break goes to the end of the loop - !ifdef _DoLoopExpression - ${_DoLoopExpression} ; Special extra parameter for inserting code - !undef _DoLoopExpression ; between the Continue label and the loop condition - !endif - !define _c=${_c} - !ifdef _c= ; No starting condition - !insertmacro _PushScope Continue _LogicLib_Label_${LOGICLIB_COUNTER} ; Get a label for Continue at the end of the loop - !insertmacro _IncreaseCounter - !else - !insertmacro _PushScope Continue ${${_Logic}${_n}} ; Continue goes to the start of the loop - !ifdef _c=true ; If is true - !insertmacro _${_o} `${_a}` `${_b}` "" ${_Exit${_n}} - !else ; If condition is false - !insertmacro _${_o} `${_a}` `${_b}` ${_Exit${_n}} "" - !endif - !endif - !undef _c=${_c} - !define ${_Logic}Condition ${_c} ; Remember the condition used - !verbose pop - !macroend - !define Do `!insertmacro _Do Do "" "" "" ""` - !define DoWhile `!insertmacro _Do Do true` - !define DoUntil `!insertmacro _Do Do false` - - !macro _Goto _n _s - !verbose push - !verbose ${LOGICLIB_VERBOSITY} - !ifndef _${_n} - !error "Cannot use ${_n} without a preceding ${_s}" - !endif - Goto ${_${_n}} - !verbose pop - !macroend - !define ExitDo `!insertmacro _Goto ExitDo Do` - - !macro _Loop _n _e _c _a _o _b - !verbose push - !verbose ${LOGICLIB_VERBOSITY} - !ifndef _Logic | ${_Logic}${_n} - !error "Cannot use ${_e} without a preceding ${_n}" - !endif - !define _c=${${_Logic}Condition} - !ifdef _c= ; If Do had no condition place the Continue label - ${_Continue}: - !endif - !undef _c=${${_Logic}Condition} - !define _c=${_c} - !ifdef _c= ; No ending condition - Goto ${${_Logic}${_n}} - !else ifdef _c=true ; If condition is true - !insertmacro _${_o} `${_a}` `${_b}` ${${_Logic}${_n}} ${_Exit${_n}} - !else ; If condition is false - !insertmacro _${_o} `${_a}` `${_b}` ${_Exit${_n}} ${${_Logic}${_n}} - !endif - !undef _c=${_c} - Goto ${_Continue} ; Just to ensure it is referenced at least once - Goto ${_Exit${_n}} ; Just to ensure it is referenced at least once - ${_Exit${_n}}: ; Place the loop exit point - !undef ${_Logic}Condition - !insertmacro _PopScope Continue - !insertmacro _PopScope Break - !insertmacro _PopScope Exit${_n} - !undef ${_Logic}${_n} - !insertmacro _PopLogic - !verbose pop - !macroend - !define Loop `!insertmacro _Loop Do Loop "" "" "" ""` - !define LoopWhile `!insertmacro _Loop Do LoopWhile true` - !define LoopUntil `!insertmacro _Loop Do LoopUntil false` - - !define Continue `!insertmacro _Goto Continue "For or Do or While"` - !define Break `!insertmacro _Goto Break "For or Do or While"` - - !macro _Select _a - !verbose push - !verbose ${LOGICLIB_VERBOSITY} - !insertmacro _PushLogic - !define ${_Logic}Select `${_a}` ; Remember the left hand side of the comparison - !verbose pop - !macroend - !define Select `!insertmacro _Select` - - !macro _Select_CaseElse - !verbose push - !verbose ${LOGICLIB_VERBOSITY} - !ifndef _Logic | ${_Logic}Select - !error "Cannot use Case without a preceding Select" - !endif - !ifdef ${_Logic}EndSelect ; This is set only after the first case - !ifndef ${_Logic}Else - !error "Cannot use Case following a CaseElse" - !endif - Goto ${${_Logic}EndSelect} ; Go to the EndSelect - ${${_Logic}Else}: ; Place the Else label - !undef ${_Logic}Else ; and remove it - !else - !define ${_Logic}EndSelect _LogicLib_Label_${LOGICLIB_COUNTER} ; Get a label for the EndSelect - !insertmacro _IncreaseCounter - !endif - !verbose pop - !macroend - !define CaseElse `!insertmacro _CaseElse` - !define Case_Else `!insertmacro _CaseElse` ; Compatibility with 2.2 and earlier - !define Default `!insertmacro _CaseElse` ; For the C-minded - - !macro _Select_Case _a - !verbose push - !verbose ${LOGICLIB_VERBOSITY} - ${CaseElse} ; Perform the CaseElse - !define ${_Logic}Else _LogicLib_Label_${LOGICLIB_COUNTER} ; Get a label for the next Else and perform the new Case - !insertmacro _IncreaseCounter - !insertmacro _== `${${_Logic}Select}` `${_a}` "" ${${_Logic}Else} - !verbose pop - !macroend - !define Case `!insertmacro _Case` - - !macro _Case2 _a _b - !verbose push - !verbose ${LOGICLIB_VERBOSITY} - ${CaseElse} ; Perform the CaseElse - !define ${_Logic}Else _LogicLib_Label_${LOGICLIB_COUNTER} ; Get a label for the next Else and perform the new Case - !insertmacro _IncreaseCounter - !insertmacro _== `${${_Logic}Select}` `${_a}` +2 "" - !insertmacro _== `${${_Logic}Select}` `${_b}` "" ${${_Logic}Else} - !verbose pop - !macroend - !define Case2 `!insertmacro _Case2` - - !macro _Case3 _a _b _c - !verbose push - !verbose ${LOGICLIB_VERBOSITY} - ${CaseElse} ; Perform the CaseElse - !define ${_Logic}Else _LogicLib_Label_${LOGICLIB_COUNTER} ; Get a label for the next Else and perform the new Case - !insertmacro _IncreaseCounter - !insertmacro _== `${${_Logic}Select}` `${_a}` +3 "" - !insertmacro _== `${${_Logic}Select}` `${_b}` +2 "" - !insertmacro _== `${${_Logic}Select}` `${_c}` "" ${${_Logic}Else} - !verbose pop - !macroend - !define Case3 `!insertmacro _Case3` - - !macro _Case4 _a _b _c _d - !verbose push - !verbose ${LOGICLIB_VERBOSITY} - ${CaseElse} ; Perform the CaseElse - !define ${_Logic}Else _LogicLib_Label_${LOGICLIB_COUNTER} ; Get a label for the next Else and perform the new Case - !insertmacro _IncreaseCounter - !insertmacro _== `${${_Logic}Select}` `${_a}` +4 "" - !insertmacro _== `${${_Logic}Select}` `${_b}` +3 "" - !insertmacro _== `${${_Logic}Select}` `${_c}` +2 "" - !insertmacro _== `${${_Logic}Select}` `${_d}` "" ${${_Logic}Else} - !verbose pop - !macroend - !define Case4 `!insertmacro _Case4` - - !macro _Case5 _a _b _c _d _e - !verbose push - !verbose ${LOGICLIB_VERBOSITY} - ${CaseElse} ; Perform the CaseElse - !define ${_Logic}Else _LogicLib_Label_${LOGICLIB_COUNTER} ; Get a label for the next Else and perform the new Case - !insertmacro _IncreaseCounter - !insertmacro _== `${${_Logic}Select}` `${_a}` +5 "" - !insertmacro _== `${${_Logic}Select}` `${_b}` +4 "" - !insertmacro _== `${${_Logic}Select}` `${_c}` +3 "" - !insertmacro _== `${${_Logic}Select}` `${_d}` +2 "" - !insertmacro _== `${${_Logic}Select}` `${_e}` "" ${${_Logic}Else} - !verbose pop - !macroend - !define Case5 `!insertmacro _Case5` - - !macro _EndSelect - !verbose push - !verbose ${LOGICLIB_VERBOSITY} - !ifndef _Logic | ${_Logic}Select - !error "Cannot use EndSelect without a preceding Select" - !endif - !ifdef ${_Logic}Else - ${${_Logic}Else}: ; Place the Else label - !undef ${_Logic}Else ; and remove it - !endif - !ifdef ${_Logic}EndSelect ; This won't be set if there weren't any cases - ${${_Logic}EndSelect}: ; Place the EndSelect - !undef ${_Logic}EndSelect ; and remove it - !endif - !undef ${_Logic}Select - !insertmacro _PopLogic - !verbose pop - !macroend - !define EndSelect `!insertmacro _EndSelect` - - !macro _Switch _a - !verbose push - !verbose ${LOGICLIB_VERBOSITY} - !insertmacro _PushLogic - !insertmacro _PushScope Switch ${_Logic} ; Keep a separate stack for switch data - !insertmacro _PushScope Break _LogicLib_Label_${LOGICLIB_COUNTER} ; Get a lable for beyond the end of the switch - !insertmacro _IncreaseCounter - !define ${_Switch}Var `${_a}` ; Remember the left hand side of the comparison - !tempfile ${_Switch}Tmp ; Create a temporary file - !define ${_Logic}Switch _LogicLib_Label_${LOGICLIB_COUNTER} ; Get a label for the end of the switch - !insertmacro _IncreaseCounter - Goto ${${_Logic}Switch} ; and go there - !verbose pop - !macroend - !define Switch `!insertmacro _Switch` - - !macro _Case _a - !verbose push - !verbose ${LOGICLIB_VERBOSITY} - !ifdef _Logic & ${_Logic}Select ; Check for an active Select - !insertmacro _Select_Case `${_a}` - !else ifndef _Switch ; If not then check for an active Switch - !error "Cannot use Case without a preceding Select or Switch" - !else - !define _label _LogicLib_Label_${LOGICLIB_COUNTER} ; Get a label for this case, - !insertmacro _IncreaseCounter - ${_label}: ; place it and add it's check to the temp file - !appendfile "${${_Switch}Tmp}" `!insertmacro _== $\`${${_Switch}Var}$\` $\`${_a}$\` ${_label} ""$\n` - !undef _label - !endif - !verbose pop - !macroend - - !macro _CaseElse - !verbose push - !verbose ${LOGICLIB_VERBOSITY} - !ifdef _Logic & ${_Logic}Select ; Check for an active Select - !insertmacro _Select_CaseElse - !else ifndef _Switch ; If not then check for an active Switch - !error "Cannot use Case without a preceding Select or Switch" - !else ifdef ${_Switch}Else ; Already had a default case? - !error "Cannot use CaseElse following a CaseElse" - !else - !define ${_Switch}Else _LogicLib_Label_${LOGICLIB_COUNTER} ; Get a label for the default case, - !insertmacro _IncreaseCounter - ${${_Switch}Else}: ; and place it - !endif - !verbose pop - !macroend - - !macro _EndSwitch - !verbose push - !verbose ${LOGICLIB_VERBOSITY} - !ifndef _Logic | ${_Logic}Switch - !error "Cannot use EndSwitch without a preceding Switch" - !endif - Goto ${_Break} ; Skip the jump table - ${${_Logic}Switch}: ; Place the end of the switch - !undef ${_Logic}Switch - !include "${${_Switch}Tmp}" ; Include the jump table - !delfile "${${_Switch}Tmp}" ; and clear it up - !ifdef ${_Switch}Else ; Was there a default case? - Goto ${${_Switch}Else} ; then go there if all else fails - !undef ${_Switch}Else - !endif - !undef ${_Switch}Tmp - !undef ${_Switch}Var - ${_Break}: ; Place the break label - !insertmacro _PopScope Break - !insertmacro _PopScope Switch - !insertmacro _PopLogic - !verbose pop - !macroend - !define EndSwitch `!insertmacro _EndSwitch` - -!endif ; LOGICLIB -!verbose 3 -!define LOGICLIB_VERBOSITY ${_LOGICLIB_VERBOSITY} -!undef _LOGICLIB_VERBOSITY -!verbose pop diff --git a/windowsRuntimeInstaller/StrRep.nsh b/windowsRuntimeInstaller/StrRep.nsh deleted file mode 100644 index 97eecdcd..00000000 --- a/windowsRuntimeInstaller/StrRep.nsh +++ /dev/null @@ -1,69 +0,0 @@ -############################################# -; StrRep - -!define StrRep "!insertmacro StrRep" -!macro StrRep output string old new - Push `${string}` - Push `${old}` - Push `${new}` - !ifdef __UNINSTALL__ - Call un.StrRep - !else - Call StrRep - !endif - Pop ${output} -!macroend - -!macro Func_StrRep un - Function ${un}StrRep - Exch $R2 ;new - Exch 1 - Exch $R1 ;old - Exch 2 - Exch $R0 ;string - Push $R3 - Push $R4 - Push $R5 - Push $R6 - Push $R7 - Push $R8 - Push $R9 - - StrCpy $R3 0 - StrLen $R4 $R1 - StrLen $R6 $R0 - StrLen $R9 $R2 - loop: - StrCpy $R5 $R0 $R4 $R3 - StrCmp $R5 $R1 found - StrCmp $R3 $R6 done - IntOp $R3 $R3 + 1 ;move offset by 1 to check the next character - Goto loop - found: - StrCpy $R5 $R0 $R3 - IntOp $R8 $R3 + $R4 - StrCpy $R7 $R0 "" $R8 - StrCpy $R0 $R5$R2$R7 - StrLen $R6 $R0 - IntOp $R3 $R3 + $R9 ;move offset by length of the replacement string - Goto loop - done: - - Pop $R9 - Pop $R8 - Pop $R7 - Pop $R6 - Pop $R5 - Pop $R4 - Pop $R3 - Push $R0 - Push $R1 - Pop $R0 - Pop $R1 - Pop $R0 - Pop $R2 - Exch $R1 - FunctionEnd -!macroend -!insertmacro Func_StrRep "" -!insertmacro Func_StrRep "un." diff --git a/windowsRuntimeInstaller/x64.nsh b/windowsRuntimeInstaller/x64.nsh deleted file mode 100644 index 2732ece7..00000000 --- a/windowsRuntimeInstaller/x64.nsh +++ /dev/null @@ -1,61 +0,0 @@ -; --------------------- -; x64.nsh -; --------------------- -; -; A few simple macros to handle installations on x64 machines. -; -; RunningX64 checks if the installer is running on a 64-bit OS. -; IsWow64 checks if the installer is a 32-bit application running on a 64-bit OS. -; -; ${If} ${RunningX64} -; MessageBox MB_OK "running on x64" -; ${EndIf} -; -; DisableX64FSRedirection disables file system redirection. -; EnableX64FSRedirection enables file system redirection. -; -; SetOutPath $SYSDIR -; ${DisableX64FSRedirection} -; File some.dll # extracts to C:\Windows\System32 -; ${EnableX64FSRedirection} -; File some.dll # extracts to C:\Windows\SysWOW64 -; - -!ifndef ___X64__NSH___ -!define ___X64__NSH___ - -!include LogicLib.nsh - - -!define IsWow64 `"" IsWow64 ""` -!macro _IsWow64 _a _b _t _f - !insertmacro _LOGICLIB_TEMP - System::Call kernel32::GetCurrentProcess()p.s - System::Call kernel32::IsWow64Process(ps,*i0s) - Pop $_LOGICLIB_TEMP - !insertmacro _!= $_LOGICLIB_TEMP 0 `${_t}` `${_f}` -!macroend - - -!define RunningX64 `"" RunningX64 ""` -!macro _RunningX64 _a _b _t _f - !if ${NSIS_PTR_SIZE} > 4 - !insertmacro LogicLib_JumpToBranch `${_t}` `${_f}` - !else - !insertmacro _IsWow64 `${_a}` `${_b}` `${_t}` `${_f}` - !endif -!macroend - - -!define DisableX64FSRedirection "!insertmacro DisableX64FSRedirection" -!macro DisableX64FSRedirection - System::Call kernel32::Wow64EnableWow64FsRedirection(i0) -!macroend - -!define EnableX64FSRedirection "!insertmacro EnableX64FSRedirection" -!macro EnableX64FSRedirection - System::Call kernel32::Wow64EnableWow64FsRedirection(i1) -!macroend - - -!endif # !___X64__NSH___ -- cgit v1.2.3