updater improvements

This commit is contained in:
Shaun Walker 2021-06-03 11:05:40 -04:00
parent 02de8e0bf7
commit e527f6e3d1
2 changed files with 59 additions and 22 deletions

View File

@ -12,7 +12,7 @@
<TabPanel Name="Download" ResourceKey="Download">
@if (_upgradeavailable)
{
<ModuleMessage Type="MessageType.Info" Message="Select The Download Button To Get a New Framework Package And Then Select Upgrade"></ModuleMessage>
<ModuleMessage Type="MessageType.Info" Message="Select The Download Button To Download The Framework Upgrade Package And Then Select Upgrade"></ModuleMessage>
<button type="button" class="btn btn-primary" @onclick=@(async () => await Download(Constants.PackageId, @_package.Version))>@Localizer["Download"] @_package.Version</button>
<button type="button" class="btn btn-success" @onclick="Upgrade">@Localizer["Upgrade"]</button>
}
@ -22,7 +22,7 @@
}
</TabPanel>
<TabPanel Name="Upload" ResourceKey="Upload">
<ModuleMessage Type="MessageType.Info" Message="Upload A Framework Package And Then Select Upgrade"></ModuleMessage>
<ModuleMessage Type="MessageType.Info" Message="Upload A Framework Upgrade Package And Then Select Upgrade"></ModuleMessage>
<table class="table table-borderless">
<tr>
<td>
@ -72,9 +72,10 @@
{
try
{
AddModuleMessage(Localizer["Please Be Patient While The Upgrade Is In Progress..."], MessageType.Info);
ShowProgressIndicator();
var interop = new Interop(JSRuntime);
await interop.RedirectBrowser(NavigateUrl(), 10);
await interop.RedirectBrowser(NavigateUrl(), 30);
await InstallationService.Upgrade();
}
catch (Exception ex)

View File

@ -16,7 +16,7 @@ namespace Oqtane.Updater
{
// requires 2 arguments - the ContentRootPath and the WebRootPath of the site
// for testing purposes set Oqtane.Upgrade as startup project and modify values below
// for testing purposes you can uncomment and modify the logic below
//Array.Resize(ref args, 2);
//args[0] = @"C:\yourpath\oqtane.framework\Oqtane.Server";
//args[1] = @"C:\yourpath\oqtane.framework\Oqtane.Server\wwwroot";
@ -31,7 +31,7 @@ namespace Oqtane.Updater
if (Directory.Exists(deployfolder))
{
string packagename = "";
string[] packages = Directory.GetFiles(deployfolder, "Oqtane.Upgrade.*.zip");
string[] packages = Directory.GetFiles(deployfolder, "Oqtane.Framework.*.Upgrade.zip");
if (packages.Length > 0)
{
packagename = packages[packages.Length - 1]; // use highest version
@ -58,6 +58,7 @@ namespace Oqtane.Updater
// ensure files are not locked
if (CanAccessFiles(files))
{
bool success = true;
try
{
// clear out backup folder
@ -66,20 +67,41 @@ namespace Oqtane.Updater
Directory.Delete(backupfolder, true);
}
Directory.CreateDirectory(backupfolder);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
success = false;
}
// backup files
if (success)
{
foreach (string file in files)
{
string filename = Path.Combine(backupfolder, file.Replace(contentrootfolder, ""));
string filename = Path.Combine(backupfolder, file.Replace(contentrootfolder + Path.DirectorySeparatorChar, ""));
try
{
if (File.Exists(file))
{
if (!Directory.Exists(Path.GetDirectoryName(filename)))
{
Directory.CreateDirectory(Path.GetDirectoryName(filename));
}
File.Copy(file, filename);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
success = false;
}
}
}
// extract files
bool success = true;
if (success)
{
try
{
using (ZipArchive archive = ZipFile.OpenRead(packagename))
@ -110,20 +132,34 @@ namespace Oqtane.Updater
File.Delete(packagename);
}
else
{
try
{
// restore on failure
foreach (string file in files)
{
string filename = Path.Combine(backupfolder, file.Replace(contentrootfolder, ""));
string filename = Path.Combine(backupfolder, file.Replace(contentrootfolder + Path.DirectorySeparatorChar, ""));
if (File.Exists(filename))
{
File.Copy(filename, file);
}
else
{
File.Delete(file);
}
}
// clean up backup
Directory.Delete(backupfolder, true);
}
}
catch (Exception ex)
{
Console.WriteLine("Upgrade Not Successful: " + ex.Message);
Console.WriteLine("Update Not Successful: Error Restoring Files - " + ex.Message);
}
}
}
else
{
Console.WriteLine("Update Not Successful: Could Not Backup All Existing Files");
}
}
else