/// <summary>
/// Устанавливает обновление базы данных.
/// </summary>
/// <param name="ResFileName">Имя файла для обновления</param>
/// <param name="UpdateURL">URL загрузки обновления</param>
/// <param name="UpdateHash">Контрольная сумма файла обновления</param>
/// <returns>Возвращает true при успешной установке обновления, иначе - false.</returns>
private bool InstallDatabaseUpdate(string ResFileName, string UpdateURL, string UpdateHash)
{
// Задаём значения переменных по умолчанию...
bool Result = false;
// Проверяем наличие прав на запись в каталог...
if (FileManager.IsDirectoryWritable(FullAppPath))
{
// Генерируем пути к файлам...
string UpdateFileName = UpdateManager.GenerateUpdateFileName(Path.Combine(FullAppPath, ResFileName));
string UpdateTempFile = Path.GetTempFileName();
// Загружаем файл с сервера...
FormManager.FormShowDownloader(UpdateURL, UpdateTempFile);
try
{
// Проверяем контрольную сумму...
if (FileManager.CalculateFileMD5(UpdateTempFile) == UpdateHash)
{
// Копируем загруженный файл...
File.Copy(UpdateTempFile, UpdateFileName, true);
// Выводим сообщение об успехе...
MessageBox.Show(AppStrings.UPD_UpdateDBSuccessful, Properties.Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Information);
// Возвращаем положительный результат...
Result = true;
}
else
{
// Выводим сообщение о несовпадении хешей...
MessageBox.Show(AppStrings.UPD_HashFailure, Properties.Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch (Exception Ex)
{
// Выводим сообщение об ошибке...
CoreLib.HandleExceptionEx(AppStrings.UPD_UpdateFailure, Properties.Resources.AppName, Ex.Message, Ex.Source, MessageBoxIcon.Error);
}
// Удаляем загруженный файл если он существует...
if (File.Exists(UpdateTempFile))
{
File.Delete(UpdateTempFile);
}
// Повторяем поиск обновлений...
CheckForUpdates();
}
else
{
// Выводим сообщение об отсутствии прав на запись в каталог...
MessageBox.Show(AppStrings.UPD_NoWritePermissions, Properties.Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
// Возвращаем результат...
return(Result);
}