-Function StrStr
+!ifndef __PREFIX__
+ !define __PREFIX__ ""
+!endif
+
+
+; StrStr
+
+Function ${__PREFIX__}StrStr
/*After this point:
------------------------------------------
$R0 = SubString (input)
FunctionEnd
-
; GetParameters
; input, none
; output, top of stack (replaces, with e.g. whatever)
; modifies no other variables.
-Function GetParameters
+Function ${__PREFIX__}GetParameters
Push $R0
Push $R1
Push $R2
FunctionEnd
-
; GetParameterValue
; Chris Morgan<cmorgan@alum.wpi.edu> 5/10/2004
; -Updated 4/7/2005 to add support for retrieving a command line switch
;$R4 - result from StrStr calls
;$R5 - search for ' ' or '"'
-Function GetParameterValue
+Function ${__PREFIX__}GetParameterValue
Exch $R0 ; get the top of the stack(default parameter) into R0
Exch ; exchange the top of the stack(default) with
; the second in the stack(parameter to search for)
Strlen $R2 $R1+2 ; store the length of the search string into R2
- Call GetParameters ; get the command line parameters
- Pop $R3 ; store the command line string in R3
+ Call ${__PREFIX__}GetParameters ; get the command line parameters
+ Pop $R3 ; store the command line string in R3
# search for quoted search string
StrCpy $R5 '"' ; later on we want to search for a open quote
Push $R3 ; push the 'search in' string onto the stack
Push '"/$R1=' ; push the 'search for'
- Call StrStr ; search for the quoted parameter value
+ Call ${__PREFIX__}StrStr ; search for the quoted parameter value
Pop $R4
StrCpy $R4 $R4 "" 1 ; skip over open quote character, "" means no maxlen
StrCmp $R4 "" "" next ; if we didn't find an empty string go to next
# search for non-quoted search string
- StrCpy $R5 ' ' ; later on we want to search for a space since we
- ; didn't start with an open quote '"' we shouldn't
- ; look for a close quote '"'
- Push $R3 ; push the command line back on the stack for searching
- Push '/$R1=' ; search for the non-quoted search string
- Call StrStr
+ StrCpy $R5 ' ' ; later on we want to search for a space since we
+ ; didn't start with an open quote '"' we shouldn't
+ ; look for a close quote '"'
+ Push $R3 ; push the command line back on the stack for searching
+ Push '/$R1=' ; search for the non-quoted search string
+ Call ${__PREFIX__}StrStr
Pop $R4
; $R4 now contains the parameter string starting at the search string,
StrCpy $R0 $R4 "" $R2 ; copy commandline text beyond parameter into $R0
# search for the next parameter so we can trim this extra text off
Push $R0
- Push $R5 ; search for either the first space ' ', or the first
- ; quote '"'
- ; if we found '"/output' then we want to find the
- ; ending ", as in '"/output=somevalue"'
- ; if we found '/output' then we want to find the first
- ; space after '/output=somevalue'
- Call StrStr ; search for the next parameter
+ Push $R5 ; search for either the first space ' ', or the first
+ ; quote '"'
+ ; if we found '"/output' then we want to find the
+ ; ending ", as in '"/output=somevalue"'
+ ; if we found '/output' then we want to find the first
+ ; space after '/output=somevalue'
+ Call ${__PREFIX__}StrStr ; search for the next parameter
Pop $R4
StrCmp $R4 "" done ; if 'somevalue' is missing, we are done
StrLen $R4 $R4 ; get the length of 'somevalue' so we can copy this
; See if the parameter was specified as a command line switch, like '/output'
check_for_switch:
- Push $R3 ; push the command line back on the stack for searching
- Push '/$R1' ; search for the non-quoted search string
- Call StrStr
+ Push $R3 ; push the command line back on the stack for searching
+ Push '/$R1' ; search for the non-quoted search string
+ Call ${__PREFIX__}StrStr
Pop $R4
- StrCmp $R4 "" done ; if we didn't find anything then use the default
- StrCpy $R0 "" ; otherwise copy in an empty string since we found the
- ; parameter, just didn't find a value
+ StrCmp $R4 "" done ; if we didn't find anything then use the default
+ StrCpy $R0 "" ; otherwise copy in an empty string since we found the
+ ; parameter, just didn't find a value
done:
Pop $R5
Exch $R0 ; put the value in $R0 at the top of the stack
FunctionEnd
-!macro GetCommandlineParameter param default var
- Push "${param}" ; push the search string onto the stack
- Push "${default}" ; push a default value onto the stack
- Call GetParameterValue
- Pop ${var}
-!macroend
+
+; Wrapper macros
+
+!if "${__PREFIX__}" != "un."
+ !macro GetCommandlineParameter param default var
+ Push "${param}" ; push the search string onto the stack
+ Push "${default}" ; push a default value onto the stack
+ Call GetParameterValue
+ Pop ${var}
+ !macroend
+!else
+ !macro un.GetCommandlineParameter param default var
+ Push "${param}" ; push the search string onto the stack
+ Push "${default}" ; push a default value onto the stack
+ Call un.GetParameterValue
+ Pop ${var}
+ !macroend
+!endif
+
+
+!undef __PREFIX__
!include `StdUtils.nsh`
!include `parameters.nsh`
+;Uninstaller
+!define __PREFIX__ "un."
+!include `parameters.nsh`
+
;--------------------------------
;Installer Attributes
;Uninstaller
!define MUI_WELCOMEPAGE_TITLE_3LINES
!define MUI_FINISHPAGE_TITLE_3LINES
+!define MUI_PAGE_CUSTOMFUNCTION_PRE un.CheckForcedUninstall
!insertmacro MUI_UNPAGE_WELCOME
+!define MUI_PAGE_CUSTOMFUNCTION_PRE un.CheckForcedUninstall
!insertmacro MUI_UNPAGE_CONFIRM
UninstPage Custom un.LockedListShow
!insertmacro MUI_UNPAGE_INSTFILES
Quit
${EndIf}
- !insertmacro MUI_LANGDLL_DISPLAY
+ !insertmacro GetCommandlineParameter "Update" "?" $R0
+ ${If} "$R0" == "?"
+ !insertmacro MUI_LANGDLL_DISPLAY
+ ${EndIf}
; --------
Quit
${EndIf}
- !insertmacro MUI_LANGDLL_DISPLAY
-
+ !insertmacro un.GetCommandlineParameter "Force" "?" $R0
+ ${If} "$R0" == "?"
+ !insertmacro MUI_LANGDLL_DISPLAY
+ ${EndIf}
+
; --------
UserInfo::GetAccountType
;--------------------------------
-;UAC initialization
+;GUI initialization
;--------------------------------
Function MyGuiInit
Function CheckForUpdate
!insertmacro GetCommandlineParameter "Update" "?" $R0
- StrCmp $R0 "?" 0 EnableUpdateMode
+ ${IfNotThen} "$R0" == "?" ${|} Goto EnableUpdateMode ${|}
+
+ ${IfThen} "$INSTDIR" == "" ${|} Return ${|}
+ ${IfThen} "$INSTDIR" == "$EXEDIR" ${|} Return ${|}
+ ${IfNotThen} ${FileExists} "$INSTDIR\LameXP.exe" ${|} Return ${|}
- StrCmp "$INSTDIR" "" 0 +2
- Return
- IfFileExists "$INSTDIR\*.*" +2
- Return
- StrCmp "$EXEDIR" "$INSTDIR" 0 +2
- Return
- IfFileExists "$INSTDIR\LameXP.exe" +2
- Return
+ ;StrCmp "$INSTDIR" "" 0 +2
+ ;Return
+ ;IfFileExists "$INSTDIR\*.*" +2
+ ;Return
+ ;StrCmp "$EXEDIR" "$INSTDIR" 0 +2
+ ;Return
+ ;IfFileExists "$INSTDIR\LameXP.exe" +2
+ ;Return
EnableUpdateMode:
EnableWindow $R1 0
FunctionEnd
+Function un.CheckForcedUninstall
+ !insertmacro un.GetCommandlineParameter "Force" "?" $R0
+ ${IfNotThen} "$R0" == "?" ${|} Abort ${|}
+FunctionEnd
+
;--------------------------------
;Check For Pre-Release