tools/installer/nsis/includes/instdir.nsh
changeset 0 1918ee327afb
child 4 3b1da2848fc7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/installer/nsis/includes/instdir.nsh	Mon Jan 11 14:00:40 2010 +0000
@@ -0,0 +1,254 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+;; All rights reserved.
+;; Contact: Nokia Corporation (qt-info@nokia.com)
+;;
+;; This file is part of the tools applications of the Qt Toolkit.
+;;
+;; $QT_BEGIN_LICENSE:LGPL$
+;; No Commercial Usage
+;; This file contains pre-release code and may not be distributed.
+;; You may use this file in accordance with the terms and conditions
+;; contained in the Technology Preview License Agreement accompanying
+;; this package.
+;;
+;; GNU Lesser General Public License Usage
+;; Alternatively, this file may be used under the terms of the GNU Lesser
+;; General Public License version 2.1 as published by the Free Software
+;; Foundation and appearing in the file LICENSE.LGPL included in the
+;; packaging of this file.  Please review the following information to
+;; ensure the GNU Lesser General Public License version 2.1 requirements
+;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+;;
+;; In addition, as a special exception, Nokia gives you certain additional
+;; rights.  These rights are described in the Nokia Qt LGPL Exception
+;; version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+;;
+;; If you have questions regarding the use of this file, please contact
+;; Nokia at qt-info@nokia.com.
+;;
+;;
+;;
+;;
+;;
+;;
+;;
+;;
+;; $QT_END_LICENSE$
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+!ifndef INSTDIR_1
+  !macro INSTDIR_INITIALIZE
+    !define MUI_DIRECTORYPAGE_VARIABLE $${INSTDIR_0}_INSTDIR
+    !ifdef ${INSTDIR_0}_ValidateDirectory
+      !define MUI_PAGE_CUSTOMFUNCTION_LEAVE "${INSTDIR_0}_ValidateDirectoryFunc"
+    !endif
+    !insertmacro MUI_PAGE_DIRECTORY
+  !macroend
+  !macro INSTDIR_FUNCTIONS
+  !macroend
+  !macro INSTDIR_STARTUP
+  !macroend
+!else
+!macro INSTDIR_INITIALIZE
+  !define INSTDIR_INI_FILE "instdir.ini"
+  !define INSTDIR_0_DIRFIELD "Field 10"
+  !define INSTDIR_0_TEXTFIELD "Field 13"
+  !define INSTDIR_1_DIRFIELD "Field 7"
+  !define INSTDIR_1_TEXTFIELD "Field 11"
+  !define INSTDIR_2_DIRFIELD "Field 5"
+  !define INSTDIR_2_TEXTFIELD "Field 8"
+  !define INSTDIR_3_DIRFIELD "Field 3"
+  !define INSTDIR_3_TEXTFIELD "Field 6"
+  !define INSTDIR_4_DIRFIELD "Field 2"
+  !define INSTDIR_4_TEXTFIELD "Field 4"
+  !define INSTDIR_5_DIRFIELD "Field 9"
+  !define INSTDIR_5_TEXTFIELD "Field 12"
+  !define INSTDIR_DIRHEIGHT 18
+
+  Page custom InitInstDirs UpdateInstDirs
+  
+  LangString InstDirLicenseTitle ${LANG_ENGLISH} "Installation Directories"
+  LangString InstDirLicenseTitleDescription ${LANG_ENGLISH} "Select the directories where you want the software installed."
+!macroend
+
+!macro INSTDIR_FUNCTIONS
+  Function InitInstDirs
+    push $0
+    push $1
+    push $2
+    push $3
+    
+    !insertmacro MUI_HEADER_TEXT "$(InstDirLicenseTitle)" "$(InstDirLicenseTitleDescription)"
+    strcpy $0 "129"
+
+!ifdef INSTDIR_0
+    SectionGetFlags ${${INSTDIR_0}_SEC01} $1
+!ifdef ${INSTDIR_0}_SEC02
+    SectionGetFlags ${${INSTDIR_0}_SEC02} $3
+    IntOp $1 $1 | $3
+!endif
+    IntOp $2 $1 & 1 ;just care about the first flag
+    StrCpy $1 "READONLY"
+    StrCmp "$2" "1" +2
+      StrCpy $1 "DISABLED"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_0_TEXTFIELD}" "Flags" "$1"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_0_DIRFIELD}" "Flags" "$1"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_0_TEXTFIELD}" "Text" "${INSTDIR_0_TEXT}"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_0_DIRFIELD}" "State" $${INSTDIR_0}_INSTDIR
+!else
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_0_DIRFIELD}" "Type" "Unknown"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_0_TEXTFIELD}" "Type" "Unknown"
+    intop $0 $0 - ${INSTDIR_DIRHEIGHT}
+!endif
+!ifdef INSTDIR_1
+    SectionGetFlags ${${INSTDIR_1}_SEC01} $1
+!ifdef ${INSTDIR_1}_SEC02
+    SectionGetFlags ${${INSTDIR_1}_SEC02} $3
+    IntOp $1 $1 | $3
+!endif
+    IntOp $2 $1 & 1 ;just care about the first flag
+    StrCpy $1 "READONLY"
+    StrCmp "$2" "1" +2
+      StrCpy $1 "DISABLED"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_1_TEXTFIELD}" "Flags" "$1"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_1_DIRFIELD}" "Flags" "$1"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_1_TEXTFIELD}" "Text" "${INSTDIR_1_TEXT}"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_1_DIRFIELD}" "State" $${INSTDIR_1}_INSTDIR
+!else
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_1_DIRFIELD}" "Type" "Unknown"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_1_TEXTFIELD}" "Type" "Unknown"
+    intop $0 $0 - ${INSTDIR_DIRHEIGHT}
+!endif
+!ifdef INSTDIR_2
+    SectionGetFlags ${${INSTDIR_2}_SEC01} $1
+!ifdef ${INSTDIR_2}_SEC02
+    SectionGetFlags ${${INSTDIR_2}_SEC02} $3
+    IntOp $1 $1 | $3
+!endif
+    IntOp $2 $1 & 1 ;just care about the first flag
+    StrCpy $1 "READONLY"
+    StrCmp "$2" "1" +2
+      StrCpy $1 "DISABLED"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_2_TEXTFIELD}" "Flags" "$1"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_2_DIRFIELD}" "Flags" "$1"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_2_TEXTFIELD}" "Text" "${INSTDIR_2_TEXT}"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_2_DIRFIELD}" "State" $${INSTDIR_2}_INSTDIR
+!else
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_2_DIRFIELD}" "Type" "Unknown"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_2_TEXTFIELD}" "Type" "Unknown"
+    intop $0 $0 - ${INSTDIR_DIRHEIGHT}
+!endif
+!ifdef INSTDIR_3
+    SectionGetFlags ${${INSTDIR_3}_SEC01} $1
+!ifdef ${INSTDIR_3}_SEC02
+    SectionGetFlags ${${INSTDIR_3}_SEC02} $3
+    IntOp $1 $1 | $3
+!endif
+    IntOp $2 $1 & 1 ;just care about the first flag
+    StrCpy $1 "READONLY"
+    StrCmp "$2" "1" +2
+      StrCpy $1 "DISABLED"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_3_TEXTFIELD}" "Flags" "$1"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_3_DIRFIELD}" "Flags" "$1"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_3_TEXTFIELD}" "Text" "${INSTDIR_3_TEXT}"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_3_DIRFIELD}" "State" $${INSTDIR_3}_INSTDIR
+!else
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_3_DIRFIELD}" "Type" "Unknown"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_3_TEXTFIELD}" "Type" "Unknown"
+    intop $0 $0 - ${INSTDIR_DIRHEIGHT}
+!endif
+!ifdef INSTDIR_4
+    SectionGetFlags ${${INSTDIR_4}_SEC01} $1
+!ifdef ${INSTDIR_4}_SEC02
+    SectionGetFlags ${${INSTDIR_4}_SEC02} $3
+    IntOp $1 $1 | $3
+!endif
+    IntOp $2 $1 & 1 ;just care about the first flag
+    StrCpy $1 "READONLY"
+    StrCmp "$2" "1" +2
+      StrCpy $1 "DISABLED"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_4_TEXTFIELD}" "Flags" "$1"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_4_DIRFIELD}" "Flags" "$1"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_4_TEXTFIELD}" "Text" "${INSTDIR_4_TEXT}"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_4_DIRFIELD}" "State" $${INSTDIR_4}_INSTDIR
+!else
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_4_DIRFIELD}" "Type" "Unknown"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_4_TEXTFIELD}" "Type" "Unknown"
+    intop $0 $0 - ${INSTDIR_DIRHEIGHT}
+!endif
+!ifdef INSTDIR_5
+    SectionGetFlags ${${INSTDIR_5}_SEC01} $1
+!ifdef ${INSTDIR_5}_SEC02
+    SectionGetFlags ${${INSTDIR_5}_SEC02} $3
+    IntOp $1 $1 | $3
+!endif
+    IntOp $2 $1 & 1 ;just care about the first flag
+    StrCpy $1 "READONLY"
+    StrCmp "$2" "1" +2
+      StrCpy $1 "DISABLED"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_5_TEXTFIELD}" "Flags" "$1"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_5_DIRFIELD}" "Flags" "$1"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_5_TEXTFIELD}" "Text" "${INSTDIR_5_TEXT}"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_5_DIRFIELD}" "State" $${INSTDIR_5}_INSTDIR
+!else
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_5_DIRFIELD}" "Type" "Unknown"
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_5_TEXTFIELD}" "Type" "Unknown"
+    intop $0 $0 - ${INSTDIR_DIRHEIGHT}
+!endif
+
+    !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "Field 1" "Bottom" "$0"
+    !insertmacro MUI_INSTALLOPTIONS_DISPLAY "${INSTDIR_INI_FILE}"
+
+    pop $3
+    pop $2
+    pop $1
+    pop $0
+  FunctionEnd
+
+  Function UpdateInstDirs
+!ifdef INSTDIR_0
+    !insertmacro MUI_INSTALLOPTIONS_READ $${INSTDIR_0}_INSTDIR "${INSTDIR_INI_FILE}" "${INSTDIR_0_DIRFIELD}" "State"
+    !ifdef ${INSTDIR_0}_ValidateDirectory
+      call ${INSTDIR_0}_ValidateDirectoryFunc
+    !endif
+!endif
+!ifdef INSTDIR_1
+    !insertmacro MUI_INSTALLOPTIONS_READ $${INSTDIR_1}_INSTDIR "${INSTDIR_INI_FILE}" "${INSTDIR_1_DIRFIELD}" "State"
+    !ifdef ${INSTDIR_1}_ValidateDirectory
+      call ${INSTDIR_1}_ValidateDirectoryFunc
+    !endif
+!endif
+!ifdef INSTDIR_2
+    !insertmacro MUI_INSTALLOPTIONS_READ $${INSTDIR_2}_INSTDIR "${INSTDIR_INI_FILE}" "${INSTDIR_2_DIRFIELD}" "State"
+    !ifdef ${INSTDIR_2}_ValidateDirectory
+      call ${INSTDIR_2}_ValidateDirectoryFunc
+    !endif
+!endif
+!ifdef INSTDIR_3
+    !insertmacro MUI_INSTALLOPTIONS_READ $${INSTDIR_3}_INSTDIR "${INSTDIR_INI_FILE}" "${INSTDIR_3_DIRFIELD}" "State"
+    !ifdef ${INSTDIR_3}_ValidateDirectory
+      call ${INSTDIR_3}_ValidateDirectoryFunc
+    !endif
+!endif
+!ifdef INSTDIR_4
+    !insertmacro MUI_INSTALLOPTIONS_READ $${INSTDIR_4}_INSTDIR "${INSTDIR_INI_FILE}" "${INSTDIR_4_DIRFIELD}" "State"
+    !ifdef ${INSTDIR_4}_ValidateDirectory
+      call ${INSTDIR_4}_ValidateDirectoryFunc
+    !endif
+!endif
+!ifdef INSTDIR_5
+    !insertmacro MUI_INSTALLOPTIONS_READ $${INSTDIR_5}_INSTDIR "${INSTDIR_INI_FILE}" "${INSTDIR_5_DIRFIELD}" "State"
+    !ifdef ${INSTDIR_5}_ValidateDirectory
+      call ${INSTDIR_5}_ValidateDirectoryFunc
+    !endif
+!endif
+  FunctionEnd
+!macroend
+
+!macro INSTDIR_STARTUP
+  !insertmacro MUI_INSTALLOPTIONS_EXTRACT "${INSTDIR_INI_FILE}"
+!macroend
+
+!endif ;ifndef INSTDIR_1