Index: win_installer/src/final.ini
===================================================================
diff -u
--- win_installer/src/final.ini (revision 0)
+++ win_installer/src/final.ini (revision 3e0afea3eb6fc82e9bb97b1374c29caa67439d87)
@@ -0,0 +1,17 @@
+[Settings]
+NumFields=2
+
+[Field 1]
+Type=Label
+Left=19
+Top=11
+Right=197
+Bottom=30
+Text="LAMS Configuration Completed.\r\n\r\n"
+
+[Field 2]
+Type=Label
+Left=19
+Top=26
+Right=218
+Bottom=47
Index: win_installer/src/lams_components.ini
===================================================================
diff -u
--- win_installer/src/lams_components.ini (revision 0)
+++ win_installer/src/lams_components.ini (revision 3e0afea3eb6fc82e9bb97b1374c29caa67439d87)
@@ -0,0 +1,44 @@
+[Settings]
+NumFields=5
+
+[Field 1]
+Type=Label
+Left=27
+Top=20
+Right=169
+Bottom=29
+Text=Label
+
+[Field 2]
+Type=Label
+Left=27
+Top=29
+Right=169
+Bottom=38
+Text=Label
+
+[Field 3]
+Type=Label
+Left=27
+Top=39
+Right=169
+Bottom=48
+Text=
+
+[Field 4]
+Type=Label
+Left=10
+Top=2
+Right=291
+Bottom=14
+Text=LAMS 2.0.1 Full Install
+
+[Field 5]
+;InstallOptions Editor Metadata (DO NOT EDIT): locked=true
+Type=CheckBox
+Left=10
+Top=70
+Right=268
+Bottom=80
+Text=Include jsMath (Optional web component for maths symbol display)
+State=0
Index: win_installer/src/language-pack.nsi
===================================================================
diff -u -r02b483b6d63fa339986f430c759387a02abdf354 -r3e0afea3eb6fc82e9bb97b1374c29caa67439d87
--- win_installer/src/language-pack.nsi (.../language-pack.nsi) (revision 02b483b6d63fa339986f430c759387a02abdf354)
+++ win_installer/src/language-pack.nsi (.../language-pack.nsi) (revision 3e0afea3eb6fc82e9bb97b1374c29caa67439d87)
@@ -120,8 +120,7 @@
SectionIn RO
- # write this language pack version to registry
- WriteRegStr HKLM "${REG_HEAD}" "language_pack" $VERSION_INT
+
Detailprint 'Writing Language pack version ${VERSION} to registry: "${REG_HEAD}"'
setoutpath "$INSTDIR\zip"
@@ -144,6 +143,9 @@
; Finally, add rows in the database (lams_supported_locale) for all new language files
call updateDatabase
+ # write this language pack version to registry
+ WriteRegStr HKLM "${REG_HEAD}" "language_pack" $VERSION_INT
+
DetailPrint "LAMS Language Pack ${VERSION} install successfull"
SectionEnd
Index: win_installer/src/updateLocales.sql
===================================================================
diff -u -r02b483b6d63fa339986f430c759387a02abdf354 -r3e0afea3eb6fc82e9bb97b1374c29caa67439d87
--- win_installer/src/updateLocales.sql (.../updateLocales.sql) (revision 02b483b6d63fa339986f430c759387a02abdf354)
+++ win_installer/src/updateLocales.sql (.../updateLocales.sql) (revision 3e0afea3eb6fc82e9bb97b1374c29caa67439d87)
@@ -43,6 +43,6 @@
FROM locale_temp t WHERE t.combined NOT IN
(SELECT CONCAT_WS(',',l.language_iso_code,l.country_iso_code) FROM lams_supported_locale l));
-UPDATE lams_configuration set config_value='2007-02-09' WHERE config_key='DictionaryDateCreated';
+UPDATE lams_configuration set config_value='2007-03-02' WHERE config_key='DictionaryDateCreated';
drop table if exists locale_temp;
Index: win_installer/src/updater.nsi
===================================================================
diff -u
--- win_installer/src/updater.nsi (revision 0)
+++ win_installer/src/updater.nsi (revision 3e0afea3eb6fc82e9bb97b1374c29caa67439d87)
@@ -0,0 +1,2173 @@
+/****************************************************************
+ * Copyright (C) 2006 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+/* $$Id$$ */
+
+/**
+ * updater.nsi is actually an updater/installer/language-pack. There are 2
+ * possibilites:
+ * 1) If LAMS 2.x is installed and this is a newer version, the updater will be
+ * run
+ * 2) If there is no LAMS 2.x installation, a full install will take place
+ *
+ * Builds to win_installer\build\LAMS-updater-$VERSION.exe
+ * You must change the $VERSION to comply with this version (Line 49 approx)
+ * Change the LANGUAGE_PACK_VERSION To the date you compile YYYY-MM-DD
+ * Change the DATE_TIME_STAMP to the same as can be found in lams_common\db\sql\insert_windows_config_data.sql
+ */
+
+# includes
+!include "TextFunc.nsh"
+!include "Functions.nsh"
+!include "MUI.nsh"
+!include "LogicLib.nsh"
+!define ArrayNoTemp4
+!include "Array.nsh"
+
+# functions from TextFunc.nsh
+!insertmacro FileJoin
+!insertmacro LineFind
+
+# constants
+!define VERSION "2.0.1"
+!define LANGUAGE_PACK_VERSION "2007-03-02"
+!define DATE_TIME_STAMP "200703021200"
+!define SERVER_VERSION_NUMBER "${VERSION}.${DATE_TIME_STAMP}"
+!define BASE_VERSION "2.0"
+!define SOURCE_JBOSS_HOME "D:\jboss-4.0.2" ; location of jboss where lams was deployed
+!define REG_HEAD "Software\LAMS Foundation\LAMSv2"
+
+# installer settings
+!define MUI_ICON "..\graphics\lams2.ico"
+!define MUI_UNICON "..\graphics\lams2.ico"
+Name "LAMS ${VERSION}"
+;BrandingText "LAMS ${VERSION} -- built on ${__TIMESTAMP__}"
+BrandingText "LAMS ${VERSION} -- built on ${__DATE__} ${__TIME__}"
+OutFile "..\build\LAMS-updater-${VERSION}.exe"
+InstallDir "C:\lams"
+InstallDirRegKey HKLM "${REG_HEAD}" ""
+LicenseForceSelection radiobuttons "I Agree" "I Do Not Agree"
+InstProgressFlags smooth
+
+
+# set warning when cancelling install
+!define MUI_ABORTWARNING
+
+# set welcome page
+!define MUI_WELCOMEPAGE_TITLE "LAMS ${VERSION} Install Wizard"
+!define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of LAMS ${VERSION}.\r\n\r\n\
+ Please ensure you have a copy of MySQL 5.x installed and running, and Java JDK version 1.5.x. or 1.6.x\r\n\r\n\
+ Click Next to continue."
+
+
+# set instfiles page to wait when done
+!define MUI_FINISHPAGE_NOAUTOCLOSE
+!define MUI_UNFINISHPAGE_NOAUTOCLOSE
+
+# display finish page stuff
+!define MUI_FINISHPAGE_RUN $INSTDIR\lams-start.exe
+!define MUI_FINISHPAGE_RUN_TEXT "Start LAMS now"
+;!define MUI_FINISHPAGE_TEXT "The LAMS Server has been successfully installed on your computer."
+!define MUI_FINISHPAGE_SHOWREADME $INSTDIR\readme.txt
+!define MUI_FINISHPAGE_SHOWREADME_TEXT "Open the readme file"
+!define MUI_FINISHPAGE_LINK "Visit LAMS Community"
+!define MUI_FINISHPAGE_LINK_LOCATION "http://www.lamscommunity.org"
+
+# installer screen progression
+!insertmacro MUI_PAGE_WELCOME
+!insertmacro MUI_PAGE_LICENSE "..\license.txt"
+Page custom PreComponents PostComponents
+!define MUI_PAGE_CUSTOMFUNCTION_LEAVE DirectoryLeave
+!define MUI_PAGE_CUSTOMFUNCTION_PRE skipPage
+!insertmacro MUI_PAGE_DIRECTORY
+Page custom PreMySQLConfig PostMySQLConfig
+Page custom PreLAMSConfig PostLAMSConfig
+Page custom PreLAMS2Config PostLAMS2Config
+Page custom PreWildfireConfig PostWildfireConfig
+Page custom PreFinal PostFinal
+!insertmacro MUI_PAGE_INSTFILES
+!insertmacro MUI_PAGE_FINISH
+
+# uninstaller screens
+!insertmacro MUI_UNPAGE_WELCOME
+UninstPage custom un.PreUninstall un.PostUninstall
+!insertmacro MUI_UNPAGE_CONFIRM
+!insertmacro MUI_UNPAGE_INSTFILES
+!insertmacro MUI_UNPAGE_FINISH
+
+
+# supported translations
+!insertmacro MUI_LANGUAGE "English" # first language is the default language
+
+
+# reserve files
+#
+ReserveFile "lams.ini"
+ReserveFile "lams2.ini"
+ReserveFile "mysql.ini"
+ReserveFile "wildfire.ini"
+ReserveFile "lams_components.ini"
+ReserveFile "final.ini"
+!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
+!insertmacro MUI_RESERVEFILE_LANGDLL
+
+# variables
+#
+Var MYSQL_DIR
+Var MYSQL_ROOT_PASS
+Var DB_NAME
+Var DB_USER
+Var DB_PASS
+Var JDK_DIR
+Var LAMS_DOMAIN
+Var LAMS_PORT
+Var LAMS_LOCALE
+Var LAMS_REPOSITORY
+Var LAMS_USER
+Var LAMS_PASS
+Var WILDFIRE_DOMAIN
+Var WILDFIRE_USER
+Var WILDFIRE_PASS
+Var WINTEMP
+Var RETAIN_DIR
+Var RETAIN_FILES
+Var IS_UPDATE
+Var INCLUDE_JSMATH
+Var TOOL_SIG
+
+
+#LANGUAGE PACK VARIABLES #####
+Var UPDATE_LANGUAGES
+Var LAMS_DIR
+Var VERSION_INT
+Var SQL_QUERY
+Var FOLDER_FLAG
+Var OLD_VERSION
+${Array} RF_FOLDERS
+${Array} CS_FOLDERS
+${Array} FS_FOLDERS
+##############################
+
+# installer sections
+SectionGroup "LAMS 2.0.1 Update (Requires LAMS 2.0)" update
+
+ Section !lamsCore
+ ${if} $IS_UPDATE == "1"
+ Detailprint "Installing LAMS ${VERSION} core"
+
+ ; Backing up existing lams installation
+ call backupLams
+
+ ; Updating the the core lams jars/wars
+ call updateCoreJarsWars
+
+ ; Updating lams-central.war
+ call updateLamsCentral
+
+ ; Updating lams-www.war
+ call updateLamswww
+
+ ; Updating application.xml
+ call updateApplicationXML
+
+ ; Updating the database to support version
+ call updateCoreDatabase
+ ${endif}
+ SectionEnd
+
+ Section !lamsTools
+
+ ${if} $IS_UPDATE == "1"
+ Detailprint "Installing LAMS ${VERSION} tools"
+
+ ; Generating the deploy.xml of the tools to support this version
+ ; Then Calls deploy tools
+ call createAndDeployTools
+
+
+ # RUNNING THE LANGUAGE PACK ##################
+
+
+ call languagePackInit
+
+ ${if} $UPDATE_LANGUAGES == 1
+ ; copy language files from LAMS projects to a folder in $INSTDIR
+ call copyProjects
+
+ ; get the language files locations specific to this server from the database
+ ; unpack to $INSTDIR\library\llidx
+ call copyllid
+
+ ; Finally, add rows in the database (lams_supported_locale) for all new language files
+ call updateDatabase
+
+ # write this language pack version to registry
+ Detailprint 'Writing Language pack version ${LANGUAGE_PACK_VERSION} to registry: "${LANGUAGE_PACK_VERSION}"'
+ WriteRegStr HKLM "${REG_HEAD}" "language_pack" $VERSION_INT
+
+ DetailPrint "LAMS Language Pack ${LANGUAGE_PACK_VERSION} install successfull"
+ ${endif}
+ ################################################
+ ${endif}
+ SectionEnd
+
+SectionGroupEnd
+
+
+SectionGroup "LAMS 2.0.1 Full Install" fullInstall
+ Section "JBoss 4.0.2" jboss
+ ${if} $IS_UPDATE == "0"
+ DetailPrint "Setting up JBoss 4.0.2"
+ SetOutPath $INSTDIR
+ File /a /r /x all /x minimal /x robyn /x log /x tmp /x work /x jsMath.war ${SOURCE_JBOSS_HOME}
+ ; Configuring jboss.jar
+; Copy jboss-cache.jar, jgroups.jar from server/all/lib to server/default/lib
+copyfiles "$INSTDIR\jboss-4.0.2\server\all\lib\jboss-cache.jar" "$INSTDIR\jboss-4.0.2\server\default\lib"
+copyfiles "$INSTDIR\jboss-4.0.2\server\all\lib\jgroups.jar" "$INSTDIR\jboss-4.0.2\server\default\lib"
+ ${endif}
+ SectionEnd
+
+ Section "LAMS ${VERSION}" lams
+ ${if} $IS_UPDATE == "0"
+ Detailprint "Installing LAMS ${VERSION}"
+
+ SetOutPath $INSTDIR
+
+ ${if} $RETAIN_FILES == "1"
+ Createdirectory "$WINTEMP\lams"
+ CopyFiles /silent $INSTDIR\backup "$WINTEMP\lams"
+ DetailPrint "$WINTEMP\lams\backup"
+ ${endif}
+
+ Call DeployConfig
+ Call ImportDatabase
+
+ CreateDirectory "$INSTDIR\temp"
+ CreateDirectory "$INSTDIR\dump"
+ CreateDirectory "$LAMS_REPOSITORY"
+
+ # Log mode is set to INFO in this template
+ SetOutPath "$INSTDIR\jboss-4.0.2\server\default\conf"
+ File /a "..\templates\log4j.xml"
+
+ Call WriteRegEntries
+
+ SetOutPath $INSTDIR
+ File /a "..\build\lams-start.exe"
+ File /a "..\build\lams-stop.exe"
+ File /a "..\license.txt"
+ File /a "..\license-wrapper.txt"
+ File /a "..\readme.txt"
+ Call SetupStartMenu
+
+ ${if} $RETAIN_FILES == "1"
+ Call OverWriteRetainedFiles
+ ${endif}
+
+ WriteUninstaller "$INSTDIR\lams-uninstall.exe"
+ ${endif}
+ SectionEnd
+
+ Section "Install as Service" service
+ ${if} $IS_UPDATE == "0"
+ DetailPrint "Setting up lams ${VERSION} as a service."
+ SetOutPath "$INSTDIR\jboss-4.0.2\bin"
+ File /a "..\wrapper-windows-x86-32-3.2.3\bin\wrapper.exe"
+ File /a "/oname=$INSTDIR\jboss-4.0.2\bin\InstallLAMS-NT.bat" "..\wrapper-windows-x86-32-3.2.3\bin\InstallTestWrapper-NT.bat"
+ File /a "/oname=$INSTDIR\jboss-4.0.2\bin\UninstallLAMS-NT.bat" "..\wrapper-windows-x86-32-3.2.3\bin\UninstallTestWrapper-NT.bat"
+ SetOutPath "$INSTDIR\jboss-4.0.2\lib"
+ File /a "..\wrapper-windows-x86-32-3.2.3\lib\wrapper.dll"
+ File /a "..\wrapper-windows-x86-32-3.2.3\lib\wrapper.jar"
+ CreateDirectory "$INSTDIR\jboss-4.0.2\conf"
+ CopyFiles "$INSTDIR\wrapper.conf" "$INSTDIR\jboss-4.0.2\conf\wrapper.conf"
+ CreateDirectory "$INSTDIR\jboss-4.0.2\logs"
+ nsExec::ExecToStack '$INSTDIR\jboss-4.0.2\bin\InstallLAMS-NT.bat'
+ Pop $0
+ ${If} $0 == 0
+ DetailPrint "LAMSv2 successfully setup as a service. ($0)"
+ ${Else}
+ DetailPrint "LAMSv2 was not setup as a service. ($0)"
+ MessageBox MB_OK|MB_ICONEXCLAMATION "LAMSv2 was not installed as a service. However you may start LAMS by double-clicking $INSTDIR\jboss-4.0.2\bin\run.bat."
+ ${EndIf}
+ ${endif}
+ SectionEnd
+SectionGroupEnd
+
+SectionGroup "jsMath (optional)"
+
+ Section "jsMath (expanded)" jsmathe
+ ${if} $INCLUDE_JSMATH == 1
+ DetailPrint "Including jsMath in LAMS ${VERSION}"
+ SetOutPath "$TEMP"
+ File /a "..\..\jsmath\build\lib\jsMath.war"
+ CreateDirectory "$INSTDIR\jboss-4.0.2\server\default\deploy\jsMath.war"
+ SetOutPath "$INSTDIR\jboss-4.0.2\server\default\deploy\jsMath.war"
+ DetailPrint "$JDK_DIR\bin\jar xf $TEMP\jsMath.war"
+ DetailPrint "Expanding jsMath.war... This may take several minutes"
+ nsExec::ExecToStack "$JDK_DIR\bin\jar xf $TEMP\jsMath.war"
+ Pop $0
+ Pop $1
+ ${If} $0 != 0
+ DetailPrint "Failed to expand jsMath.war."
+ DetailPrint "Error: $1"
+ ${EndIf}
+ Delete "$TEMP\jsMath.war"
+ ${endif}
+ SectionEnd
+SectionGroupEnd
+
+
+# functions
+#
+
+Function .onInit
+
+ strcpy $IS_UPDATE 0
+
+ # Check the current version installed (if any)
+ ReadRegStr $0 HKLM "${REG_HEAD}" "version"
+
+ ${if} $0 == ""
+ # LAMS 2.0 is not installed, do full install
+ strcpy $IS_UPDATE "0"
+ ${else}
+ # LAMS is installed. Check if the current version is installed
+ ${VersionCompare} $0 ${VERSION} $1
+ ${if} $1 == 0
+ ${orif} $1 == 1
+ MessageBox MB_OK|MB_ICONSTOP "You already have LAMS $0 Installed on your computer."
+ Abort
+ ${else}
+ # Version to be installed is newer than the current
+ strcpy $IS_UPDATE "1"
+ ${endif}
+ ${endif}
+
+ ${if} $IS_UPDATE == "1"
+
+ # check if LAMS is stopped
+ SetOutPath $TEMP
+ File "..\build\LocalPortScanner.class"
+ ReadRegStr $0 HKLM "${REG_HEAD}" "lams_port"
+ ReadRegStr $1 HKLM "${REG_HEAD}" "dir_jdk"
+ Goto checklams
+
+ checklams:
+ nsExec::ExecToStack "$1\bin\java LocalPortScanner $0"
+ Pop $2
+ ${If} $2 == 2
+ MessageBox MB_YESNO|MB_ICONQUESTION "LAMS appears to be running. Stop LAMS and continue with update? (Will take a few seconds)" \
+ IDYES stoplams \
+ IDNO quit
+ ${EndIf}
+ Goto continue
+ stoplams:
+ nsExec::ExecToStack 'sc stop LAMSv2'
+ Pop $0
+ Pop $1
+ DetailPrint "Sent stop command to LAMS service."
+ # sleep for 10s to ensure that JBoss closes properly
+ sleep 10000
+ Goto checklams
+ quit:
+ Delete "$TEMP\LocalPortScanner.class"
+ MessageBox MB_OK|MB_ICONSTOP "LAMS ${VERSION} update cannot continue while LAMS is running."
+ Abort
+ continue:
+ Delete "$TEMP\LocalPortScanner.class"
+
+ # Reading the registry values
+ call readRegistry
+
+ ${endif}
+
+
+ # extract custom page display config
+ !insertmacro MUI_INSTALLOPTIONS_EXTRACT "lams.ini"
+ !insertmacro MUI_INSTALLOPTIONS_EXTRACT "lams2.ini"
+ !insertmacro MUI_INSTALLOPTIONS_EXTRACT "mysql.ini"
+ !insertmacro MUI_INSTALLOPTIONS_EXTRACT "wildfire.ini"
+ !insertmacro MUI_INSTALLOPTIONS_EXTRACT "lams_components.ini"
+ !insertmacro MUI_INSTALLOPTIONS_EXTRACT "final.ini"
+
+ # set jsmath exploded size (assumes 4KB cluster size on destination hdd)
+ SectionSetSize ${jsmathe} 81816
+
+FunctionEnd
+
+
+################################################################################
+# USER INTERFACE CODE #
+################################################################################
+
+# Skips the directory page if this is an update
+Function skipPage
+ ${if} $IS_UPDATE == "1"
+ Abort
+ ${endif}
+FunctionEnd
+
+Function checkRegistry
+ call CheckJava
+ call CheckMySQL
+FunctionEnd
+
+
+Function CheckJava
+ # check for JDK
+ ReadRegStr $JDK_DIR HKLM "SOFTWARE\JavaSoft\Java Development Kit\1.6" "JavaHome"
+ ${If} $JDK_DIR == ""
+ ReadRegStr $JDK_DIR HKLM "SOFTWARE\JavaSoft\Java Development Kit\1.5" "JavaHome"
+ ${if} $JDK_DIR == ""
+ MessageBox MB_OK|MB_ICONSTOP "Could not find a Java JDK 1.5 or 1.6 installation. Please ensure you have JDK 1.5 or 1.6 installed."
+ ${EndIf}
+ ${EndIf}
+FunctionEnd
+
+
+Function CheckMySQL
+ # check for MySQL
+ ReadRegStr $MYSQL_DIR HKLM "SOFTWARE\MySQL AB\MySQL Server 5.0" "Location"
+ ${If} $MYSQL_DIR == ""
+ ReadRegStr $MYSQL_DIR HKLM "SOFTWARE\MySQL AB\MySQL Server 5.1" "Location"
+ ${If} $MYSQL_DIR == ""
+ MessageBox MB_OK|MB_ICONSTOP "Could not find a MySQL installation. Please ensure you have MySQL 5.0 or 5.1 installed."
+ ${EndIf}
+ ${EndIf}
+FunctionEnd
+
+Function PreComponents
+ ${if} $IS_UPDATE == "0"
+ !insertmacro MUI_INSTALLOPTIONS_WRITE "lams_components.ini" "Field 4" "Text" "LAMS ${VERSION} Full Install"
+ !insertmacro MUI_INSTALLOPTIONS_WRITE "lams_components.ini" "Field 1" "Text" "- JBoss 4.0.2"
+ !insertmacro MUI_INSTALLOPTIONS_WRITE "lams_components.ini" "Field 2" "Text" "- LAMS ${VERSION} Core"
+ !insertmacro MUI_INSTALLOPTIONS_WRITE "lams_components.ini" "Field 3" "Text" "- Install LAMS as a service"
+ !insertmacro MUI_HEADER_TEXT "LAMS 2.0.1 Components" "No installation of LAMS 2.0 was found on your computer. A full 2.0.1 installation required to run LAMS"
+ !insertmacro MUI_INSTALLOPTIONS_DISPLAY "lams_components.ini"
+ ${else}
+ !insertmacro MUI_INSTALLOPTIONS_WRITE "lams_components.ini" "Field 4" "Text" "LAMS ${VERSION} Update"
+ !insertmacro MUI_INSTALLOPTIONS_WRITE "lams_components.ini" "Field 1" "Text" "- LAMS ${VERSION} Core"
+ !insertmacro MUI_INSTALLOPTIONS_WRITE "lams_components.ini" "Field 2" "Text" "- LAMS ${VERSION} Tools"
+ !insertmacro MUI_HEADER_TEXT "LAMS 2.0.1 Components" "No installation of LAMS 2.0 was found on your computer. A full 2.0.1 installation required to run LAMS"
+ !insertmacro MUI_INSTALLOPTIONS_DISPLAY "lams_components.ini"
+ ${endif}
+FunctionEnd
+
+Function PostComponents
+ !insertmacro MUI_INSTALLOPTIONS_READ $INCLUDE_JSMATH "lams_components.ini" "Field 5" "State"
+FunctionEnd
+
+
+
+Function DirectoryLeave
+ # check for spaces in instdir
+ ${StrStr} $0 $INSTDIR " "
+ ${If} $0 != ""
+ MessageBox MB_OK|MB_ICONEXCLAMATION "Please choose a location without a space."
+ Abort
+ ${EndIf}
+ # check LAMS 1
+ ReadRegStr $0 HKLM "SOFTWARE\LAMS\Server" "install_dir"
+ ReadRegStr $1 HKLM "SOFTWARE\LAMS\Server" "install_status"
+ ReadRegStr $2 HKLM "SOFTWARE\LAMS\Server" "install_version"
+ ${If} $1 == "successful"
+ MessageBox MB_OK|MB_ICONINFORMATION "If you have LAMS $2 on your system, remember not to run it at the same time as LAMS ${VERSION} (unless you know what you're doing)."
+ ${If} $0 == $INSTDIR
+ MessageBox MB_OK|MB_ICONEXCLAMATION "There appears to be a LAMS $2 installation at $INSTDIR - please chose another location."
+ Abort
+ ${EndIf}
+ ${EndIf}
+
+ Strcpy $RETAIN_FILES "0"
+
+
+ IfFileExists "$INSTDIR\backup\backup.zip" backupExists end
+ backupExists:
+ ; CHECK if there are files retained from a previous uninstall
+ ; THEN after installation, overwrite retained files and free files from temp folder temp folder
+ strcpy $6 ""
+ MessageBox MB_YESNO|MB_ICONQUESTION "Installer has detected database, repository and uploaded files retained from a previous install, do you wish to use them?" \
+ IDYES retainFiles \
+ IDNO noRetain
+ noRetain:
+ MessageBox MB_OK|MB_ICONEXCLAMATION "Files will be backed up as $INSTDIR\backup"
+ goto end
+ retainFiles:
+ Strcpy $WINTEMP "C:\WINDOWS\Temp"
+ Strcpy $RETAIN_FILES "1"
+ #CopyFiles $INSTDIR $WINTEMP
+ #MessageBox MB_OK|MB_ICONEXCLAMATION "$RETAIN_FILES \n $RETAIN_REP $\n $RETAIN_CONF $\n $RETAIN_DB"
+ end:
+FunctionEnd
+
+
+Function PreMySQLConfig
+ ${if} $IS_UPDATE == "0"
+ Call CheckMySQL
+ !insertmacro MUI_INSTALLOPTIONS_WRITE "mysql.ini" "Field 3" "State" "$MYSQL_DIR"
+ !insertmacro MUI_HEADER_TEXT "Setting Up MySQL Database Access (1/4)" "Choose a MySQL database and user account for LAMS. If unsure, use the defaults."
+ !insertmacro MUI_INSTALLOPTIONS_DISPLAY "mysql.ini"
+ ${else}
+ Call CheckMySQL
+ ${endif}
+FunctionEnd
+
+
+Function PostMySQLConfig
+ ${if} $IS_UPDATE == "0"
+ !insertmacro MUI_INSTALLOPTIONS_READ $MYSQL_DIR "mysql.ini" "Field 3" "State"
+ !insertmacro MUI_INSTALLOPTIONS_READ $MYSQL_ROOT_PASS "mysql.ini" "Field 5" "State"
+ !insertmacro MUI_INSTALLOPTIONS_READ $DB_NAME "mysql.ini" "Field 7" "State"
+ !insertmacro MUI_INSTALLOPTIONS_READ $DB_USER "mysql.ini" "Field 9" "State"
+ !insertmacro MUI_INSTALLOPTIONS_READ $DB_PASS "mysql.ini" "Field 10" "State"
+ # Checking if the given database name already exists in the mysql database list
+ ifFileExists "$MYSQL_DIRdata\$DB_NAME\*.*" databaseNameExists continue1
+ databaseNameExists:
+ MessageBox MB_OK|MB_ICONSTOP "Database $DB_NAME already exists. Please try a different database name"
+ quit
+ continue1:
+ ${else}
+ # Checking if the given database name already exists in the mysql database list
+ ifFileExists "$MYSQL_DIRdata\$DB_NAME\*.*" continue NoDatabaseNameExists
+ NoDatabaseNameExists:
+ MessageBox MB_OK|MB_ICONSTOP "Could not find database $DB_NAME. Please check your database settings and try again"
+ quit
+ continue:
+ ${endif}
+ # check mysql version is 5.0.x
+ nsExec::ExecToStack '$MYSQL_DIR\bin\mysqladmin --version'
+ Pop $0
+ Pop $1
+ ${If} $1 == "" ; if mySQL install directory field is empty, do not continue
+ MessageBox MB_OK|MB_ICONSTOP "Your MySQL directory does not appear to be valid, please enter a valid MySQL directory before continuing.$\r$\n$\r$\n$1"
+ ${if} $IS_UPDATE == "0"
+ Abort
+ ${else}
+ quit
+ ${endif}
+ ${EndIf}
+ ${StrStr} $0 $1 "5.0"
+ ${If} $0 == "" ; if not 5.0.x, check 5.1.x
+ ${StrStr} $0 $1 "5.1"
+ ${If} $0 == ""
+ MessageBox MB_OK|MB_ICONSTOP "Your MySQL version does not appear to be compatible with LAMS (5.0.x or 5.1.x): $\r$\n$\r$\n$1"
+ MessageBox MB_OK|MB_ICONSTOP "Your MySQL directory does not appear to be valid, please enter a valid MySQL directory before continuing.$\r$\n$\r$\n$1"
+ ${if} $IS_UPDATE == "0"
+ Abort
+ ${else}
+ quit
+ ${endif}
+ ${EndIf}
+ ${EndIf}
+
+
+
+
+ # check root password, server status
+ StrLen $0 $MYSQL_ROOT_PASS
+ ${If} $0 == 0
+ nsExec::ExecToStack '$MYSQL_DIR\bin\mysqladmin ping -u root'
+ ${Else}
+ nsExec::ExecToStack '$MYSQL_DIR\bin\mysqladmin ping -u root -p$MYSQL_ROOT_PASS'
+ ${EndIf}
+ Pop $0
+ Pop $1
+ # check root password is correct
+ ${StrStr} $2 $1 "Access denied"
+ ${If} $2 != ""
+ MessageBox MB_OK|MB_ICONEXCLAMATION "The MySQL root password appears to be incorrect - please re-enter your password."
+ ${if} $IS_UPDATE == "0"
+ Abort
+ ${else}
+ quit
+ ${endif}
+ ${EndIf}
+ # check mysql is running
+ ${StrStr} $2 $1 "mysqld is alive"
+ ${If} $2 == ""
+ MessageBox MB_OK|MB_ICONEXCLAMATION "MySQL does not appear to be running - please make sure it is running before continuing."
+ ${if} $IS_UPDATE == "0"
+ Abort
+ ${else}
+ quit
+ ${endif}
+ ${EndIf}
+
+FunctionEnd
+
+
+Function PreLAMSConfig
+ ${if} $IS_UPDATE == "0"
+ Call CheckJava
+ !insertmacro MUI_INSTALLOPTIONS_WRITE "lams.ini" "Field 2" "State" "$JDK_DIR"
+ !insertmacro MUI_INSTALLOPTIONS_WRITE "lams.ini" "Field 4" "State" "$INSTDIR\repository"
+ !insertmacro MUI_HEADER_TEXT "Setting Up LAMS (2/4)" "Configure the LAMS Server. If unsure, use the defaults."
+ !insertmacro MUI_INSTALLOPTIONS_DISPLAY "lams.ini"
+ ${else}
+ Call CheckJava
+ !insertmacro MUI_INSTALLOPTIONS_WRITE "lams.ini" "Field 2" "State" "$JDK_DIR"
+ !insertmacro MUI_INSTALLOPTIONS_WRITE "lams.ini" "Field 4" "State" "$INSTDIR\repository"
+ !insertmacro MUI_HEADER_TEXT "Java setup" "If you have changed your java installation since installing LAMS 2.0, please enter the new details."
+ !insertmacro MUI_INSTALLOPTIONS_DISPLAY "lams.ini"
+ ${endif}
+FunctionEnd
+
+
+Function PostLAMSConfig
+ ${if} $IS_UPDATE == "0"
+ !insertmacro MUI_INSTALLOPTIONS_READ $JDK_DIR "lams.ini" "Field 2" "State"
+ !insertmacro MUI_INSTALLOPTIONS_READ $LAMS_REPOSITORY "lams.ini" "Field 4" "State"
+ ${endif}
+ # check java version using given dir
+ nsExec::ExecToStack '$JDK_DIR\bin\javac -version'
+ Pop $0
+ Pop $1
+ ${StrStr} $0 $1 "1.6"
+ ${If} $0 == ""
+ ${StrStr} $0 $1 "1.5"
+ ${If} $0 == ""
+ MessageBox MB_OK|MB_ICONEXCLAMATION "Could not verify Java JDK 1.5, or JDK 1.6. Please check your JDK directory."
+ ${if} $IS_UPDATE == "0"
+ Abort
+ ${else}
+ quit
+ ${endif}
+ ${EndIf}
+ ${EndIf}
+
+FunctionEnd
+
+
+Function PreLAMS2Config
+ ${if} $IS_UPDATE == "0"
+ !insertmacro MUI_HEADER_TEXT "Setting Up LAMS (3/4)" "Configure the LAMS Server, and choose an admin username and password."
+ !insertmacro MUI_INSTALLOPTIONS_DISPLAY "lams2.ini"
+ ${endif}
+FunctionEnd
+
+
+Function PostLAMS2Config
+ ${if} $IS_UPDATE == "0"
+ !insertmacro MUI_INSTALLOPTIONS_READ $LAMS_DOMAIN "lams2.ini" "Field 8" "State"
+ !insertmacro MUI_INSTALLOPTIONS_READ $LAMS_PORT "lams2.ini" "Field 9" "State"
+ !insertmacro MUI_INSTALLOPTIONS_READ $LAMS_LOCALE "lams2.ini" "Field 12" "State"
+ !insertmacro MUI_INSTALLOPTIONS_READ $LAMS_USER "lams2.ini" "Field 2" "State"
+ !insertmacro MUI_INSTALLOPTIONS_READ $LAMS_PASS "lams2.ini" "Field 5" "State"
+ ${endif}
+FunctionEnd
+
+
+Function PreWildfireConfig
+ ${if} $IS_UPDATE == "0"
+ !insertmacro MUI_HEADER_TEXT "Setting Up Wildfire Chat Server (4/4)" "Configure Wildfire, chat server for LAMS. If unsure, use the default."
+ !insertmacro MUI_INSTALLOPTIONS_DISPLAY "wildfire.ini"
+ ${endif}
+FunctionEnd
+
+
+Function PostWildfireConfig
+ ${if} $IS_UPDATE == "0"
+ !insertmacro MUI_INSTALLOPTIONS_READ $WILDFIRE_DOMAIN "wildfire.ini" "Field 2" "State"
+ !insertmacro MUI_INSTALLOPTIONS_READ $WILDFIRE_USER "wildfire.ini" "Field 5" "State"
+ !insertmacro MUI_INSTALLOPTIONS_READ $WILDFIRE_PASS "wildfire.ini" "Field 7" "State"
+
+ # check wildfire is running by checking client connection port 5222
+ SetOutPath $TEMP
+ File "..\build\LocalPortScanner.class"
+ nsExec::ExecToStack '$JDK_DIR\bin\java LocalPortScanner 5222'
+ Pop $0
+ Pop $1
+ ${If} $0 == 0
+ MessageBox MB_OKCANCEL|MB_ICONQUESTION "Wildfire does not appear to be running - LAMS will be OK, but chat rooms will be unavailable." IDOK noWildfire IDCANCEL cancel
+ cancel:
+ Abort
+ noWildfire:
+ ${EndIf}
+ ${endif}
+FunctionEnd
+
+Function PreFinal
+ ${if} $IS_UPDATE == "0"
+ !insertmacro MUI_INSTALLOPTIONS_WRITE "final.ini" "Field 2" "Text" "Click 'Install' to commence installation of LAMS ${VERSION}"
+ ${else}
+ !insertmacro MUI_INSTALLOPTIONS_WRITE "final.ini" "Field 2" "Text" "Click 'Install' to commence update to LAMS ${VERSION}"
+ ${endif}
+ !insertmacro MUI_HEADER_TEXT "LAMS ${VERSION}" "Configuration Completed"
+ !insertmacro MUI_INSTALLOPTIONS_DISPLAY "final.ini"
+FunctionEnd
+
+Function PostFinal
+ ; Checking to see if lams2.0 exists
+ call checkRegistry
+FunctionEnd
+
+################################################################################
+# END USER INTERFACE CODE #
+################################################################################
+
+
+
+
+################################################################################
+# CODE USED FOR UPDATER #
+################################################################################
+
+; Backs up existing lams installation
+Function backupLams
+ #copyfiles /r $INSTDIR "$INSTDIR
+FunctionEnd
+
+
+; Updating the the core lams jars/wars
+; Needs lams_build/build.xml tasks assemble-ear and deploy-ear-updater to be executed first
+Function updateCoreJarsWars
+ SetoutPath "$INSTDIR\jboss-4.0.2\server\default\deploy\lams.ear"
+ File "..\assembly\lams.ear\*.*"
+
+ createdirectory "$INSTDIR\update-logs"
+FunctionEnd
+
+; Updating lams-central.war
+Function updateLamsCentral
+ SetoutPath "$INSTDIR\jboss-4.0.2\server\default\deploy\lams.ear\lams-central.war"
+ File /r "..\assembly\lams.ear\lams-central.war"
+FunctionEnd
+
+; Updating lams-www.war
+Function updateLamswww
+ SetoutPath "$INSTDIR\jboss-4.0.2\server\default\deploy\lams.ear\lams-www.war\images\"
+ File "..\assembly\lams.ear\lams-www.war\images\learner.logo.swf"
+
+ SetoutPath "$INSTDIR\jboss-4.0.2\server\default\deploy\lams.ear\lams-www.war\"
+ File "..\templates\news.html"
+FunctionEnd
+
+; Updating application.xml
+Function updateApplicationXML
+FunctionEnd
+
+; Updating the database to support version
+Function updateCoreDatabase
+
+ # extract support files to write configuration
+ SetOutPath $INSTDIR
+ File /r "..\apache-ant-1.6.5"
+
+ StrCpy $0 '"$MYSQL_DIR\bin\mysql" -v $DB_NAME -e "update lams_configuration set config_value=$\'${SERVER_VERSION_NUMBER}$\' where config_key=$\'LearnerClientVersion$\' OR config_key=$\'ServerVersionNumber$\' OR config_key=$\'MonitorClientVersion$\' OR config_key=$\'AuthoringClientVersion$\'" -u$DB_USER -p$DB_PASS'
+ DetailPrint $0
+ nsExec::ExecToStack $0
+ Pop $0
+ Pop $1
+ ${If} $0 == 1
+ goto error
+ ${EndIf}
+ DetailPrint "mysql code: $0"
+ DetailPrint "mysql result: $1"
+
+ StrCpy $0 '"$MYSQL_DIR\bin\mysql" -v $DB_NAME -e "update lams_configuration set config_value=$\'${VERSION}$\' where config_key=$\'Version$\' " -u$DB_USER -p$DB_PASS'
+ DetailPrint $0
+ nsExec::ExecToStack $0
+ Pop $0
+ Pop $1
+ ${If} $0 == 1
+ goto error
+ ${EndIf}
+ DetailPrint $1
+
+
+ # Copying the core sql update scriptes to $TEMOP/lams/sql
+ setoutpath "$TEMP\lams\sql"
+ file "..\..\lams_common\db\sql\updatescripts\*.sql"
+
+
+ # Running the ant scripts to create deploy.xml for the normal tools
+ strcpy $0 '"$INSTDIR\apache-ant-1.6.5\bin\ant.bat" -logfile "$INSTDIR\update-logs\ant-update-core-database.log" -buildfile "$TEMP\lams\update-deploy-tools.xml" -D"prop.path=$TOOL_SIG" update-core-database'
+ DetailPrint $0
+ nsExec::ExecToStack $0
+ Pop $0 ; return code, 0=success, error=fail
+ Pop $1 ; console output
+ ${if} $0 == "error"
+ ${orif} $0 == 1
+ goto error
+ ${endif}
+ DetailPrint "Result: $1"
+
+ goto done
+ error:
+ DetailPrint "LAMS core database updates failed"
+ MessageBox MB_OK|MB_ICONSTOP "LAMS core database updates failed $\r$\nError:$\r$\n$\r$\n$1"
+ Abort "LAMS core database updates failed"
+ done:
+
+FunctionEnd
+
+; Updating the deploy.xml of the tools to support this version using the tool deployer, called by create-deploy-package ant task
+; Then deploys the tools using the tool deployer. Called by ant task deploy-tool
+Function createAndDeployTools
+
+ # Copying tool-specific build.property files
+ call copyToolBuildProperties
+
+ # Generate the tools.properties for properties common to all tools
+ call generateToolProperties
+
+ # Get the jars and wars required for each tool
+ call extractToolJars
+
+ # Get the java libraries needed for the tool deployer
+ SetOutPath "$TEMP\lams\lib"
+ File "..\..\lams_build\deploy-tool\lib\*.jar"
+
+ # Extract the ant scripts to create the tools
+ SetOutPath "$TEMP\lams"
+ File "..\templates\update-deploy-tools.xml"
+
+ # Creating all the tools, then deploying them
+ strcpy $TOOL_SIG "lachat11"
+ call runCreateDeployPackage
+ call deployTool
+
+ strcpy $TOOL_SIG "lafrum11"
+ call runCreateDeployPackage
+ call deployTool
+
+ strcpy $TOOL_SIG "lamc11"
+ call runCreateDeployPackage
+ call deployTool
+
+ strcpy $TOOL_SIG "laqa11"
+ call runCreateDeployPackage
+ call deployTool
+
+ strcpy $TOOL_SIG "larsrc11"
+ call runCreateDeployPackage
+ call deployTool
+
+ strcpy $TOOL_SIG "lanb11"
+ call runCreateDeployPackage
+ call deployTool
+
+ strcpy $TOOL_SIG "lantbk"
+ call runCreateDeployPackage
+ call deployTool
+
+ strcpy $TOOL_SIG "lasbmt11"
+ call runCreateDeployPackage
+ call deployTool
+
+ strcpy $TOOL_SIG "lascrb11"
+ call runCreateDeployPackage
+ call deployTool
+
+ strcpy $TOOL_SIG "lasurv11"
+ call runCreateDeployPackage
+ call deployTool
+
+ strcpy $TOOL_SIG "lavote11"
+ call runCreateDeployPackage
+ call deployTool
+
+ rmdir /r "$INSTDIR\apache-ant-1.6.5"
+FunctionEnd
+
+# Running the ant scripts to create deploy.xml for the normal tools
+# Tool created depends on the value of $TOOL_SIG
+Function runCreateDeployPackage
+ # Running the ant scripts to create deploy.xml for the normal tools
+ strcpy $0 '$INSTDIR\apache-ant-1.6.5\bin\ant.bat -logfile $INSTDIR\update-logs\ant-create-deploy-package-$TOOL_SIG.log -buildfile $TEMP\lams\update-deploy-tools.xml -Dprop.path=$TEMP\lams\$TOOL_SIG create-deploy-package'
+ DetailPrint $0
+ nsExec::ExecToStack $0
+ Pop $0 ; return code, 0=success, error=fail
+ Pop $1 ; console output
+ ${if} $0 == "error"
+ ${orif} $0 == 1
+ goto error
+ ${endif}
+ DetailPrint "Result: $1"
+
+ goto done
+ error:
+ DetailPrint "Ant create-tools-package failed, check update-logs for details"
+ MessageBox MB_OK|MB_ICONSTOP "Ant create-tools-package failed, check update-logs for details$\r$\nError:$\r$\n$\r$\n$1"
+ Abort "LAMS configuration failed."
+ done:
+FunctionEnd
+
+# generates a properties file for all tools
+Function generateToolProperties
+
+ # generate a properties file
+ ClearErrors
+ FileOpen $0 $TEMP\lams\tools.properties w
+ IfErrors 0 +2
+ goto error
+
+ # convert '\' to '/' for Ant's benefit
+ Push $TEMP
+ Push "\"
+ Call StrSlash
+ Pop $2
+ FileWrite $0 "temp=$2/$\r$\n"
+
+ Push $INSTDIR
+ Push "\"
+ Call StrSlash
+ Pop $2
+
+ FileWrite $0 "instdir=$2/$\r$\n"
+ FileWrite $0 "basetooldir=$${temp}/lams/$${signature}$\r$\n"
+ FileWrite $0 "build=$${basetooldir}/build/$\r$\n"
+ FileWrite $0 "build.deploy=$${build}/deploy/$\r$\n"
+ FileWrite $0 "build.lib=$${build}/deploy/lib/$\r$\n"
+ FileWrite $0 "db.scripts=$${build.deploy}/sql/$\r$\n"
+ FileWrite $0 "db.name=$DB_NAME$\r$\n"
+ FileWrite $0 "db.username=$DB_USER$\r$\n"
+ FileWrite $0 "db.password=$DB_PASS$\r$\n"
+ FileWrite $0 "db.Driver=com.mysql.jdbc.Driver$\r$\n"
+ FileWrite $0 "db.url=jdbc:mysql://localhost/$${db.name}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&useUnicode=true$\r$\n"
+ FileWrite $0 "conf.language.dir=$${build.deploy}/language/$\r$\n"
+ FileWrite $0 "jboss.deploy=$${instdir}/jboss-4.0.2/server/default/deploy/lams.ear/$\r$\n"
+ FileWrite $0 "deploy.tool.dir=$${temp}/lams/$\r$\n"
+ FileWrite $0 "toolContext=/lams/tool/$${signature}$\r$\n"
+ FileWrite $0 "product=lams-tool-$${signature}$\r$\n"
+
+ goto done
+ error:
+ DetailPrint "File writing to $TEMP\lams\tools.properties failed."
+ MessageBox MB_OK|MB_ICONSTOP "LAMS configuration failed. File write error to $TEMP\lams\tools.properties.$\r$\nError:$\r$\n$\r$\n$1"
+ Abort "LAMS configuration failed."
+ done:
+
+FunctionEnd
+
+# Copying the tool-specific build.property files
+Function copyToolBuildProperties
+
+ SetoutPath "$TEMP\lams\lachat11"
+ File "..\..\lams_tool_chat\build.properties"
+
+ SetoutPath "$TEMP\lams\lafrum11"
+ File "..\..\lams_tool_forum\build.properties"
+
+ SetoutPath "$TEMP\lams\lamc11"
+ File "..\..\lams_tool_lamc\build.properties"
+
+ SetoutPath "$TEMP\lams\laqa11"
+ File "..\..\lams_tool_laqa\build.properties"
+
+ SetoutPath "$TEMP\lams\larsrc11"
+ File "..\..\lams_tool_larsrc\build.properties"
+
+ SetoutPath "$TEMP\lams\lanb11"
+ File "..\..\lams_tool_nb\build.properties"
+
+ SetoutPath "$TEMP\lams\lantbk"
+ File "..\..\lams_tool_notebook\build.properties"
+
+ SetoutPath "$TEMP\lams\lasbmt11"
+ File "..\..\lams_tool_sbmt\build.properties"
+
+ SetoutPath "$TEMP\lams\lascrb11"
+ File "..\..\lams_tool_scribe\build.properties"
+
+ SetoutPath "$TEMP\lams\lasurv11"
+ File "..\..\lams_tool_survey\build.properties"
+
+ SetoutPath "$TEMP\lams\lavote11"
+ File "..\..\lams_tool_vote\build.properties"
+
+FunctionEnd
+
+# Extracting the jars and wars for each tool also copies language files and sql
+Function extractToolJars
+
+ SetoutPath "$TEMP\lams\lachat11\build\deploy\"
+ File "..\..\lams_tool_chat\build\lib\*.jar"
+ File "..\..\lams_tool_chat\build\lib\*.war"
+ SetoutPath "$TEMP\lams\lachat11\build\deploy\sql"
+ File "..\..\lams_tool_chat\build\deploy\sql\*.sql"
+ SetoutPath "$TEMP\lams\lachat11\build\deploy\language"
+ File "..\..\lams_tool_chat\build\deploy\language\*.properties"
+
+ SetoutPath "$TEMP\lams\lafrum11\build\deploy\"
+ File "..\..\lams_tool_forum\build\lib\*.jar"
+ File "..\..\lams_tool_forum\build\lib\*.war"
+ SetoutPath "$TEMP\lams\lafrum11\build\deploy\sql"
+ File "..\..\lams_tool_forum\build\deploy\sql\*.sql"
+ SetoutPath "$TEMP\lams\lafrum11\build\deploy\language"
+ File "..\..\lams_tool_forum\build\deploy\language\*.properties"
+
+ SetoutPath "$TEMP\lams\lamc11\build\deploy\"
+ File "..\..\lams_tool_lamc\build\lib\*.jar"
+ File "..\..\lams_tool_lamc\build\lib\*.war"
+ SetoutPath "$TEMP\lams\lamc11\build\deploy\sql"
+ File "..\..\lams_tool_lamc\build\deploy\sql\*.sql"
+ SetoutPath "$TEMP\lams\lamc11\build\deploy\language"
+ File "..\..\lams_tool_lamc\build\deploy\language\*.properties"
+
+ SetoutPath "$TEMP\lams\laqa11\build\deploy\"
+ File "..\..\lams_tool_laqa\build\lib\*.jar"
+ File "..\..\lams_tool_laqa\build\lib\*.war"
+ SetoutPath "$TEMP\lams\laqa11\build\deploy\sql"
+ File "..\..\lams_tool_laqa\build\deploy\sql\*.sql"
+ SetoutPath "$TEMP\lams\laqa11\build\deploy\language"
+ File "..\..\lams_tool_laqa\build\deploy\language\*.properties"
+
+ SetoutPath "$TEMP\lams\larsrc11\build\deploy\"
+ File "..\..\lams_tool_larsrc\build\lib\*.jar"
+ File "..\..\lams_tool_larsrc\build\lib\*.war"
+ SetoutPath "$TEMP\lams\larsrc11\build\deploy\sql"
+ File "..\..\lams_tool_larsrc\build\deploy\sql\*.sql"
+ SetoutPath "$TEMP\lams\larsrc11\build\deploy\language"
+ File "..\..\lams_tool_larsrc\build\deploy\language\*.properties"
+
+ SetoutPath "$TEMP\lams\lanb11\build\deploy\"
+ File "..\..\lams_tool_nb\build\lib\*.jar"
+ File "..\..\lams_tool_nb\build\lib\*.war"
+ SetoutPath "$TEMP\lams\lanb11\build\deploy\sql"
+ File "..\..\lams_tool_nb\build\deploy\sql\*.sql"
+ SetoutPath "$TEMP\lams\lanb11\build\deploy\language"
+ File "..\..\lams_tool_nb\build\deploy\language\*.properties"
+
+ SetoutPath "$TEMP\lams\lantbk11\build\deploy\"
+ File "..\..\lams_tool_notebook\build\lib\*.jar"
+ File "..\..\lams_tool_notebook\build\lib\*.war"
+ SetoutPath "$TEMP\lams\lantbk11\build\deploy\sql"
+ File "..\..\lams_tool_notebook\build\deploy\sql\*.sql"
+ SetoutPath "$TEMP\lams\lantbk11\build\deploy\language"
+ File "..\..\lams_tool_notebook\build\deploy\language\*.properties"
+
+ SetoutPath "$TEMP\lams\lasbmt11\build\deploy\"
+ File "..\..\lams_tool_sbmt\build\lib\*.jar"
+ File "..\..\lams_tool_sbmt\build\lib\*.war"
+ SetoutPath "$TEMP\lams\lasbmt11\build\deploy\sql"
+ File "..\..\lams_tool_sbmt\build\deploy\sql\*.sql"
+ SetoutPath "$TEMP\lams\lasbmt11\build\deploy\language"
+ File "..\..\lams_tool_sbmt\build\deploy\language\*.properties"
+
+ SetoutPath "$TEMP\lams\lascrb11\build\deploy\"
+ File "..\..\lams_tool_scribe\build\lib\*.jar"
+ File "..\..\lams_tool_scribe\build\lib\*.war"
+ SetoutPath "$TEMP\lams\lascrb11\build\deploy\sql"
+ File "..\..\lams_tool_scribe\build\deploy\sql\*.sql"
+ SetoutPath "$TEMP\lams\lascrb11\build\deploy\language"
+ File "..\..\lams_tool_scribe\build\deploy\language\*.properties"
+
+ SetoutPath "$TEMP\lams\lasurv11\build\deploy\"
+ File "..\..\lams_tool_survey\build\lib\*.jar"
+ File "..\..\lams_tool_survey\build\lib\*.war"
+ SetoutPath "$TEMP\lams\lasurv11\build\deploy\sql"
+ File "..\..\lams_tool_survey\build\deploy\sql\*.sql"
+ SetoutPath "$TEMP\lams\lasurv11\build\deploy\language"
+ File "..\..\lams_tool_survey\build\deploy\language\*.properties"
+
+ SetoutPath "$TEMP\lams\lavote11\build\deploy\"
+ File "..\..\lams_tool_vote\build\lib\*.jar"
+ File "..\..\lams_tool_vote\build\lib\*.war"
+ SetoutPath "$TEMP\lams\lavote11\build\deploy\sql"
+ File "..\..\lams_tool_vote\build\deploy\sql\*.sql"
+ SetoutPath "$TEMP\lams\lavote11\build\deploy\language"
+ File "..\..\lams_tool_vote\build\deploy\language\*.properties"
+
+
+FunctionEnd
+
+# Deploying the updated tools
+Function deployTool
+ # Running the ant scripts to create deploy.xml for the normal tools
+ strcpy $0 '$INSTDIR\apache-ant-1.6.5\bin\ant.bat -verbose -logfile $INSTDIR\update-logs\ant-deploy-tool-$TOOL_SIG.log -buildfile $TEMP\lams\update-deploy-tools.xml -Dprop.path=$TEMP\lams\$TOOL_SIG deploy-tool'
+ DetailPrint $0
+ nsExec::ExecToStack $0
+ Pop $0 ; return code, 0=success, error=fail
+ Pop $1 ; console output
+ ${if} $0 == "fail"
+ ${orif} $0 == 1
+ goto error
+ ${endif}
+ DetailPrint "Result: $1"
+
+ goto done
+ error:
+ DetailPrint "Ant deploy-tool failed, check update-logs for details"
+ MessageBox MB_OK|MB_ICONSTOP "Ant create-tools-package failed, check update-logs for details$\r$\nError:$\r$\n$\r$\n$1"
+ Abort "LAMS configuration failed."
+ done:
+FunctionEnd
+
+################################################################################
+# END CODE USED FOR UPDATER #
+################################################################################
+
+
+################################################################################
+# CODE USED FOR INSTALLER #
+################################################################################
+
+Function DeployConfig
+ # extract support files to write configuration
+ SetOutPath $INSTDIR
+ File /r "..\apache-ant-1.6.5"
+ File /r "..\zip"
+ SetOutPath $TEMP
+ File "build.xml"
+ File "..\templates\mysql-ds.xml"
+ File "..\templates\server.xml"
+ File "..\templates\run.bat"
+ File "..\templates\wrapper.conf"
+ File "..\templates\index.html"
+ File "..\templates\lamsauthentication.xml"
+ File "..\templates\update_lams_configuration.sql"
+ File "..\templates\login-config.xml"
+
+
+
+ # create installer.properties
+ ClearErrors
+ FileOpen $0 $TEMP\installer.properties w
+ IfErrors 0 +2
+ goto error
+
+ # convert '\' to '/' for Ant's benefit
+ Push $TEMP
+ Push "\"
+ Call StrSlash
+ Pop $2
+ FileWrite $0 "TEMP=$2$\r$\n"
+
+ Push $INSTDIR
+ Push "\"
+ Call StrSlash
+ Pop $2
+ FileWrite $0 "URL=http://$LAMS_DOMAIN:$LAMS_PORT/lams/$\r$\n"
+ FileWrite $0 "INSTDIR=$2/$\r$\n"
+ FileWrite $0 "TEMPDIR=$2/temp$\r$\n"
+ FileWrite $0 "DUMPDIR=$2/dump$\r$\n"
+ FileWrite $0 "EARDIR=$2/jboss-4.0.2/server/default/deploy/lams.ear$\r$\n"
+ FileWrite $0 "DEPLOYDIR=$2/jboss-4.0.2/server/default/deploy$\r$\n"
+ FileWrite $0 "TOMCATDIR=$2/jboss-4.0.2/server/default/deploy/jbossweb-tomcat55.sar$\r$\n"
+ FileWrite $0 "BINDIR=$2/jboss-4.0.2/bin$\r$\n"
+
+ # Use unix slashes for config in wrapper.conf
+ Push $JDK_DIR
+ Push "\"
+ Call StrSlash
+ Pop $2
+ FileWrite $0 "JDK_DIR_UNIX_SLASH=$2$\r$\n"
+
+ Push $LAMS_REPOSITORY
+ Push "\"
+ Call StrSlash
+ Pop $2
+ FileWrite $0 "REPOSITORYDIR=$2$\r$\n"
+
+ StrCpy $LAMS_LOCALE $LAMS_LOCALE 5
+ FileWrite $0 "LOCALE=$LAMS_LOCALE$\r$\n"
+ ${If} $LAMS_LOCALE == "ar_JO"
+ FileWrite $0 "LOCALE_DIRECTION=RTL$\r$\n"
+ ${Else}
+ FileWrite $0 "LOCALE_DIRECTION=LTR$\r$\n"
+ ${EndIf}
+
+ FileWrite $0 "WILDFIRE_DOMAIN=$WILDFIRE_DOMAIN$\r$\n"
+ FileWrite $0 "WILDFIRE_CONFERENCE=conference.$WILDFIRE_DOMAIN$\r$\n"
+ FileWrite $0 "WILDFIRE_USER=$WILDFIRE_USER$\r$\n"
+ FileWrite $0 "WILDFIRE_PASS=$WILDFIRE_PASS$\r$\n"
+
+ FileWrite $0 "DB_NAME=$DB_NAME$\r$\n"
+ FileWrite $0 "DB_USER=$DB_USER$\r$\n"
+ FileWrite $0 "DB_PASS=$DB_PASS$\r$\n"
+
+ FileWrite $0 "LAMS_PORT=$LAMS_PORT$\r$\n"
+ FileWrite $0 "LAMS_USER=$LAMS_USER$\r$\n"
+ FileWrite $0 "LAMS_PASS=$LAMS_PASS$\r$\n"
+ FileClose $0
+ # for debugging purposes
+ CopyFiles "$TEMP\installer.properties" $INSTDIR
+
+ # use Ant to write config to files
+ FileOpen $0 "$INSTDIR\apache-ant-1.6.5\bin\newAnt.bat" w
+ IfErrors 0 +2
+ goto error
+ FileWrite $0 "@echo off$\r$\nset JAVACMD=$JDK_DIR\bin\java$\r$\n"
+ FileClose $0
+ ${FileJoin} "$INSTDIR\apache-ant-1.6.5\bin\newAnt.bat" "$INSTDIR\apache-ant-1.6.5\bin\ant.bat" ""
+ DetailPrint '$INSTDIR\apache-ant-1.6.5\bin\newAnt.bat configure-deploy'
+ nsExec::ExecToStack '$INSTDIR\apache-ant-1.6.5\bin\newAnt.bat configure-deploy'
+ Pop $0 ; return code, 0=success, error=fail
+ Pop $1 ; console output
+
+ FileOpen $R0 "$INSTDIR\installer_ant.log" w
+ IfErrors 0 +2
+ goto error
+ FileWrite $R0 $1
+ FileClose $R0
+
+ ${If} $0 == "error"
+ goto error
+ ${EndIf}
+ ${StrStr} $0 $1 "BUILD SUCCESSFUL"
+ ${If} $0 == ""
+ goto error
+ ${EndIf}
+
+ # write my.ini if exists
+ # TODO doesn't check if tx_isolation is already READ-COMMITTED
+ # TODO doesn't take effect until mysql server is restarted
+ DetailPrint "Setting MySQL transaction-isolation to READ-COMMITTED"
+ ${LineFind} "$MYSQL_DIR\my.ini" "" "1" "WriteMyINI"
+ IfErrors 0 myini
+ clearerrors
+ ${LineFind} "$WINDIR\my.ini" "" "1" "WriteMyINI"
+ IfErrors 0 myini
+ MessageBox MB_OK|MB_ICONEXCLAMATION "Couldn't write to $MYSQL_DIR\my.ini. Please write this text into your MySQL configuration file and restart MySQL:$\r$\n$\r$\n[mysqld]$\r$\ntransaction-isolation=READ-COMMITTED"
+ myini:
+ DetailPrint "MySQL will need to be restarted for this to take effect."
+ goto done
+ error:
+ DetailPrint "Ant configure-deploy failed."
+ MessageBox MB_OK|MB_ICONSTOP "LAMS configuration failed. Please check your LAMS configuration and try again.$\r$\nError:$\r$\n$\r$\n$1"
+ Abort "LAMS configuration failed."
+ done:
+FunctionEnd
+
+
+Function WriteMyINI
+ FileWrite $R4 "[mysqld]$\r$\n"
+ FileWrite $R4 "transaction-isolation=READ-COMMITTED$\r$\n"
+ Push $0
+FunctionEnd
+
+Function readRegistry
+ ;ReadRegStr $INSTDIR HKLM "${REG_HEAD}" "dir_inst"
+ ReadRegStr $DB_NAME HKLM "${REG_HEAD}" "db_name"
+ ReadRegStr $DB_PASS HKLM "${REG_HEAD}" "db_pass"
+ ReadRegStr $DB_USER HKLM "${REG_HEAD}" "db_user"
+ ReadRegStr $JDK_DIR HKLM "${REG_HEAD}" "dir_jdk"
+ ReadRegStr $MYSQL_DIR HKLM "${REG_HEAD}" "dir_mysql"
+ ReadRegStr $LAMS_REPOSITORY HKLM "${REG_HEAD}" "dir_repository"
+ ReadRegStr $LAMS_DOMAIN HKLM "${REG_HEAD}" "lams_domain"
+ ReadRegStr $LAMS_LOCALE HKLM "${REG_HEAD}" "lams_locale"
+ ReadRegStr $LAMS_PORT HKLM "${REG_HEAD}" "lams_port"
+ #ReadRegStr $VERSION HKLM "${REG_HEAD}" "version"
+ ReadRegStr $WILDFIRE_DOMAIN HKLM "${REG_HEAD}" "wildfire_domain"
+ ReadRegStr $WILDFIRE_PASS HKLM "${REG_HEAD}" "wildfire_pass"
+ ReadRegStr $WILDFIRE_USER HKLM "${REG_HEAD}" "wildfire_user"
+FunctionEnd
+
+
+Function ImportDatabase
+ SetOutPath $TEMP
+ File "..\build\dump.sql"
+
+ # $9 == 0 for empty password
+ StrLen $9 $MYSQL_ROOT_PASS
+
+ StrCpy $0 '$MYSQL_DIR\bin\mysql -e "CREATE DATABASE $DB_NAME DEFAULT CHARACTER SET utf8" -u root'
+ DetailPrint $0
+ ${If} $9 != 0
+ StrCpy $0 '$MYSQL_DIR\bin\mysql -e "CREATE DATABASE $DB_NAME DEFAULT CHARACTER SET utf8" -u root -p$MYSQL_ROOT_PASS'
+ ${EndIf}
+ nsExec::ExecToStack $0
+ Pop $0
+ Pop $1
+ ${If} $0 == 1
+ goto error
+ ${EndIf}
+
+ StrCpy $0 `$MYSQL_DIR\bin\mysql -e "GRANT ALL PRIVILEGES ON *.* TO $DB_USER@localhost IDENTIFIED BY '$DB_PASS'" -u root`
+ DetailPrint $0
+ ${If} $9 != 0
+ StrCpy $0 `$MYSQL_DIR\bin\mysql -e "GRANT ALL PRIVILEGES ON *.* TO $DB_USER@localhost IDENTIFIED BY '$DB_PASS'" -u root -p$MYSQL_ROOT_PASS`
+ ${EndIf}
+ nsExec::ExecToStack $0
+ Pop $0
+ Pop $1
+ ${If} $0 == 1
+ goto error
+ ${EndIf}
+
+ StrCpy $0 '$MYSQL_DIR\bin\mysql -e "REVOKE PROCESS,SUPER ON *.* from $DB_USER@localhost" -u root'
+ DetailPrint $0
+ ${If} $9 != 0
+ StrCpy $0 '$MYSQL_DIR\bin\mysql -e "REVOKE PROCESS,SUPER ON *.* from $DB_USER@localhost" -u root -p$MYSQL_ROOT_PASS'
+ ${EndIf}
+ nsExec::ExecToStack $0
+ Pop $0
+ Pop $1
+ ${If} $0 == 1
+ goto error
+ ${EndIf}
+
+ StrCpy $0 '$MYSQL_DIR\bin\mysqladmin flush-privileges -u root'
+ DetailPrint $0
+ ${If} $9 != 0
+ StrCpy $0 '$MYSQL_DIR\bin\mysqladmin flush-privileges -u root -p$MYSQL_ROOT_PASS'
+ ${EndIf}
+ nsExec::ExecToStack $0
+ Pop $0
+ Pop $1
+ ${If} $0 == 1
+ goto error
+ ${EndIf}
+
+ /* mysql keeps rejecting 'mysql -e...' and 'mysql db_name < dump.sql' commands
+ StrCpy $0 `$MYSQL_DIR\bin\mysql -e "use $DB_NAME; source '$TEMP\dump.sql'" -u $DB_USER`
+ DetailPrint $0
+ StrLen $9 $DB_PASS
+ ${If} $9 != 0
+ StrCpy $0 `$MYSQL_DIR\bin\mysql -e "use $DB_NAME; source '$TEMP\dump.sql'" -u $DB_USER -p$DB_PASS`
+ ${EndIf}
+ nsExec::ExecToStack $0
+ Pop $0
+ Pop $1
+ ${If} $0 == 1
+ goto error
+ ${EndIf}
+ */
+
+ ${if} $RETAIN_FILES == '1'
+ #unzip repository files
+ setoutpath "$INSTDIR\backup"
+ strcpy $4 '$INSTDIR\zip\7za.exe x -aoa "backup.zip"'
+ nsExec::ExecToStack $4
+ pop $5
+ pop $6
+ ${if} $5 != 0
+ Detailprint "7za Unzip error: $\r$\n$\r$\n$6"
+ MessageBox MB_OK|MB_ICONSTOP "7za Unzip error:$\r$\nError:$\r$\n$\r$\n$6"
+ Abort "Lams configuration failed"
+ ${endif}
+
+ #replace the install dump with the retained dump
+ #MessageBox MB_OK|MB_ICONEXCLAMATION "Rebuilding datbase"
+ CopyFiles "$INSTDIR\backup\lamsDump.sql" "$TEMP\dump.sql"
+ DetailPrint "Using retained database: $INSTDIR\backup\lamsDump.sql"
+
+ RMdir /r "$INSTDIR\backup\jboss-4.0.2"
+ RMdir /r "$INSTDIR\backup\repository"
+ delete "$INSTDIR\backup\lamsDump.sql"
+
+ Detailprint "FINISHED COPYTING lamsdump.sql"
+ ${endif}
+
+
+
+ SetOutPath $TEMP
+ # use Ant to import database
+ DetailPrint '$INSTDIR\apache-ant-1.6.5\bin\ant.bat import-db'
+ nsExec::ExecToStack '$INSTDIR\apache-ant-1.6.5\bin\newAnt.bat import-db'
+ Pop $0 ; return code, 0=success, error=fail
+ Pop $1 ; console output
+ DetailPrint "DB import status: $0"
+ DetailPrint "DB import output: $1"
+
+ FileWrite $R0 $1
+ FileClose $R0
+
+ ${StrStr} $0 $1 "BUILD SUCCESSFUL"
+ ${If} $0 == ""
+ goto error
+ ${EndIf}
+
+ /*${if} $RETAIN_FILES == '1'
+ #replace the install dump with the retained dump
+ #CopyFiles "$INSTDIR\backup\lamsDump.sql" "$TEMP\dump.sql"
+ DetailPrint "Using retained database: $INSTDIR\backup\lamsDump.sql"
+ strcpy $0 "$MYSQL_DIR\bin\mysql $DB_NAME -uroot - p$MYSQL_ROOT_PASS < $INSTDIR\backup\lamsDump.sql"
+ nsExec::ExecToStack $0
+ pop $1
+ pop $2
+ DetailPrint $0
+ DetailPrint $1
+ MessageBox MB_OK|MB_ICONEXCLAMATION "Rebuilding datbase $\n$0 $\n$1 $\n$2"
+
+ ${if} $0 != 0
+ goto error
+ ${endif}
+ ${endif}
+ */
+ goto done
+
+ error:
+ # Just leave database if there is an error (don't want to remove someone's existing db)
+ /*StrCpy $0 '$MYSQL_DIR\bin\mysql -e "drop database $DB_NAME" -u root'
+ DetailPrint $0
+ ${If} $9 != 0
+ StrCpy $0 '$MYSQL_DIR\bin\mysql -e "drop database $DB_NAME" -u root -p$MYSQL_ROOT_PASS'
+ ${EndIf}
+ nsExec::ExecToStack $0
+ Pop $1
+ Pop $2
+ ${If} $1 != 1
+ DetailPrint "Undid create database action."
+ ${Else}
+ DetailPrint "Could not remove database '$DB_NAME'."
+ ${EndIf}*/
+ MessageBox MB_OK|MB_ICONSTOP "Database setup failed. Please check your MySQL configuration and try again.$\r$\nError:$\r$\n$\r$\n$1"
+ Abort "Database setup failed."
+ done:
+
+FunctionEnd
+
+
+Function WriteRegEntries
+ WriteRegStr HKLM "${REG_HEAD}" "dir_jdk" $JDK_DIR
+ WriteRegStr HKLM "${REG_HEAD}" "dir_mysql" "$MYSQL_DIR\"
+ WriteRegStr HKLM "${REG_HEAD}" "dir_inst" $INSTDIR
+ WriteRegStr HKLM "${REG_HEAD}" "dir_repository" $LAMS_REPOSITORY
+ WriteRegStr HKLM "${REG_HEAD}" "version" "${VERSION}"
+ WriteRegStr HKLM "${REG_HEAD}" "db_name" $DB_NAME
+ WriteRegStr HKLM "${REG_HEAD}" "db_user" $DB_USER
+ WriteRegStr HKLM "${REG_HEAD}" "db_pass" $DB_PASS
+ WriteRegStr HKLM "${REG_HEAD}" "lams_domain" $LAMS_DOMAIN
+ WriteRegStr HKLM "${REG_HEAD}" "lams_port" $LAMS_PORT
+ WriteRegStr HKLM "${REG_HEAD}" "lams_locale" $LAMS_LOCALE
+ WriteRegStr HKLM "${REG_HEAD}" "wildfire_domain" $WILDFIRE_DOMAIN
+ WriteRegStr HKLM "${REG_HEAD}" "wildfire_user" $WILDFIRE_USER
+ WriteRegStr HKLM "${REG_HEAD}" "wildfire_pass" $WILDFIRE_PASS
+FunctionEnd
+
+Function OverWriteRetainedFiles
+ # overwriting retain files (moved to windows/temp) to install directory files
+ ${if} $RETAIN_FILES == "1"
+ #MessageBox MB_OK|MB_ICONSTOP "repository files to be retained"
+
+ #unzip repository files
+ setoutpath "$INSTDIR\backup"
+ strcpy $4 '$INSTDIR\zip\7za.exe x -aoa "backup.zip"'
+ nsExec::ExecToStack $4
+ #pop $0
+ #pop $1
+ #MessageBox MB_OK|MB_ICONSTOP "Extracting retained files: $0$\n$1"
+
+ #copy repository and uploaded files to install directory
+ CopyFiles "$WINTEMP\lams\backup\repository" "$INSTDIR\"
+ DetailPrint "$INSTDIR\repository"
+ CopyFiles "$WINTEMP\lams\backup\jboss-4.0.2\server\default\deploy\lams.ear\lams-www.war" "$INSTDIR\jboss-4.0.2\server\default\deploy\lams.ear\"
+ DetailPrint "Overwrite $INSTDIR\jboss-4.0.2\server\default\deploy\lams.ear\lams-www.war"
+ ${endif}
+ RMdir "$WINTEMP\lams"
+FunctionEnd
+
+Function SetupStartMenu
+ CreateDirectory "$SMPROGRAMS\LAMSv2"
+ CreateShortCut "$SMPROGRAMS\LAMSv2\Access LAMS.lnk" "http://$LAMS_DOMAIN:$LAMS_PORT/lams/"
+ CreateShortCut "$SMPROGRAMS\LAMSv2\LAMS Community.lnk" "http://www.lamscommunity.org"
+ CreateShortCut "$SMPROGRAMS\LAMSv2\Start LAMS.lnk" "$INSTDIR\lams-start.exe"
+ CreateShortCut "$SMPROGRAMS\LAMSv2\Stop LAMS.lnk" "$INSTDIR\lams-stop.exe"
+ CreateShortCut "$SMPROGRAMS\LAMSv2\Uninstall LAMS.lnk" "$INSTDIR\lams-uninstall.exe"
+FunctionEnd
+
+
+# cleanup functions
+Function RemoveTempFiles
+ Delete "$TEMP\LocalPortScanner.class"
+ Delete "$TEMP\mysql-ds.xml"
+ Delete "$TEMP\server.xml"
+ Delete "$TEMP\run.bat"
+ Delete "$TEMP\wrapper.conf"
+ Delete "$TEMP\dump.sql"
+ Delete "$TEMP\build.xml"
+ Delete "$TEMP\installer.properties"
+ Delete "$INSTDIR\wrapper.conf"
+ Delete "$TEMP\index.html"
+ Delete "$TEMP\lamsauthentication.xml"
+ Delete "$TEMP\update_lams_configuration.sql"
+ Delete "$TEMP\login-config.xml"
+ Delete "$INSTDIR\update_lams_configuration.sql"
+ RMDIR /r "$WINTEMP\lams"
+FunctionEnd
+
+Function .onInstFailed
+ ${if} $IS_UPDATE == 0
+ ;remove all files from the instdir excluding the backed up files
+ RMDir /r "$INSTDIR\jboss-4.0.2"
+ RMDir /r "$INSTDIR\dump"
+ RMDir /r "$INSTDIR\repository"
+ RMDir /r "$INSTDIR\temp"
+ RMDir /r "$INSTDIR\build"
+ Delete "$INSTDIR\index.html"
+ Delete "$INSTDIR\installer.properties"
+ Delete "$INSTDIR\installer_ant.log"
+ Delete "$INSTDIR\lams-start.exe"
+ Delete "$INSTDIR\lams-stop.exe"
+ Delete "$INSTDIR\lams_uninstall.exe"
+ Delete "$INSTDIR\license.txt"
+ Delete "$INSTDIR\readme.txt"
+
+ ; remove the db
+ strcpy $0 $MYSQL_DIR
+ strcpy $1 $DB_NAME
+ strcpy $2 $DB_USER
+ strcpy $3 $DB_PASS
+
+ StrLen $9 $3
+ StrCpy $4 '$0\bin\mysql -e "DROP DATABASE $1" -u $2'
+ DetailPrint $4
+ ${If} $9 != 0
+ StrCpy $4 '$0\bin\mysql -e "DROP DATABASE $1" -u $2 -p$3'
+ ${EndIf}
+ nsExec::ExecToStack $4
+ Pop $0
+ Pop $1
+ ${If} $0 == 1
+ MessageBox MB_OK|MB_ICONEXCLAMATION "Couldn't remove LAMS database:$\r$\n$\r$\n$1"
+ DetailPrint "Failed to remove LAMS database."
+ ${EndIf}
+
+ Call RemoveTempFiles
+ DeleteRegKey HKLM "${REG_HEAD}"
+ ${else}
+ ; Do cleanup for failed update
+ ${endif}
+FunctionEnd
+
+Function .onInstSuccess
+
+ DetailPrint "LAMS ${VERSION} configuration successful."
+ ${if} $IS_UPDATE == 0
+ Call RemoveTempFiles
+ RMDir /r "$INSTDIR\apache-ant-1.6.5"
+ RMDir /r "$INSTDIR\zip"
+ RMDir /r "$INSTDIR\backup\repository"
+ RMDIR /r "$INSTDIR\backup\jboss-4.0.2"
+ Delete "$INSTDIR\backup\lamsDump.sql"
+ ${else}
+ ;cleanup for update successfull install
+ #rmdir /r "$TEMP\lams\"
+ ${endif}
+FunctionEnd
+
+################################################################################
+# END CODE USED FOR INSTALLER #
+################################################################################
+
+
+
+
+
+################################################################################
+# CODE USED FOR LANGUAGE PACK #
+################################################################################
+
+Function languagePackInit
+ InitPluginsDir
+
+
+ #get the version in from the version date yyyy-mm-dd
+ call getVersionInt
+
+ # getting the mysql database details
+ ReadRegStr $MYSQL_DIR HKLM "${REG_HEAD}" "dir_mysql"
+ ReadRegStr $DB_NAME HKLM "${REG_HEAD}" "db_name"
+ ReadRegStr $DB_USER HKLM "${REG_HEAD}" "db_user"
+ ReadRegStr $DB_PASS HKLM "${REG_HEAD}" "db_pass"
+
+ # Abort install if already installed or if a newer version is installed
+ strcpy $OLD_VERSION "20061205" ;default old version (Date of First language pack of LAMS2)
+ ReadRegStr $0 HKLM "${REG_HEAD}" "language_pack"
+ ${VersionCompare} "$VERSION_INT" "$0" $1
+ ${If} $1 == "0"
+ DetailPrint "LAMS Language pack already up-to-date"
+ strcpy $UPDATE_LANGUAGES "0"
+ goto done
+ ${EndIf}
+ ${if} $1 == "2"
+ DetailPrint "LAMS Language pack already up-to-date"
+ goto done
+ strcpy $UPDATE_LANGUAGES "0"
+ ${EndIf}
+ strcpy $UPDATE_LANGUAGES "1"
+ ${If} $0 != ""
+ strcpy $OLD_VERSION $0
+ ${EndIf}
+
+ # Abort if there is no version of LAMS2 installed
+ ReadRegStr $0 HKLM "${REG_HEAD}" "version"
+ ${If} $0 = ""
+ MessageBox MB_OK|MB_ICONSTOP "No version of LAMS 2.x is installed$\n$\n\
+ Please install LAMS 2 before continuing"
+ Abort
+ ${EndIf}
+
+ #set the installation directory
+ ReadRegStr $0 HKLM "${REG_HEAD}" "dir_inst"
+ strcpy $LAMS_DIR $0
+ strcpy $INSTDIR "$0\jboss-4.0.2\server\default\deploy\lams.ear\lams-dictionary.jar\org\lamsfoundation\lams"
+
+ done:
+FunctionEnd
+
+Function getVersionInt
+ push ${LANGUAGE_PACK_VERSION}
+ push "-"
+ push 0
+ push 1
+ call Strtok
+ pop $VERSION_INT
+
+ push ${LANGUAGE_PACK_VERSION}
+ push "-"
+ push 1
+ push 1
+ call Strtok
+ pop $0
+ strcpy $VERSION_INT "$VERSION_INT$0"
+
+ push ${LANGUAGE_PACK_VERSION}
+ push "-"
+ push 2
+ push 1
+ call Strtok
+ pop $0
+ strcpy $VERSION_INT "$VERSION_INT$0"
+
+FunctionEnd
+
+; copies all the lams_blah project language files from lams_blah/conf/languages
+; files are compresses then extracted to the jboss language directory:
+; C:\lams\jboss-4.0.2\server\default\deploy\lams.ear\lams-dictionary.jar\org\lamsfoundation\lams
+Function copyProjects
+
+ ;copying COMMON project language files
+ setoutpath "$INSTDIR"
+ detailprint "Extracting language files for lams_common"
+ file /a "..\..\lams_common\conf\language\*"
+
+ ;copying ADMIN project language files
+ setoutpath "$INSTDIR\admin"
+ detailprint "Extracting language files for lams_admin"
+ file /a "..\..\lams_admin\conf\language\*"
+
+ ;copying CENTRAL project language files
+ setoutpath "$INSTDIR\central"
+ detailprint "Extracting language files for lams_central"
+ file /a "..\..\lams_central\conf\language\*"
+
+ ;copying CONTENTREPOSITORY project language files
+ setoutpath "$INSTDIR\contentrepository"
+ detailprint "Extracting language files for lams_contentrepository"
+ file /a "..\..\lams_contentrepository\conf\language\*"
+
+ ;copying LEARNING project language files
+ setoutpath "$INSTDIR\learning"
+ detailprint "Extracting language files for lams_learning"
+ file /a "..\..\lams_learning\conf\language\*"
+
+ ;copying MONITORING project language files
+ setoutpath "$INSTDIR\monitoring"
+ detailprint "Extracting language files for lams_monitoring"
+ file /a "..\..\lams_monitoring\conf\language\*"
+
+FunctionEnd
+
+; first, finds the location of the language files in the database
+; then copy the required files to the dirname
+Function copyllid
+
+ ${CS_FOLDERS->Init}
+ ${FS_FOLDERS->Init}
+ ${RF_FOLDERS->Init}
+
+ ; getting the rows for Chat and Scribe
+ strcpy $SQL_QUERY '"SELECT learning_library_id FROM lams_learning_library WHERE title = $\'Chat and Scribe$\';"'
+ strcpy $SQL_QUERY '"$MYSQL_DIR\bin\mysql.exe" -u"$DB_USER" -p"$DB_PASS" -s -i -B $DB_NAME -e $SQL_QUERY'
+ strcpy $FOLDER_FLAG "0"
+ call executeSQLScript
+ pop $0
+ #detailprint "SQL script result for Chat and Scribe: $\n$0"
+
+ ; getting the rows for Forum and Scribe
+ strcpy $SQL_QUERY '"SELECT learning_library_id FROM lams_learning_library WHERE title = $\'Forum and Scribe$\';"'
+ strcpy $SQL_QUERY '"$MYSQL_DIR\bin\mysql.exe" -u"$DB_USER" -p"$DB_PASS" -s -i -B $DB_NAME -e $SQL_QUERY'
+ strcpy $FOLDER_FLAG "1"
+ call executeSQLScript
+ pop $0
+ #detailprint "SQL script result for Forum and Scribe: $\n$0"
+
+ ; getting the rows for Resources and Forum
+ strcpy $SQL_QUERY '"SELECT learning_library_id FROM lams_learning_library WHERE title = $\'Resources and Forum$\';"'
+ strcpy $SQL_QUERY '"$MYSQL_DIR\bin\mysql.exe" -u"$DB_USER" -p"$DB_PASS" -s -i -B $DB_NAME -e $SQL_QUERY'
+ strcpy $FOLDER_FLAG "2"
+ call executeSQLScript
+ pop $0
+ #detailprint "SQL script result for Resource and Forum: $\n$0"
+
+ ; copy all the folders for llid Chat and Scribe
+ IntOp $R0 "$CS_FOLDERS_UBound" + 1
+ ${do}
+ ${CS_FOLDERS->Get} $CS_FOLDERS_UBound $R1
+ ${CS_FOLDERS->Delete} $CS_FOLDERS_UBound
+ IntOp $R0 "$CS_FOLDERS_UBound" + 1
+ #MessageBox MB_OK|MB_ICONEXCLAMATION "Chat and Scribe: $R1 $\nElements $R0"
+
+ setoutpath "$INSTDIR\library\llid$R1"
+ detailprint "Copying language files for chat and scribe"
+ file /a "..\..\lams_build\librarypackages\chatscribe\language\*"
+
+ ${loopuntil} $R0 == "0"
+
+ ; copy all the folders for llid Forum and Scribe
+ IntOp $R0 "$FS_FOLDERS_UBound" + 1
+ ${do}
+ ${FS_FOLDERS->Get} $FS_FOLDERS_UBound $R1
+ ${FS_FOLDERS->Delete} $FS_FOLDERS_UBound
+ IntOp $R0 "$FS_FOLDERS_UBound" + 1
+ #MessageBox MB_OK|MB_ICONEXCLAMATION "Forum and Scribe: $R1 $\nElements $R0"
+
+ setoutpath "$INSTDIR\library\llid$R1"
+ detailprint "Copying language files for forum and scribe"
+ file /a "..\..\lams_build\librarypackages\forumscribe\language\*"
+ ${loopuntil} $R0 == "0"
+
+ ; copy all the folders for llid Resource and Forum
+ IntOp $R0 "$RF_FOLDERS_UBound" + 1
+ ; copy all the folders for llid Forum and Scribe
+ IntOp $R0 "$FS_FOLDERS_UBound" + 1
+ ${do}
+ ${RF_FOLDERS->Get} $RF_FOLDERS_UBound $R1
+ ${RF_FOLDERS->Delete} $RF_FOLDERS_UBound
+ IntOp $R0 "$RF_FOLDERS_UBound" + 1
+ #MessageBox MB_OK|MB_ICONEXCLAMATION "Resource and Forum: $R1 $\nElements $R0"
+ setoutpath "$INSTDIR\library\llid$R1"
+ detailprint "Copying language files for resource and forum"
+ file /a "..\..\lams_build\librarypackages\shareresourcesforum\language\*"
+ ${loopuntil} $R0 == "0"
+
+FunctionEnd
+
+
+; Executing sql scripts
+; Puts the result of sql script on the stack
+Function executeSQLScript
+ nsExec::ExecToStack $SQL_QUERY
+ detailprint $SQL_QUERY
+ pop $0
+ pop $1
+
+ #check for errors and write result to install window
+ ${if} $0 != 0
+ goto Errors
+ ${endif}
+
+ strcpy $1 $1 -2
+ push $1
+
+ ; Getting the muliple entries out
+ ${while} $1 != ""
+ push "$\n"
+ push $1
+ call SplitFirstStrPart
+ pop $R0
+ pop $1
+
+ ${if} $FOLDER_FLAG == "0"
+ ${CS_FOLDERS->Push} $R0
+ #MessageBox MB_OK|MB_ICONEXCLAMATION "Chat and scribe: $R0 $\n"
+ ${endif}
+ ${if} $FOLDER_FLAG == "1"
+ ${FS_FOLDERS->Push} $R0
+ #MessageBox MB_OK|MB_ICONEXCLAMATION "Forum and Scribe: $R0"
+ ${endif}
+ ${if} $FOLDER_FLAG == "2"
+ ${RF_FOLDERS->Push} $R0
+ #MessageBox MB_OK|MB_ICONEXCLAMATION "Resource and Forum: $R0"
+ ${endif}
+ ${endwhile}
+
+ goto Finish
+ Errors:
+ DetailPrint "Can't read from $MYSQL_DIR\$DB_NAME database"
+ MessageBox MB_OK|MB_ICONSTOP "LAMS configuration failed. Please check you database name, user and password are set the same as when you installed LAMS$\r$\nError:$\r$\n$\r$\n$1"
+ Abort "LAMS configuration failed."
+ Finish:
+ clearerrors
+
+FunctionEnd
+
+Function SplitFirstStrPart
+ Exch $R0
+ Exch
+ Exch $R1
+ Push $R2
+ Push $R3
+ StrCpy $R3 $R1
+ StrLen $R1 $R0
+ IntOp $R1 $R1 + 1
+ loop:
+ IntOp $R1 $R1 - 1
+ StrCpy $R2 $R0 1 -$R1
+ StrCmp $R1 0 exit0
+ StrCmp $R2 $R3 exit1 loop
+ exit0:
+ StrCpy $R1 ""
+ Goto exit2
+ exit1:
+ IntOp $R1 $R1 - 1
+ StrCmp $R1 0 0 +3
+ StrCpy $R2 ""
+ Goto +2
+ StrCpy $R2 $R0 "" -$R1
+ IntOp $R1 $R1 + 1
+ StrCpy $R0 $R0 -$R1
+ StrCpy $R1 $R2
+ exit2:
+ Pop $R3
+ Pop $R2
+ Exch $R1 ;rest
+ Exch
+ Exch $R0 ;first
+FunctionEnd
+
+;checks if the languages in the language pack exist
+;inserts rows into lams_supported_locale iff the languages dont exist
+Function updateDatabase
+
+ ; get the procedure scripts required
+ setoutpath "$INSTDIR"
+ File /a updateLocales.sql
+ File /a LanguagePack.xml
+
+
+ setoutpath "$INSTDIR\apache-ant-1.6.5\bin"
+ File /a "..\apache-ant-1.6.5\bin\*"
+
+ setoutpath "$INSTDIR\apache-ant-1.6.5\lib"
+ File /a "..\apache-ant-1.6.5\lib\*"
+
+ ; update locals must be stored as a procedure first
+ ; nsExec wont let me do "mysql < insertLocale.sql" so i had to use ant
+ ; create installer.properties
+ ClearErrors
+ FileOpen $0 $TEMP\installer.properties w
+ IfErrors 0 +2
+ goto error
+
+ # convert '\' to '/' for Ant's benefit
+ Push $TEMP
+ Push "\"
+ Call StrSlash
+ Pop $2
+ FileWrite $0 "TEMP=$2$\r$\n"
+
+ Push $INSTDIR
+ Push "\"
+ Call StrSlash
+ Pop $2
+ FileWrite $0 "INSTDIR=$2/$\r$\n"
+ FileWrite $0 "DB_NAME=$DB_NAME$\r$\n"
+ FileWrite $0 "DB_USER=$DB_USER$\r$\n"
+ FileWrite $0 "DB_PASS=$DB_PASS$\r$\n"
+ Push $LAMS_DIR
+ Push "\"
+ Call StrSlash
+ Pop $2
+ FileWrite $0 "EARDIR=$2/jboss-4.0.2/server/default/deploy/lams.ear$\r$\n"
+
+ copyfiles "$TEMP\installer.properties" $INSTDIR
+
+ SetOutPath $INSTDIR
+ File /a "LanguagePack.xml"
+
+ ; update locals must be stored as a procedure first
+ ; use ANT to store procedures
+ DetailPrint '$INSTDIR\apache-ant-1.6.5\bin\ant.bat insertLocale-db'
+ nsExec::ExecToStack '$INSTDIR\apache-ant-1.6.5\bin\ant.bat -buildfile $INSTDIR\LanguagePack.xml insertLocale-db'
+ Pop $0 ; return code, 0=success, error=fail
+ Pop $1 ; console output
+ DetailPrint "Database insert status: $0"
+ DetailPrint "Database insert output: $1"
+ ${if} $0 != 0
+ goto error
+ ${endif}
+
+ goto done
+ error:
+ DetailPrint "Ant insertLocale-db failed."
+ MessageBox MB_OK|MB_ICONSTOP "LAMS configuration failed. Please check your LAMS configuration and try again.$\r$\nError:$\r$\n$\r$\n$1"
+ Abort "LAMS configuration failed."
+
+ done:
+ ; remove the sql scripts
+ delete "$INSTDIR\updateLocales.sql"
+ delete "$INSTDIR\LanguagePack.xml"
+ delete "$INSTDIR\installer.properties"
+ rmdir /r "$INSTDIR\apache-ant-1.6.5"
+
+FunctionEnd
+################################################################################
+# END CODE USED FOR LANGUAGE PACK #
+################################################################################
+
+
+
+
+
+
+
+################################################################################
+# CODE USED FOR UNINSTALLER #
+################################################################################
+# Uninstaller
+#
+Var UNINSTALL_RETAIN
+#Var UNINSTALL_DB
+#Var UNINSTALL_RP
+#Var UNINSTALL_CF
+
+Function un.onInit
+ ;!insertmacro MUI_LANGDLL_DISPLAY
+ !insertmacro MUI_INSTALLOPTIONS_EXTRACT "uninstall.ini"
+
+ # check if LAMS is stopped
+ SetOutPath $TEMP
+ File "..\build\LocalPortScanner.class"
+ ReadRegStr $0 HKLM "${REG_HEAD}" "lams_port"
+ ReadRegStr $1 HKLM "${REG_HEAD}" "dir_jdk"
+ Goto checklams
+
+ checklams:
+ nsExec::ExecToStack "$1\bin\java LocalPortScanner $0"
+ Pop $2
+ ${If} $2 == 2
+ MessageBox MB_YESNO|MB_ICONQUESTION "LAMS appears to be running. Do you wish to stop LAMS?" \
+ IDYES stoplams \
+ IDNO quit
+ ${EndIf}
+ Goto continue
+ stoplams:
+ nsExec::ExecToStack 'sc stop LAMSv2'
+ Pop $0
+ Pop $1
+ DetailPrint "Sent stop command to LAMS service."
+ sleep 10000
+ Goto checklams
+ # sleep for 10s to ensure that JBoss closes properly
+
+ quit:
+ Delete "$TEMP\LocalPortScanner.class"
+ MessageBox MB_OK|MB_ICONSTOP "Uninstall cannot continue while LAMS is running."
+ Abort
+
+ continue:
+ Delete "$TEMP\LocalPortScanner.class"
+FunctionEnd
+
+Function un.PreUninstall
+ !insertmacro MUI_HEADER_TEXT "Remove LAMS Database" "Choose whether to remove the LAMS database."
+ !insertmacro MUI_INSTALLOPTIONS_DISPLAY "uninstall.ini"
+FunctionEnd
+
+Function un.PostUninstall
+ !insertmacro MUI_INSTALLOPTIONS_READ $UNINSTALL_RETAIN "uninstall.ini" "Field 1" "State"
+
+FunctionEnd
+
+
+# http://nsis.sourceforge.net/StrStr
+#
+!define un.StrStr "!insertmacro un.StrStr"
+
+!macro un.StrStr ResultVar String SubString
+ Push `${String}`
+ Push `${SubString}`
+ Call un.StrStr
+ Pop `${ResultVar}`
+!macroend
+
+Function un.StrStr
+/*After this point:
+ ------------------------------------------
+ $R0 = SubString (input)
+ $R1 = String (input)
+ $R2 = SubStringLen (temp)
+ $R3 = StrLen (temp)
+ $R4 = StartCharPos (temp)
+ $R5 = TempStr (temp)*/
+
+ ;Get input from user
+ Exch $R0
+ Exch
+ Exch $R1
+ Push $R2
+ Push $R3
+ Push $R4
+ Push $R5
+
+ ;Get "String" and "SubString" length
+ StrLen $R2 $R0
+ StrLen $R3 $R1
+ ;Start "StartCharPos" counter
+ StrCpy $R4 0
+
+ ;Loop until "SubString" is found or "String" reaches its end
+ ${Do}
+ ;Remove everything before and after the searched part ("TempStr")
+ StrCpy $R5 $R1 $R2 $R4
+
+ ;Compare "TempStr" with "SubString"
+ ${IfThen} $R5 == $R0 ${|} ${ExitDo} ${|}
+ ;If not "SubString", this could be "String"'s end
+ ${IfThen} $R4 >= $R3 ${|} ${ExitDo} ${|}
+ ;If not, continue the loop
+ IntOp $R4 $R4 + 1
+ ${Loop}
+
+/*After this point:
+ ------------------------------------------
+ $R0 = ResultVar (output)*/
+
+ ;Remove part before "SubString" on "String" (if there has one)
+ StrCpy $R0 $R1 `` $R4
+
+ ;Return output to user
+ Pop $R5
+ Pop $R4
+ Pop $R3
+ Pop $R2
+ Pop $R1
+ Exch $R0
+FunctionEnd
+
+
+Section "Uninstall"
+
+
+ strcpy $WINTEMP "C:\WINDOWS\Temp"
+ RMDir /r "$WINTEMP\lams\backup"
+ CreateDirectory "$WINTEMP\lams\backup"
+
+ #strcpy $RETAIN_DIR "$INSTDIR\backup_$TIMESTAMP"
+ strcpy $RETAIN_DIR "$INSTDIR\backup"
+ CreateDirectory $RETAIN_DIR
+
+ ;Now copy files that are to be retained to the temp folder
+ ${If} $UNINSTALL_RETAIN == 1
+ #MessageBox MB_OK|MB_ICONEXCLAMATION "retaining repository"
+ ; KEEP repository and uploaded files
+ ; Copy repository and jboss-4.0.2\server\default\deploy\lams.ear\lams-www.war to backup
+ ReadRegStr $6 HKLM "${REG_HEAD}" "dir_repository"
+
+ CreateDirectory "$RETAIN_DIR\repository"
+ CreateDirectory "$RETAIN_DIR\jboss-4.0.2\server\default\deploy\lams.ear\lams-www.war\"
+
+ #MessageBox MB_OK|MB_ICONEXCLAMATION "Copying files to $RETAIN_DIR\jboss-4.0.2\server\default\deploy\lams.ear\lams-www.war\"
+ copyfiles /silent $6 "$RETAIN_DIR"
+ copyfiles /silent "$INSTDIR\jboss-4.0.2\server\default\deploy\lams.ear\lams-www.war\*" "$RETAIN_DIR\jboss-4.0.2\server\default\deploy\lams.ear\lams-www.war\"
+
+ DetailPrint 'Saving repository and uploaded files to: $RETAIN_DIR'
+ #MessageBox MB_OK|MB_ICONEXCLAMATION "Copying files from instdir to temp"
+ copyfiles /silent "$RETAIN_DIR\*" "$WINTEMP\lams\backup"
+ ${EndIf}
+
+ setoutpath $temp
+ RMdir /r "$INSTDIR\jboss-4.0.2\"
+ RMdir /r "$INSTDIR\"
+ #MessageBox MB_OK|MB_ICONEXCLAMATION "INSTDIR DELETED FFS!"
+
+ ; NOT SURE IF THIS SECTION OF CODE IS NECCESSARY
+ ReadRegStr $0 HKLM "${REG_HEAD}" "dir_conf"
+ RMDir /r $0
+
+
+
+
+ ; RESTORE Retained folders to their original localtion then delete temp files
+ ; DUMP database into backup folder
+ ReadRegStr $0 HKLM "${REG_HEAD}" "dir_mysql"
+ ReadRegStr $1 HKLM "${REG_HEAD}" "db_name"
+ ReadRegStr $2 HKLM "${REG_HEAD}" "db_user"
+ ReadRegStr $3 HKLM "${REG_HEAD}" "db_pass"
+ ${If} $UNINSTALL_RETAIN == 1
+ #Messagebox MB_OK|MB_ICONEXCLAMATION "retaining db"
+ ; DUMP the database file into the retained install directory
+
+ CreateDirectory "$RETAIN_DIR"
+ Strcpy $4 "$0\bin\mysqldump -r $WINTEMP\lams\backup\lamsDump.sql $1 -u $2 -p$3"
+ nsExec::ExecToStack $4
+ Pop $8
+ Pop $9
+ DetailPrint 'Dumping database to: $RETAIN_DIR'
+
+ Setoutpath $INSTDIR
+ File /r "..\zip"
+
+ #ZIP UP ALL RETAINED FILES
+ IfFileExists "$WINTEMP\lams\backup\backup.zip" removeZip leaveFolder
+ removeZip:
+ delete "$WINTEMP\lams\backup\backup.zip"
+ leaveFolder:
+
+ SetOutPath "$WINTEMP\lams\backup"
+ Strcpy $4 '$INSTDIR\zip\7za.exe a -r -tzip "$RETAIN_DIR\backup.zip" "*"'
+ nsExec::ExecToStack $4
+ rmdir /r "$INSTDIR\zip"
+ #pop $5
+ #pop $6
+ #MessageBox MB_OK|MB_ICONEXCLAMATION "ZIP RESULT: $5$\n$6$\n"
+ rmdir $RETAIN_DIR
+ ${EndIf}
+ RMDir /r "$WINTEMP\lams"
+
+ StrLen $9 $3
+ StrCpy $4 '$0\bin\mysql -e "DROP DATABASE $1" -u $2'
+ DetailPrint $4
+ ${If} $9 != 0
+ StrCpy $4 '$0\bin\mysql -e "DROP DATABASE $1" -u $2 -p$3'
+ ${EndIf}
+ nsExec::ExecToStack $4
+ Pop $0
+ Pop $1
+ ${If} $0 == 1
+ MessageBox MB_OK|MB_ICONEXCLAMATION "Couldn't remove LAMS database:$\r$\n$\r$\n$1"
+ DetailPrint "Failed to remove LAMS database."
+ ${EndIf}
+
+ ; batch file doesn't want to work when called with ExecToStack
+ ; nsExec::ExecToStack '$INSTDIR\jboss-4.0.2\bin\UninstallLAMS-NT.bat'
+ nsExec::ExecToStack 'sc delete LAMSv2'
+ Pop $0
+ Pop $1
+ ; can't call StrStr from within uninstaller unless it's a un. function
+ ${un.StrStr} $2 $1 "SUCCESS"
+ ${If} $2 == ""
+ MessageBox MB_OK|MB_ICONEXCLAMATION "Couldn't remove LAMSv2 service.$\r$\n$\r$\n$1"
+ DetailPrint "Failed to remove LAMSv2 service."
+ ${Else}
+ DetailPrint "Removed LAMSv2 service."
+ ${EndIf}
+ /*StrCmp $1 "[SC] Delete Service SUCCESS$\r$\n" 0 +3
+ DetailPrint "Removed LAMSv2 service."
+ Goto +3
+ MessageBox MB_OK|MB_ICONSTOP "Couldn't remove LAMSv2 service.$\r$\n$\r$\n$1"
+ DetailPrint "Failed to remove LAMSv2 service."*/
+
+ DeleteRegKey HKLM "${REG_HEAD}"
+ DetailPrint "Removed registry entries."
+ RMDir /r "$SMPROGRAMS\LAMSv2"
+ DetailPrint "Removed start menu entries."
+ DetailPrint "Uninstall complete."
+SectionEnd
+
+################################################################################
+# END CODE USED FOR UNINSTALLER #
+################################################################################
\ No newline at end of file
Index: win_installer/templates/buildcombinedtasks.xml
===================================================================
diff -u
--- win_installer/templates/buildcombinedtasks.xml (revision 0)
+++ win_installer/templates/buildcombinedtasks.xml (revision 3e0afea3eb6fc82e9bb97b1374c29caa67439d87)
@@ -0,0 +1,101 @@
+
+
+
+
+