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