diff -r 22486c9c7b15 -r 378360dbbdba releasing/cbrtools/group/cbr.preconfigure.nsh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/releasing/cbrtools/group/cbr.preconfigure.nsh Wed Jun 30 11:35:58 2010 +0800 @@ -0,0 +1,288 @@ +# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of the License "Eclipse Public License v1.0" +# which accompanies this distribution, and is available +# at the URL "http://www.eclipse.org/legal/epl-v10.html". +# +# Initial Contributors: +# Nokia Corporation - initial contribution. +# +# Contributors: +# +# Description: +# + +########################################################################################### +# CBR Tools handling +# +!define RELTOOLSKEY "SOFTWARE\Symbian\Release Tools" +!define CBRTOOLSKEY "SOFTWARE\Symbian\Symbian CBR Tools" +!define PRODUCT_UNINST_KEY "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" + +VAR CBRUNINSTALL + +!macro CBRToolsNSISManualUninstall inVersion inPath + SetShellVarContext current + RMDir /r "$SMPROGRAMS\Symbian CBR Tools\${inVersion}" + RMDir "$SMPROGRAMS\Symbian CBR Tools" ; delete if empty + RMDir /r "${inPath}" + DeleteRegKey HKLM "${PRODUCT_UNINST_KEY}\Symbian CBR Tools ${inVersion}" + DeleteRegKey HKLM "${CBRTOOLSKEY}\${inVersion}" + DeleteRegKey /ifempty HKLM "${CBRTOOLSKEY}" + Push "${inPath}" + !insertmacro PathTypeRmvFromEnvVar "path" "${inPath}" "" + !insertmacro SetShellVarCtxt +!macroend + + +!macro CBRToolsISManualUninstall inVersion inPath inUninstallKey + RMDir /r "$SMPROGRAMS\Symbian OS Release Tools\" + RMDir /r "${inPath}" + ${If} "${inUninstallKey}" != "" + DeleteRegKey HKLM "${PRODUCT_UNINST_KEY}\${inUninstallKey}" + ${EndIf} + DeleteRegKey HKLM "${RELTOOLSKEY}\${inVersion}" + DeleteRegKey /ifempty HKLM "${RELTOOLSKEY}" + DeleteRegKey /ifempty HKLM "SOFTWARE\Symbian" + Push "${inPath}" + !insertmacro PathTypeRmvFromEnvVar "path" "${inPath}" "" +!macroend + + +Function CBRToolsPreConfigureFunction +exch $0 +push $1 # counter +push $2 # version +push $3 # uninstall string +push $4 +push $5 + +push $6 + +push $R0 # $ReplaceVer +push $R1 # $ReplaceKey + +push $R2 # nsis installations found +push $R3 # install shield installations found + StrCpy $CBRUNINSTALL "no" +StrCpy $5 1 +SectionGetFlags $0 $R0 +IntOp $R0 $R0 & ${SF_SELECTED} +${If} $R0 == ${SF_SELECTED} + + StrCpy $R0 "Following CBR Tools version(s) are already installed: " + StrCpy $R1 "" + StrCpy $R2 "" + StrCpy $R3 "" + StrCpy $6 "" + StrCpy $1 0 + loop: #check if there is install shield installation + EnumRegKey $2 HKLM "${RELTOOLSKEY}" $1 + StrCmp $2 "" checkNsis + IntOp $1 $1 + 1 + readregstr $3 HKLM "${RELTOOLSKEY}\$2" "Path" + StrCpy $R3 "1" + StrCpy $R0 "$R0$\r$\nVersion $2 is already installed in $3." + GoTo loop + + checkNsis: # check if there is NSIS installation + StrCpy $4 $1 + StrCpy $1 0 + loop1: + EnumRegKey $2 HKLM "${CBRTOOLSKEY}" $1 + StrCmp $2 "" done + IntOp $1 $1 + 1 + readregstr $3 HKLM "${CBRTOOLSKEY}\$2" "Path" + StrCpy $R2 "$R2-$2-" + StrCpy $R0 "$R0$\r$\nVersion $2 is already installed in $3." + GoTo loop1 + + done: + IntOp $1 $1 + $4 + ${If} $1 > 0 + + ${If} $SILENT == "true" + ${AndIf} $DIALOGS == "false" + !insertmacro LogStopMessage "CBRTools (Release Tools) already installed. Stopping installation.\ + $\r$\nPlease uninstall CBRTools (Rlease Tools) before continuing " "${OTHER_ERROR}" + ${Else} + MessageBox MB_YESNOCANCEL "$R0$\r$\n\ + Do you want to uninstall previous installation(s) before continuing?" IDYES continue IDNO finish + ${EndIf} + + cancel: + StrCpy $5 0 + GoTo finish + + + continue: + StrCpy $CBRUNINSTALL "yes" + + ${EndIf} + finish: +${EndIf} + StrCpy $0 "$5" + pop $R3 + pop $R2 + pop $R1 + pop $R0 + pop $6 + pop $5 + pop $4 + pop $3 + pop $2 + pop $1 + exch $0 +FunctionEnd + +Function CBRToolsPreviousUninstall +exch $0 +push $1 # counter +push $2 # version +push $3 # uninstall string +push $4 +push $5 + +push $6 + +push $R0 # $ReplaceVer +push $R1 # $ReplaceKey + +push $R2 # nsis installations found +push $R3 # install shield installations found + +${If} $CBRUNINSTALL == "yes" + #uninstall + #Uninstall first all NSIS installations + StrCpy $1 0 + EnumRegKey $2 HKLM "${CBRTOOLSKEY}" $1 + ${While} $2 != "" + ReadRegStr $3 HKLM "${PRODUCT_UNINST_KEY}\Symbian CBR Tools $2" "UninstallString" + ReadRegStr $4 HKLM "${CBRTOOLSKEY}\$2" "Path" + ${If} $3 == "" #no uninstaller found + StrCpy $6 "error" + ${Else} + IfFileExists $3 +2 0 + StrCpy $6 "error" + ${EndIf} + + ${If} $SILENT == "false" + ${OrIf} $DIALOGS == "true" + Banner::show /NOUNLOAD /set 76 "Removing previous installation $2..." "Please wait." + ${EndIf} + IfFileExists "$4\reltools.ini" 0 +3 + CreateDirectory "$TEMP\sitk\$2\" + CopyFiles /SILENT "$4\reltools.ini" "$TEMP\sitk\$2\" + ${If} $6 == "error" + !insertmacro CBRToolsNSISManualUninstall "$2" "$4" + ${Else} + ClearErrors + ExecWait '"$3" /S _?=$4\' ;$3: Uninstaller $4:installation path + IfErrors +2 0 + RMDir /r $4 ; delete installation folder + ${EndIf} + IfFileExists "$TEMP\sitk\$2\reltools.ini" 0 +4 + CreateDirectory "$4" + CopyFiles /SILENT "$TEMP\sitk\$2\reltools.ini" "$4" + RMDir /r "$TEMP\sitk\$2\" + ${If} $SILENT == "false" + ${OrIf} $DIALOGS == "true" + Banner::destroy + ${EndIf} + + #IntOp $1 $1 + 1 + EnumRegKey $2 HKLM "${CBRTOOLSKEY}" $1 + ${EndWhile} + + loop: #check if there is install shield installation + + + StrCpy $1 0 + StrCpy $R3 0 + EnumRegKey $2 HKLM "${RELTOOLSKEY}" $1 + ${While} $2 != "" + ReadRegStr $3 HKLM "${RELTOOLSKEY}\$2" "Path" + + CreateDirectory "$TEMP\sitk\InstallShield\$2\" + IfFileExists "$3\reltools.ini" 0 +2 + CopyFiles /SILENT "$3\reltools.ini" "$TEMP\sitk\InstallShield\$2\" + FileOpen $4 "$TEMP\sitk\InstallShield\$2\dir.txt" "w" + FileWrite $4 "$3" + FileClose $4 + StrCpy $R3 "1" + IntOp $1 $1 + 1 + EnumRegKey $2 HKLM "${RELTOOLSKEY}" $1 + ${EndWhile} + + + ${If} $R3 == "1" #Look for install shield installations to uninstall + StrCpy $1 0 + StrCpy $6 "" + EnumRegKey $2 HKLM "${PRODUCT_UNINST_KEY}" $1 + ${While} $2 != "" + ReadRegStr $3 HKLM "${PRODUCT_UNINST_KEY}\$2" "DisplayName" + ${If} $3 == "Release Tools" + ${ExitWhile} + ${EndIf} + IntOp $1 $1 + 1 + EnumRegKey $2 HKLM "${PRODUCT_UNINST_KEY}" $1 + ${EndWhile} + + ${If} $2 == "" + StrCpy $6 "error" + ${ElseIf} $3 == "Release Tools" + ReadRegStr $3 HKLM "${PRODUCT_UNINST_KEY}\$2" "UninstallString" + ${If} $3 == "" + StrCpy $6 "error" + ${Else} + MessageBox MB_OK "InstallShield will be launched, please select and follow the wizard" /SD IDOK + ExecWait $3 + ${EndIf} + ${EndIf} + + FindFirst $0 $4 "$TEMP\sitk\InstallShield\*" + ${While} $4 != "" + ${If} $4 != "." + ${AndIf} $4 != ".." + IfFileExists "$TEMP\sitk\InstallShield\$4\dir.txt" 0 notfound + + FileOpen $3 "$TEMP\sitk\InstallShield\$4\dir.txt" "r" + FileRead $3 $1 + FileClose $3 + + ${If} $6 == "error" + !insertmacro CBRToolsISManualUninstall "$4" "$1" "$2" + ${EndIf} + + IfFileExists "$TEMP\sitk\InstallShield\$4\reltools.ini" 0 notfound + CreateDirectory "$1" + CopyFiles /SILENT "$TEMP\sitk\InstallShield\$4\reltools.ini" "$1" + notfound: + + ${EndIf} + FindNext $0 $4 + ${EndWhile} + FindClose $0 + + ${EndIf} + #uninstal +${EndIF} + + pop $R3 + pop $R2 + pop $R1 + pop $R0 + pop $6 + pop $5 + pop $4 + pop $3 + pop $2 + pop $1 + pop $0 +FunctionEnd + +!macro CBRToolsPreconfigure inSectionName + push "${inSectionName}" + call CBRToolsPreConfigureFunction +!macroend