2024-09-24 14:54:57 +02:00

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*/