| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | !macro StrPointer FindStr SearchStr Pointer |
| | |
| | |
| | |
| | |
| | StrLen $R2 "${SearchStr}" |
| | StrLen $R4 "${FindStr}" |
| | StrCpy $R5 0 |
| | ${if} $R2 == 0 |
| | ${orif} $R4 == 0 |
| | Goto NotFound |
| | ${endif} |
| | IntCmp $R4 $R2 loopA NotFound |
| | loopA: |
| | StrCpy $R3 "${FindStr}" $R2 $R5 |
| | StrCmp $R3 "${SearchStr}" Found |
| | IntOp $R5 $R5 + 1 |
| | IntCmp $R4 $R5 loopA NotFound |
| | Goto loopA |
| | Found: |
| | StrCpy ${Pointer} $R5 |
| | Goto done |
| | NotFound: |
| | StrCpy ${Pointer} "-1" |
| | done: |
| |
|
| | !macroend |
| | |
| | |
| |
|
| | Function StrPoint |
| | !insertmacro StrPointer $String $Search $Pointer |
| | FunctionEnd |
| |
|
| | |
| |
|
| | !macro RevStrPointer FindStr SearchStr Pointer |
| | |
| | |
| | |
| | |
| | StrLen $R2 ${SearchStr} |
| | StrLen $R4 ${FindStr} |
| | ${if} $R2 == 0 |
| | ${orif} $R4 == 0 |
| | Goto NotFound |
| | ${endif} |
| | IntCmp $R4 $R2 loopA NotFound |
| | StrCpy $R5 "-$R2" |
| | loopA: |
| | StrCpy $R3 ${FindStr} $R2 $R5 |
| | StrCmp $R3 ${SearchStr} Found |
| | IntOp $R5 $R5 - 1 |
| | IntCmp "$R5" "-$R4" loopA NotFound |
| | Goto loopA |
| | Found: |
| | StrCpy ${Pointer} $R5 |
| | Goto done |
| | NotFound: |
| | StrCpy ${Pointer} "+1" |
| | done: |
| |
|
| | !macroend |
| | |
| | |
| |
|
| | !macro AppPreSuff AppPre AppSuff |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | SetShellVarContext current |
| | StrCpy $String "$APPDATA" |
| | Var /GLOBAL APPDATemp |
| | StrCpy $APPDATemp "$APPDATA" |
| | ${If} $MultiUser.Privileges == "Admin" |
| | ${OrIf} $MultiUser.Privileges == "Power" |
| | SetShellVarContext all |
| | ${endif} |
| | StrCpy $Search "\" |
| | Call StrPoint |
| | IntOp $Pointer $Pointer + 1 |
| | StrCpy $String $String "" $Pointer |
| | StrCpy $0 $Pointer |
| | Call StrPoint |
| | IntOp $0 $0 + $Pointer |
| | StrCpy ${AppPre} $APPDATemp $0 |
| | IntOp $Pointer $Pointer + 1 |
| | StrCpy $String $String "" $Pointer |
| | Call StrPoint |
| | IntOp $Pointer $Pointer + 1 |
| | StrCpy ${AppSuff} $String "" $Pointer |
| |
|
| | !macroend |
| |
|
| | |
| |
|
| | Function un.GetParentA |
| | |
| | |
| |
|
| | Exch $R0 |
| | Push $R1 |
| | Push $R2 |
| | Push $R3 |
| | StrCpy $R1 0 |
| | StrLen $R2 $R0 |
| | loop: |
| | IntOp $R1 $R1 + 1 |
| | IntCmp $R1 $R2 get 0 get |
| | StrCpy $R3 $R0 1 -$R1 |
| | StrCmp $R3 "\" get |
| | Goto loop |
| | get: |
| | StrCpy $R0 $R0 -$R1 |
| | Pop $R3 |
| | Pop $R2 |
| | Pop $R1 |
| | Exch $R0 |
| | |
| | FunctionEnd |
| |
|
| | |
| |
|
| | Function un.GetUsers |
| | |
| |
|
| | StrCpy $R3 "" |
| | Push "$PROFILE" |
| | Call un.GetParentA |
| | Pop $R2 |
| | StrCpy $R2 "$R2" |
| | FindFirst $R0 $R1 "$R2\*" |
| | StrCmp $R1 "" findend 0 |
| | findloop: |
| | IfFileExists "$R2\$R1\*.*" 0 notDir |
| | StrCmp $R1 "." notDir |
| | StrCmp $R1 ".." notDir |
| | StrCmp $R1 "All Users" notDir |
| | StrCmp $R1 "Default User" notDir |
| | StrCmp $R1 "All Users.WINNT" notDir |
| | StrCmp $R1 "Default User.WINNT" notDir |
| | StrCpy $R3 "$R3|$R1" |
| | notDir: |
| | FindNext $R0 $R1 |
| | StrCmp $R1 "" findend 0 |
| | Goto findloop |
| | findend: |
| | FindClose $R0 |
| | |
| | FunctionEnd |
| |
|
| | |
| |
|
| | Function un.StrPoint |
| | !insertmacro StrPointer $String $Search $Pointer |
| | FunctionEnd |
| |
|
| | |
| |
|
| | !macro UnAppPreSuff AppPre AppSuff |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | SetShellVarContext current |
| | StrCpy $String "$APPDATA" |
| | StrCpy $APPDATemp "$APPDATA" |
| | ${if} $MultiUser.Privileges == "Admin" |
| | ${orif} $MultiUser.Privileges == "Power" |
| | SetShellVarContext all |
| | ${endif} |
| | StrCpy $Search "\" |
| | Call un.StrPoint |
| | IntOp $Pointer $Pointer + 1 |
| | StrCpy $String $String "" $Pointer |
| | StrCpy $0 $Pointer |
| | Call un.StrPoint |
| | IntOp $0 $0 + $Pointer |
| | StrCpy ${AppPre} $APPDATemp $0 |
| | IntOp $Pointer $Pointer + 1 |
| | StrCpy $String $String "" $Pointer |
| | Call un.StrPoint |
| | IntOp $Pointer $Pointer + 1 |
| | StrCpy ${AppSuff} $String "" $Pointer |
| |
|
| | !macroend |
| |
|
| | |
| |
|
| | Function un.DelAppPathSub |
| | |
| |
|
| | |
| | Push $R0 |
| | Push $R1 |
| | Push $R2 |
| | Push $R3 |
| | Call un.GetUsers |
| | StrCpy $UserList $R3 "" 1 |
| | Pop $R3 |
| | Pop $R2 |
| | Pop $R1 |
| | Pop $R0 |
| | |
| | |
| | loop: |
| | StrCpy $String "$UserList" |
| | StrCpy $Search "|" |
| | Call un.StrPoint |
| | StrCmp $Pointer "-1" ready |
| | StrCpy $0 $UserList $Pointer |
| | IntOp $Pointer $Pointer + 1 |
| | StrCpy $UserList $UserList "" $Pointer |
| | |
| | |
| | RMDir /r "$AppPre\$0\$AppSuff\$AppSubfolder" |
| | Goto loop |
| | ready: |
| | StrCpy $0 $UserList |
| | RMDir /r "$AppPre\$0\$AppSuff\$AppSubfolder" |
| | |
| | FunctionEnd |
| |
|
| | |
| | |
| |
|
| | Function TrimQuotes |
| | Exch $R0 |
| | Push $R1 |
| |
|
| | StrCpy $R1 $R0 1 |
| | StrCmp $R1 `"` 0 +2 |
| | StrCpy $R0 $R0 `` 1 |
| | StrCpy $R1 $R0 1 -1 |
| | StrCmp $R1 `"` 0 +2 |
| | StrCpy $R0 $R0 -1 |
| |
|
| | Pop $R1 |
| | Exch $R0 |
| | FunctionEnd |
| |
|
| | !macro _TrimQuotes Input Output |
| | Push `${Input}` |
| | Call TrimQuotes |
| | Pop ${Output} |
| | !macroend |
| | !define TrimQuotes `!insertmacro _TrimQuotes` |
| |
|