Index: win_installer/src/checkmysql.java =================================================================== diff -u --- win_installer/src/checkmysql.java (revision 0) +++ win_installer/src/checkmysql.java (revision 21895ae576cdb549e81aec0f8d5a68ac82f21d85) @@ -0,0 +1,92 @@ +import java.io.File; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.Statement; +import java.util.Properties; +import java.sql.SQLException; +import java.net.UnknownHostException; + +public class checkmysql +{ + private String version; + private String dbDriverClass; + private String dbDriverUrl; + private String dbUsername; + private String dbPassword; + + // Check that the mysql version is valid + public static void main(String[] args) throws SQLException, UnknownHostException + { + checkmysql me = new checkmysql(); + + if (args.length < 4) + { + System.out.println("Usage: Java checkmysql dbDriverUrl dbUsername dbPassword version"); + System.exit(1); + } + else + { + try + { + me.execute(args[0], args[1], args[2], args[3]); + } + catch (UnknownHostException e) + { + System.out.println("MySql Host is not valid, please enter a new value"); + System.exit(1); + } + } + } + + public void execute(String url, String user, String pass, String version) throws SQLException, UnknownHostException + { + try{ + this.version = version; + this.dbDriverClass = "com.mysql.jdbc.Driver"; + this.dbDriverUrl = url; + this.dbUsername = user; + this.dbPassword = pass; + + Class.forName(dbDriverClass); + Connection conn = DriverManager.getConnection(dbDriverUrl, dbUsername, dbPassword); + conn.setAutoCommit(false); + PreparedStatement stmt = conn.prepareStatement("SELECT * FROM lams_configuration WHERE config_key= \"Version\""); + ResultSet results = stmt.executeQuery(); + + if (results.first() == false) + { + throw new SQLException("Could not find LAMS database using url: " + dbDriverUrl); + } + else + { + String dbVersion = results.getString("config_value"); + if (dbVersion.equals(version) == false) + { + throw new SQLException("Your current LAMS version: " +dbVersion+ " is not compatible with this upgrade. Required version: " +version); + } + else + { + System.out.println("LAMS version is compatible with this upgrade.\n"); + } + } + conn.close(); + } + catch (SQLException e) + { + System.out.println(e.getMessage()); + System.out.println("Upgrade failed. LAMS database check failed.\n"); + System.exit(1); + } + + catch (Exception e) + { + System.out.println(e.getMessage()); + System.out.println("Upgrade failed. Unknown failure checking LAMS database version.\n"); + e.printStackTrace(); + System.exit(1); + } + } + +} Index: win_installer/src/lams-update.ini =================================================================== diff -u --- win_installer/src/lams-update.ini (revision 0) +++ win_installer/src/lams-update.ini (revision 21895ae576cdb549e81aec0f8d5a68ac82f21d85) @@ -0,0 +1,50 @@ +[Settings] +NumFields=6 + +[Field 1] +Type=GroupBox +Left=0 +Top=0 +Right=-1 +Bottom=-4 +Text=Configure LAMS... + +[Field 2] +Type=DirRequest +Left=7 +Top=82 +Right=152 +Bottom=95 + +[Field 3] +Type=Label +Left=7 +Top=70 +Right=152 +Bottom=79 +Text=Java JDK directory... + +[Field 4] +Type=Link +Left=7 +Top=117 +Right=152 +Bottom=126 +Text=Click to get online help for these options +State=http://wiki.lamsfoundation.org/display/lamsdocs/Windows+Installer+Help#WindowsInstallerHelp-lams + +[Field 5] +Type=Label +Left=7 +Top=26 +Right=152 +Bottom=33 +Text=MySql Host... + +[Field 6] +Type=Text +Left=7 +Top=37 +Right=134 +Bottom=50 +State=localhost Index: win_installer/src/updater.nsi =================================================================== diff -u -r9d0aa6c49c98796f949a711c26b0632a78ccc4f6 -r21895ae576cdb549e81aec0f8d5a68ac82f21d85 --- win_installer/src/updater.nsi (.../updater.nsi) (revision 9d0aa6c49c98796f949a711c26b0632a78ccc4f6) +++ win_installer/src/updater.nsi (.../updater.nsi) (revision 21895ae576cdb549e81aec0f8d5a68ac82f21d85) @@ -126,6 +126,7 @@ # reserve files # ReserveFile "lams.ini" +ReserveFile "lams-update.ini" ReserveFile "lams2.ini" ReserveFile "mysql.ini" ReserveFile "wildfire.ini" @@ -436,6 +437,7 @@ # extract custom page display config !insertmacro MUI_INSTALLOPTIONS_EXTRACT "lams.ini" + !insertmacro MUI_INSTALLOPTIONS_EXTRACT "lams-update.ini" !insertmacro MUI_INSTALLOPTIONS_EXTRACT "lams2.ini" !insertmacro MUI_INSTALLOPTIONS_EXTRACT "mysql.ini" !insertmacro MUI_INSTALLOPTIONS_EXTRACT "wildfire.ini" @@ -508,11 +510,7 @@ ${StrStr} $0 $1 "1.5" ${If} $0 == "" MessageBox MB_OK|MB_ICONEXCLAMATION "Could not find a Java 5 or Java 6 installation in the given directory. $\r$\nPlease check your Java installation and try again.$\r$\n$\r$\n$JDK_DIR" - ${if} $IS_UPDATE == "0" - Abort - ${else} - quit - ${endif} + Abort ${EndIf} ${EndIf} FunctionEnd @@ -734,10 +732,10 @@ !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} - !insertmacro MUI_INSTALLOPTIONS_WRITE "lams.ini" "Field 2" "State" "$JDK_DIR" - !insertmacro MUI_INSTALLOPTIONS_WRITE "lams.ini" "Field 4" "State" "$INSTDIR\repository" + !insertmacro MUI_INSTALLOPTIONS_WRITE "lams-update.ini" "Field 2" "State" "$JDK_DIR" + !insertmacro MUI_INSTALLOPTIONS_WRITE "lams-update.ini" "Field 4" "State" "$INSTDIR\repository" !insertmacro MUI_HEADER_TEXT "Java setup" "If you have changed your java installation since installing LAMS ${PREVIOUS_VERSION}, please enter the new details." - !insertmacro MUI_INSTALLOPTIONS_DISPLAY "lams.ini" + !insertmacro MUI_INSTALLOPTIONS_DISPLAY "lams-update.ini" ${endif} FunctionEnd @@ -747,9 +745,38 @@ ${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" + + # check java version using given dir + Call Checkjava2 + ${else} + !insertmacro MUI_INSTALLOPTIONS_READ $MYSQL_HOST "lams-update.ini" "Field 8" "State" + !insertmacro MUI_INSTALLOPTIONS_READ $JDK_DIR "lams-update.ini" "Field 2" "State" + #!insertmacro MUI_INSTALLOPTIONS_READ $LAMS_REPOSITORY "lams-update.ini" "Field 4" "State" + + # check java version using given dir + Call Checkjava2 + + Setoutpath "$TEMP\lams\" + File "..\build\checkmysql.class" + File "..\mysql-connector-java-3.1.12-bin.jar" + nsExec::ExecToStack '$JDK_DIR\bin\java.exe -cp ".;$TEMP\lams\mysql-connector-java-3.1.12-bin.jar" checkmysql "jdbc:mysql://$MYSQL_HOST/$DB_NAME?characterEncoding=utf8" $DB_USER $DB_PASS 2.0.2' + Pop $0 + Pop $1 + ${If} $0 != 0 + ${StrStr} $3 $1 "UnknownHostException" + ${if} $3 == "" + MessageBox MB_OK|MB_ICONEXCLAMATION "An error occurred whilst checking your mysql configuration $\r$\n$\r$\nError: $1" + ${else} + MessageBox MB_OK|MB_ICONEXCLAMATION "An error occurred whilst checking your mysql configuration $\r$\n$\r$\nError: Could not connect to MySql host: $MYSQL_HOST. Please check your database configurations and try again." + ${endif} + Abort + ${EndIf} + + Delete "$TEMP\lams\checkmysql.class" + Delete "$TEMP\mysql-connector-java-3.1.12-bin.jar" + ${endif} - # check java version using given dir - Call Checkjava2 + FunctionEnd