/// <summary> /// Class constructor /// </summary> /// <param name="localData">Local data reference</param> public CUpdatesManager(CLocalData localData) { m_localData = localData; m_versionFileParser = new CVersionFileParser(m_localData); m_scheduleUpdates = new CScheduleUpdates(m_localData); m_scheduleUpdates.Event_UpdateSystem += UpdateSystem; m_systemFilesManager = new CSystemFilesManager(m_localData); m_comUpdaterService = new CComUpdaterService(); m_comRemoteManager = new CComRemoteManager(); m_comWebManager = new CComWebManager(); //Descargar los archivos de actualización si no están descargados DownloadSwUpdate(); //Enviar comprobación de actualización al Web Manager string ipWebManager = m_localData.GetWebManagerUri(); if (!string.IsNullOrEmpty(ipWebManager)) { m_comWebManager.StartUpdate(ipWebManager); } }
/// <summary> /// Updates the system with the latest software version from the JBC's server /// </summary> public void UpdateSystem() { //Si está actualizando no recibir peticiones if (m_isUpdating) { return; } m_isUpdating = true; //Actualiza la fecha de la última actualización del software m_localData.SetLastUpdateDate(); stSwVersion infoUpdateSw = GetInfoNewUpdate(); //Comprobar si hay actualizacion software del StationController if (infoUpdateSw.stationControllerSwAvailable) { //Descargar la versión de software y actualizar DB m_systemFilesManager.DownloadFile(infoUpdateSw.stationControllerSwUrl); m_localData.SetStationControllerSwInfo(infoUpdateSw.stationControllerSwVersion, infoUpdateSw.stationControllerSwDate, infoUpdateSw.stationControllerSwUrl); } //Comprobar si hay actualizacion software del RemoteManager if (infoUpdateSw.remoteManagerSwAvailable) { //Descargar la versión de software y actualizar DB m_systemFilesManager.DownloadFile(infoUpdateSw.remoteManagerSwUrl); m_localData.SetRemoteManagerSwInfo(infoUpdateSw.remoteManagerSwVersion, infoUpdateSw.remoteManagerSwDate, infoUpdateSw.remoteManagerSwUrl); } //Comprobar si hay actualizacion software del WebManager if (infoUpdateSw.webManagerSwAvailable) { //Descargar la versión de software y actualizar DB m_systemFilesManager.DownloadFile(infoUpdateSw.webManagerSwUrl); m_localData.SetWebManagerSwInfo(infoUpdateSw.webManagerSwVersion, infoUpdateSw.webManagerSwDate, infoUpdateSw.webManagerSwUrl); } //Si hay actualización del WebManager pero no del HostController //Ya que si hay actualización del HostController, éste se reiniciará y comprobará si se tiene que actualizar if (infoUpdateSw.webManagerSwAvailable && !infoUpdateSw.hostControllerSwAvailable) { //Descargar la versión de software y actualizar DB m_systemFilesManager.DownloadFile(infoUpdateSw.webManagerSwUrl); m_localData.SetWebManagerSwInfo(infoUpdateSw.webManagerSwVersion, infoUpdateSw.webManagerSwDate, infoUpdateSw.webManagerSwUrl); //Enviar comprobación de actualización al Web Manager string ipWebManager = m_localData.GetWebManagerUri().ToString(); if (!string.IsNullOrEmpty(ipWebManager)) { m_comWebManager.StartUpdate(ipWebManager); } } //Comprobar si hay actualizacion software del HostController if (infoUpdateSw.hostControllerSwAvailable) { //Descargar la versión de software, no actualiza ls DB para que al reiniciar el HostController ejecute los scripts sql de actualización string hostControllerSwUpdatePath = m_systemFilesManager.DownloadFile(infoUpdateSw.hostControllerSwUrl); //Actualizar el HostController m_comUpdaterService.SendUpdateSw(hostControllerSwUpdatePath, System.Net.Dns.GetHostName()); } m_isUpdating = false; }