mirror of
https://github.com/WinampDesktop/winamp.git
synced 2025-05-11 22:30:24 -05:00
252 lines
6.0 KiB
NSIS
252 lines
6.0 KiB
NSIS
/*!ifndef NULLSOFT_WINAMP_UNINSTALL_BUNDLE_HEADER
|
|
!define NULLSOFT_WINAMP_UNINSTALL_BUNDLE_HEADER
|
|
|
|
!include "fileFunc.nsh"
|
|
!include ".\utils\wafuncs.nsh"
|
|
!include ".\utils\uninstallInfo.nsh"
|
|
!include ".\utils\sectionDescription.nsh"
|
|
|
|
!macro UninstallBundle_IsGroupEmpty __outputVar
|
|
Call ${INSTALL_TYPE_PREFIX}UninstallBundle_IsGroupEmpty
|
|
Pop "${__outputVar}"
|
|
!macroend
|
|
|
|
!define UninstallBundle_IsGroupEmpty "!insertmacro 'UninstallBundle_IsGroupEmpty'"
|
|
|
|
!macro UninstallBundle_GetDescriptionProvider __outputVar
|
|
GetFunctionAddress ${__outputVar} ${INSTALL_TYPE_PREFIX}UninstallBundle_DescriptionProvider
|
|
!macroend
|
|
|
|
!define UninstallBundle_GetDescriptionProvider "!insertmacro 'UninstallBundle_GetDescriptionProvider'"
|
|
|
|
!macro UninstallBundle_UninstallProgram __displayName __programName __uninstallParam __outputResult
|
|
Push "${__displayName}"
|
|
Push "${__uninstallParam}"
|
|
Push "${__programName}"
|
|
Call ${INSTALL_TYPE_PREFIX}UninstallBundle_UninstallProgram
|
|
Pop ${__outputResult}
|
|
!macroend
|
|
|
|
!define UninstallBundle_UninstallProgram "!insertmacro 'UninstallBundle_UninstallProgram'"
|
|
|
|
SectionGroup "${INSTALL_TYPE_PREFIX}$(MUI_UNTEXT_CONFIRM_TITLE)" IDX_UNINSTALL_BUNDLES_GROUP
|
|
Section "${INSTALL_TYPE_PREFIX}$(IDS_BUNDLE1_NAME)" IDX_UNINSTALL_WINAMP_REMOTE
|
|
${UninstallBundle_UninstallProgram} "${__SECTION__}" "Orb" "/S _?=$$INSTDIR" $0
|
|
SectionEnd
|
|
|
|
Section "${INSTALL_TYPE_PREFIX}$(IDS_BUNDLE2_NAME)" IDX_UNINSTALL_WINAMP_TOOLBAR
|
|
${UninstallBundle_UninstallProgram} "${__SECTION__}" "Winamp Toolbar" "/S _?=$$INSTDIR" $0
|
|
SectionEnd
|
|
|
|
Section "${INSTALL_TYPE_PREFIX}Winamp Detector Plug-in" IDX_UNINSTALL_BROWSER_PLUGIN
|
|
${UninstallBundle_UninstallProgram} "${__SECTION__}" "Winamp Detect" "/S _?=$$INSTDIR" $0
|
|
SectionEnd
|
|
|
|
Section "${INSTALL_TYPE_PREFIX}$(IDS_BUNDLE3_NAME)" IDX_UNINSTALL_EMUSIC
|
|
${UninstallBundle_UninstallProgram} "${__SECTION__}" "eMusic Promotion" "/S _?=$$INSTDIR" $0
|
|
SectionEnd
|
|
SectionGroupEnd
|
|
|
|
Function ${INSTALL_TYPE_PREFIX}UninstallBundle_InitializeSection
|
|
Exch $0
|
|
Exch 1
|
|
Exch $1
|
|
Push $2
|
|
Push $3
|
|
|
|
${UninstallInfo_FindProgramKey} $0 $2
|
|
${If} $2 == ""
|
|
SectionSetText $1 ""
|
|
SectionGetFlags $1 $2
|
|
IntOp $3 ${SF_SELECTED} ~
|
|
IntOp $2 $2 & $3
|
|
SectionSetFlags $1 $2
|
|
${Else}
|
|
${UninstallInfo_GetStringValue} $2 "DisplayName" $3
|
|
${If} $3 != ""
|
|
SectionSetText $1 $3
|
|
${EndIf}
|
|
SectionGetFlags $1 $2
|
|
IntOp $2 $2 | ${SF_SELECTED}
|
|
SectionSetFlags $1 $2
|
|
${EndIf}
|
|
|
|
Pop $3
|
|
Pop $2
|
|
Pop $1
|
|
Pop $0
|
|
FunctionEnd
|
|
|
|
!macro UninstallBundle_InitializeSection __sectionIndex __bundleName
|
|
Push "${__sectionIndex}"
|
|
Push "${__bundleName}"
|
|
Call ${INSTALL_TYPE_PREFIX}UninstallBundle_InitializeSection
|
|
!macroend
|
|
|
|
!define UninstallBundle_InitializeSection "!insertmacro 'UninstallBundle_InitializeSection'"
|
|
|
|
Function ${INSTALL_TYPE_PREFIX}UninstallBundle_InitializeGroup
|
|
${UninstallBundle_InitializeSection} ${IDX_UNINSTALL_WINAMP_TOOLBAR} "Winamp Toolbar"
|
|
${UninstallBundle_InitializeSection} ${IDX_UNINSTALL_BROWSER_PLUGIN} "Winamp Detect"
|
|
${UninstallBundle_InitializeSection} ${IDX_UNINSTALL_WINAMP_REMOTE} "Orb"
|
|
${UninstallBundle_InitializeSection} ${IDX_UNINSTALL_EMUSIC} "eMusic Promotion"
|
|
FunctionEnd
|
|
|
|
!define UninstallBundle_InitializeGroup "Call ${INSTALL_TYPE_PREFIX}UninstallBundle_InitializeGroup"
|
|
|
|
Function ${INSTALL_TYPE_PREFIX}UninstallBundle_IsGroupEmpty
|
|
Push $0
|
|
Push $1
|
|
Push $2
|
|
|
|
StrCpy $1 ${IDX_UNINSTALL_BUNDLES_GROUP}
|
|
${Do}
|
|
IntOp $1 $1 + 1
|
|
ClearErrors
|
|
SectionGetFlags $1 $0
|
|
${IfNot} ${Errors}
|
|
IntOp $2 $0 & ${SF_SECGRPEND}
|
|
${If} 0 != $2
|
|
StrCpy $0 "true"
|
|
${Break}
|
|
${Else}
|
|
IntOp $2 $0 & ${SF_SELECTED}
|
|
${If} 0 != $2
|
|
Push $3
|
|
SectionGetText $1 $3
|
|
Pop $3
|
|
StrCpy $0 "false"
|
|
${Break}
|
|
${EndIf}
|
|
${EndIf}
|
|
${Else}
|
|
StrCpy $0 "true"
|
|
${Break}
|
|
${EndIf}
|
|
${Loop}
|
|
Pop $2
|
|
Pop $1
|
|
Exch $0
|
|
FunctionEnd
|
|
|
|
Function ${INSTALL_TYPE_PREFIX}UninstallBundle_DescriptionProvider
|
|
Exch $0
|
|
Push $1
|
|
${Select} $0
|
|
${Case} ${IDX_UNINSTALL_WINAMP_TOOLBAR}
|
|
StrCpy $1 "Winamp Toolbar"
|
|
${Case} ${IDX_UNINSTALL_BROWSER_PLUGIN}
|
|
StrCpy $1 "Winamp Detect"
|
|
${Case} ${IDX_UNINSTALL_WINAMP_REMOTE}
|
|
StrCpy $1 "Orb"
|
|
${Case} ${IDX_UNINSTALL_EMUSIC}
|
|
StrCpy $1 "eMusic Promotion"
|
|
${CaseElse}
|
|
StrCpy $1 ""
|
|
${EndSelect}
|
|
|
|
${If} $1 != ""
|
|
Push $2
|
|
${UninstallInfo_FindProgramKey} $1 $2
|
|
${If} $2 != ""
|
|
${UninstallInfo_GetStringValue} $2 "winampDescription" $1
|
|
${If} $1 == ""
|
|
${UninstallInfo_GetStringValue} $2 "Comments" $1
|
|
${EndIf}
|
|
${Else}
|
|
StrCpy $1 ""
|
|
${EndIf}
|
|
Pop $2
|
|
${EndIf}
|
|
|
|
${If} $1 == ""
|
|
Push $0
|
|
Call un.GetSectionDescription
|
|
Pop $1
|
|
${EndIf}
|
|
|
|
Exch $1
|
|
Exch 1
|
|
Pop $0
|
|
FunctionEnd
|
|
|
|
Function ${INSTALL_TYPE_PREFIX}UninstallBundle_UninstallProgram
|
|
Exch $0
|
|
Exch 1
|
|
Exch $1
|
|
Exch 2
|
|
Exch $2
|
|
Push $3
|
|
Push $4
|
|
|
|
StrCpy $4 "$(IDS_UNINSTALL_BUNDLE_TEMPLATE)"
|
|
|
|
${UninstallInfo_FindProgramKey} $0 $3
|
|
${If} $3 != ""
|
|
${UninstallInfo_GetExpandableStringValue} $3 "winampUninstall" $0
|
|
${If} $0 == ""
|
|
${UninstallInfo_GetExpandableStringValue} $3 "UninstallString" $0
|
|
${If} $0 != ""
|
|
${AndIf} $1 != ""
|
|
|
|
${Path_UnquoteSpaces} $0 $0
|
|
${Path_RemoveBlanks} $0 $0
|
|
|
|
StrLen $2 "_?=$$INSTDIR"
|
|
StrLen $3 $1
|
|
${If} $3 >= $2
|
|
Push $4
|
|
StrCpy $4 $1 "" -$2
|
|
${If} $4 == "_?=$$INSTDIR"
|
|
IntOp $2 $3 - $2
|
|
StrCpy $1 $1 $2 0
|
|
${GetParent} $0 $2
|
|
${Path_UnquoteSpaces} $2 $2
|
|
StrCpy $1 "$1 _?=$2"
|
|
StrCpy $3 "deleteUninstaller"
|
|
${Else}
|
|
StrCpy $3 ""
|
|
${EndIf}
|
|
Pop $4
|
|
${Else}
|
|
StrCpy $3 ""
|
|
${EndIf}
|
|
StrCpy $0 "$\"$0$\" $1"
|
|
${EndIf}
|
|
${EndIf}
|
|
${Else}
|
|
StrCpy $0 ""
|
|
${EndIf}
|
|
|
|
${If} $0 != ""
|
|
ClearErrors
|
|
DetailPrint $4
|
|
SetDetailsPrint none
|
|
ExecWait '$0' $2
|
|
${IfNot} ${Errors}
|
|
${AndIf} $2 == 0
|
|
${If} $3 == "deleteUninstaller"
|
|
${Path_RemoveArgs} $0 $1
|
|
${Path_UnquoteSpaces} $1 $1
|
|
${Path_RemoveBlanks} $1 $1
|
|
Delete "$1"
|
|
${IfNot} ${Errors}
|
|
${GetParent} $1 $3
|
|
RMDir "$3"
|
|
${EndIf}
|
|
${EndIf}
|
|
${EndIf}
|
|
SetDetailsPrint lastused
|
|
${Else}
|
|
StrCpy $2 ""
|
|
${EndIf}
|
|
|
|
Pop $4
|
|
Pop $3
|
|
Exch $2
|
|
Exch 2
|
|
Pop $1
|
|
Pop $0
|
|
FunctionEnd
|
|
|
|
!endif ;NULLSOFT_WINAMP_UNINSTALL_BUNDLE_HEADER*/ |