diff --git a/Examples/functions.htm b/Examples/functions.htm deleted file mode 100644 index 69560840..00000000 --- a/Examples/functions.htm +++ /dev/null @@ -1,614 +0,0 @@ -
-;------------------------------------------------------------------------------ -; GetParent -; input, top of stack (i.e. C:\Program Files\Poop) -; output, top of stack (replaces, with i.e. C:\Program Files) -; modifies no other variables. -; -; Usage: -; Push "C:\Program Files\Directory\Whatever" -; Call GetParent -; Pop $0 -; ; at this point $0 will equal "C:\Program Files\Directory" - - -Function GetParent - Exch $0 ; old $0 is on top of stack - Push $1 - Push $2 - StrCpy $1 -1 - loop: - StrCpy $2 $0 1 $1 - StrCmp $2 "" exit - StrCmp $2 "\" exit - IntOp $1 $1 - 1 - Goto loop - exit: - StrCpy $0 $0 $1 - Pop $2 - Pop $1 - Exch $0 ; put $0 on top of stack, restore $0 to original value -FunctionEnd - -;------------------------------------------------------------------------------ -; TrimNewlines -; input, top of stack (i.e. whatever$\r$\n) -; output, top of stack (replaces, with i.e. whatever) -; modifies no other variables. -; -Function TrimNewlines - Exch $0 - Push $1 - Push $2 - StrCpy $1 0 - loop: - IntOp $1 $1 - 1 - StrCpy $2 $0 1 $1 - StrCmp $2 "$\r" loop - StrCmp $2 "$\n" loop - IntOp $1 $1 + 1 - - StrCpy $0 $0 $1 - Pop $2 - Pop $1 - Exch $0 -FunctionEnd - - - -;------------------------------------------------------------------------------ -; GetParameters -; input, none -; output, top of stack (replaces, with i.e. whatever) -; modifies no other variables. - -Function GetParameters - Push $0 - Push $1 - Push $2 - StrCpy $0 $CMDLINE 1 - StrCpy $1 '"' - StrCpy $2 1 - StrCmp $0 '"' loop - StrCpy $1 ' ' ; we're scanning for a space instead of a quote - loop: - StrCpy $0 $CMDLINE 1 $2 - StrCmp $0 $1 loop2 - StrCmp $0 "" loop2 - IntOp $2 $2 + 1 - Goto loop - loop2: - IntOp $2 $2 + 1 - StrCpy $0 $CMDLINE 1 $2 - StrCmp $0 " " loop2 - StrCpy $0 $CMDLINE "" $2 - Pop $2 - Pop $1 - Exch $0 -FunctionEnd - -;------------------------------------------------------------------------------ -; StrStr -; input, top of stack = string to search for -; top of stack-1 = string to search in -; output, top of stack (replaces with the portion of the string remaining) -; modifies no other variables. -; -; Usage: -; Push "this is a long ass string" -; Push "ass" -; Call StrStr -; Pop $0 -; ($0 at this point is "ass string") - -Function StrStr - Exch $1 ; st=haystack,old$1, $1=needle - Exch ; st=old$1,haystack - Exch $2 ; st=old$1,old$2, $2=haystack - Push $3 - Push $4 - Push $5 - StrLen $3 $1 - StrCpy $4 0 - ; $1=needle - ; $2=haystack - ; $3=len(needle) - ; $4=cnt - ; $5=tmp - loop: - StrCpy $5 $2 $3 $4 - StrCmp $5 $1 done - StrCmp $5 "" done - IntOp $4 $4 + 1 - Goto loop - done: - StrCpy $1 $2 "" $4 - Pop $5 - Pop $4 - Pop $3 - Pop $2 - Exch $1 -FunctionEnd - --
-;------------------------------------------------------------------------------ -; GetWindowsVersion -; -; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/ -; Returns on top of stack -; -; Windows Version (95, 98, ME, NT x.x, 2000) -; or -; '' (Unknown Windows Version) -; -; Usage: -; Call GetWindowsVersion -; Pop $0 -; ; at this point $0 is "NT 4.0" or whatnot - -Function GetWindowsVersion - Push $0 - Push $9 - ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion - StrCmp $0 "" 0 lbl_winnt - ; we are not NT. - ReadRegStr $0 HKLM SOFTWARE\Microsoft\Windows\CurrentVersion VersionNumber - - StrCpy $9 $0 1 - StrCmp $9 '4' 0 lbl_error - - StrCpy $9 $0 3 - - StrCmp $9 '4.0' lbl_win32_95 - StrCmp $9 '4.9' lbl_win32_ME lbl_win32_98 - - lbl_win32_95: - StrCpy $0 '95' - Goto lbl_done - - lbl_win32_98: - StrCpy $0 '98' - Goto lbl_done - - lbl_win32_ME: - StrCpy $0 'ME' - Goto lbl_done - - lbl_winnt: - - StrCpy $9 $0 1 - StrCmp $9 '3' lbl_winnt_x - StrCmp $9 '4' lbl_winnt_x - StrCmp $9 '5' lbl_winnt_5 lbl_error - - lbl_winnt_x: - StrCpy $0 "NT $0" 6 - Goto lbl_done - - lbl_winnt_5: - Strcpy $0 '2000' - Goto lbl_done - - lbl_error: - Strcpy $0 '' - lbl_done: - Pop $9 - Exch $0 -FunctionEnd - -;------------------------------------------------------------------------------ -; GetIEVersion -; -; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/ -; Returns on top of stack -; 1-6 (Installed IE Version) -; or -; '' (IE is not installed) -; -; Usage: -; Call GetIEVersion -; Pop $0 -; ; at this point $0 is "5" or whatnot - -Function GetIEVersion - Push $0 - ClearErrors - ReadRegStr $0 HKLM "Software\Microsoft\Internet Explorer" "Version" - IfErrors lbl_123 lbl_456 - - lbl_456: ; ie 4+ - Strcpy $0 $0 1 - Goto lbl_done - - lbl_123: ; older ie version - ClearErrors - ReadRegStr $0 HKLM "Software\Microsoft\Internet Explorer" "IVer" - IfErrors lbl_error - - StrCpy $0 $0 3 - StrCmp $0 '100' lbl_ie1 - StrCmp $0 '101' lbl_ie2 - StrCmp $0 '102' lbl_ie2 - - StrCpy $0 '3' ; default to ie3 if not 100, 101, or 102. - Goto lbl_done - lbl_ie1: - StrCpy $0 '1' - Goto lbl_done - lbl_ie2: - StrCpy $0 '2' - Goto lbl_done - lbl_error: - StrCpy $0 '' - lbl_done: - Exch $0 -FunctionEnd - - -;------------------------------------------------------------------------------ -; IsFlashInstalled -; -; By Yazno, http://yazno.tripod.com/powerpimpit/ -; Returns on top of stack -; 0 (Flash is not installed) -; or -; 1 (Flash is installed) -; -; Usage: -; Call IsFlashInstalled -; Pop $0 -; ; $0 at this point is "1" or "0" - -Function IsFlashInstalled - Push $0 - ClearErrors - ReadRegStr $0 HKCR "CLSID\{D27CDB6E-AE6D-11cf-96B8-444553540000}" "" - IfErrors lbl_na - StrCpy $0 1 - Goto lbl_end - lbl_na: - StrCpy $0 0 - lbl_end: - Exch $0 -FunctionEnd - - --
;------------------------------------------------------------------------------ -; un.RemoveSharedDLL -; -; Decrements a shared DLLs reference count, and removes if necessary. -; Use by passing one item on the stack (the full path of the DLL). -; Note: for use in the main installer (not the uninstaller), rename the -; function to RemoveSharedDLL. -; -; Usage: -; Push $SYSDIR\myDll.dll -; Call un.RemoveShareDLL -; - -Function un.RemoveSharedDLL - Exch $9 - Push $0 - ReadRegDword $0 HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $9 - StrCmp $0 "" remove - IntOp $0 $0 - 1 - IntCmp $0 0 rk rk uk - rk: - DeleteRegValue HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $9 - goto Remove - uk: - WriteRegDWORD HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $9 $0 - Goto noremove - remove: - Delete /REBOOTOK $9 - noremove: - Pop $0 - Pop $9 -FunctionEnd - - -;------------------------------------------------------------------------------ -; AddSharedDLL -; -; Increments a shared DLLs reference count. -; Use by passing one item on the stack (the full path of the DLL). -; -; Usage: -; Push $SYSDIR\myDll.dll -; Call AddSharedDLL -; - -Function AddSharedDLL - Exch $9 - Push $0 - ReadRegDword $0 HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $9 - IntOp $0 $0 + 1 - WriteRegDWORD HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $9 $0 - Pop $0 - Pop $9 -FunctionEnd - - -;------------------------------------------------------------------------------ -; UpgradeDLL (macro) -; -; Updates a DLL (or executable) based on version resource information. -; -; Input: param = input source file. -; top of stack = full path on system to install file to. -; -; Output: none (removes full path from stack) -; -; Usage: -; -; Push "$SYSDIR\atl.dll" -; !insertmacro UpgradeDLL "atl.dll" -; - -!macro UpgradeDLL DLL_NAME - Exch $0 - Push $1 - Push $2 - Push $3 - Push $4 - ClearErrors - GetDLLVersionLocal ${DLL_NAME} $1 $2 - GetDLLVersion $0 $3 $4 - IfErrors upgrade_${DLL_NAME} - IntCmpU $1 $3 "" noupgrade_${DLL_NAME} upgrade_${DLL_NAME} - IntCmpU $2 $4 noupgrade_${DLL_NAME} noupgrade_${DLL_NAME} - upgrade_${DLL_NAME}: - UnRegDLL $0 - File /oname=$0 ${DLL_NAME} - RegDLL $0 - noupgrade_${DLL_NAME}: - Pop $4 - Pop $3 - Pop $2 - Pop $1 - Pop $0 -!macroend - --
;------------------------------------------------------------------------------ -; GetWinampInstPath -; -; takes no parameters -; returns with the winamp install directory on the stack (it will be -; an empty string if winamp is not detected). -; -; modifies no other variables -; -; Usage: -; Call GetWinampInstPath -; Pop $0 -; MessageBox MB_OK "Winamp installed at: $0" - -Function GetWinampInstPath - Push $0 - Push $1 - Push $2 - ReadRegStr $0 HKLM \ - "Software\Microsoft\Windows\CurrentVersion\Uninstall\Winamp" \ - "UninstallString" - StrCmp $0 "" fin - - StrCpy $1 $0 1 0 ; get firstchar - StrCmp $1 '"' "" getparent - ; if first char is ", let's remove "'s first. - StrCpy $0 $0 "" 1 - StrCpy $1 0 - rqloop: - StrCpy $2 $0 1 $1 - StrCmp $2 '"' rqdone - StrCmp $2 "" rqdone - IntOp $1 $1 + 1 - Goto rqloop - rqdone: - StrCpy $0 $0 $1 - getparent: - ; the uninstall string goes to an EXE, let's get the directory. - StrCpy $1 -1 - gploop: - StrCpy $2 $0 1 $1 - StrCmp $2 "" gpexit - StrCmp $2 "\" gpexit - IntOp $1 $1 - 1 - Goto gploop - gpexit: - StrCpy $0 $0 $1 - - StrCmp $0 "" fin - IfFileExists $0\winamp.exe fin - StrCpy $0 "" - fin: - Pop $2 - Pop $1 - Exch $0 -FunctionEnd - - -;------------------------------------------------------------------------------ -; GetWinampVisPath -; -; requires $INSTDIR to point to the Winamp directory. -; sets $OUTDIR with vis plug-in path -; -; modifies no other variables - -Function GetWinampVisPath - ReadINIStr $OUTDIR $INSTDIR\winamp.ini Winamp VisDir - StrCmp $OUTDIR "" NoINISetting - IfFileExists $OUTDIR Good - NoINISetting: - StrCpy $OUTDIR $INSTDIR\Plugins - Good: -FunctionEnd - - -;------------------------------------------------------------------------------ -; GetWinampDSPPath -; -; requires $INSTDIR to point to the Winamp directory. -; sets $OUTDIR with dsp plug-in path -; -; modifies no other variables - -Function GetWinampDSPPath - ReadINIStr $OUTDIR $INSTDIR\winamp.ini Winamp DSPDir - StrCmp $OUTDIR "" NoINISetting - IfFileExists $OUTDIR Good - NoINISetting: - StrCpy $OUTDIR $INSTDIR\Plugins - Good: -FunctionEnd - -;------------------------------------------------------------------------------ -; GetWinampSkinPath -; -; requires $INSTDIR to point to the Winamp directory. -; sets $OUTDIR with skin plug-in path -; -; modifies no other variables - -Function GetWinampSkinPath - ReadINIStr $OUTDIR $INSTDIR\winamp.ini Winamp SkinDir - StrCmp $OUTDIR "" NoINISetting - IfFileExists $OUTDIR Good - NoINISetting: - StrCpy $OUTDIR $INSTDIR\Skins - Good: -FunctionEnd - -;------------------------------------------------------------------------------ -; CloseWinamp -; -; Closes all running instances of Winamp 1.x/2.x -; -; modifies no other variables -Function CloseWinamp - Push $0 - loop: - FindWindow $0 "Winamp v1.x" - IntCmp $0 0 done - SendMessage $0 16 0 0 - Sleep 100 - Goto loop - done: - Pop $0 -FunctionEnd - - --
-;------------------------------------------------------------------------------ -; InstallNetscapePlugin -; -; Replace 'mynetscapeplugin.dll' with the name of your DLL to extract. -; -; (pretty much untested, but should work) -; -; you may want to add is-netscape-running and error checking (if the file isn't writable) - -Function InstallNetscapePlugin - Push $OUTDIR - Push $0 - Push $1 - StrCpy $0 0 - outer_loop: - EnumRegKey $1 HKLM "Software\Netscape\Netscape Navigator" $0 - StrCmp $1 "" abort - ReadRegStr $1 HKLM "Software\Netscape\Netscape Navigator\$1\Main" "Plugins Directory" - StrCmp $1 "" abort - SetOutPath $1 - File mynetscapeplugin.dll - IntOp $0 $0 + 1 - Goto outer_loop - abort: - Pop $1 - Pop $0 - Pop $OUTDIR -FunctionEnd - -;------------------------------------------------------------------------------ -; un.RemoveNetscapePlugin -; -; input: top of stack = dll name of plugin to remove -; output: none -; -; Usage: -; Push mynetscapepluging.dll -; Call un.RemoveNetscapePlugin -; -; you may want to add is-netscape-running and error checking (if the delete doesn't work). - - -Function un.RemoveNetscapePlugin - Exch $2 - Push $0 - Push $1 - StrCpy $0 0 - outer_loop: - EnumRegKey $1 HKLM "Software\Netscape\Netscape Navigator" $0 - StrCmp $1 "" abort - ReadRegStr $1 HKLM "Software\Netscape\Netscape Navigator\$1\Main" "Plugins Directory" - StrCmp $1 "" abort - Delete /REBOOTOK $1\$2 - IntOp $0 $0 + 1 - Goto outer_loop - abort: - Pop $1 - Pop $0 - Pop $2 -FunctionEnd - - -