diff --git a/Oqtane.Client/Modules/Admin/Upgrade/Index.razor b/Oqtane.Client/Modules/Admin/Upgrade/Index.razor
index c0475d59..2e0104fe 100644
--- a/Oqtane.Client/Modules/Admin/Upgrade/Index.razor
+++ b/Oqtane.Client/Modules/Admin/Upgrade/Index.razor
@@ -27,7 +27,7 @@
-
+
|
@@ -86,8 +86,9 @@
{
try
{
- await PackageService.DownloadPackageAsync(packageid, version, "Framework");
ShowProgressIndicator();
+ await PackageService.DownloadPackageAsync(packageid, version, "Packages");
+ await PackageService.DownloadPackageAsync("Oqtane.Upgrade", version, "Packages");
var interop = new Interop(JSRuntime);
await interop.RedirectBrowser(NavigateUrl(), 10);
await InstallationService.Upgrade();
diff --git a/Oqtane.Client/Services/InstallationService.cs b/Oqtane.Client/Services/InstallationService.cs
index 6b63ba60..5cc8f6ec 100644
--- a/Oqtane.Client/Services/InstallationService.cs
+++ b/Oqtane.Client/Services/InstallationService.cs
@@ -9,12 +9,7 @@ namespace Oqtane.Services
[PrivateApi("Don't show in the documentation, as everything should use the Interface")]
public class InstallationService : ServiceBase, IInstallationService
{
- private readonly SiteState _siteState;
-
- public InstallationService(HttpClient http, SiteState siteState) : base(http)
- {
- _siteState = siteState;
- }
+ public InstallationService(HttpClient http) : base(http) {}
private string ApiUrl => CreateApiUrl("Installation", null); // tenant agnostic as SiteState does not exist
diff --git a/Oqtane.Package/Oqtane.Framework.nuspec b/Oqtane.Package/Oqtane.Framework.nuspec
index f7ac02fd..109d5613 100644
--- a/Oqtane.Package/Oqtane.Framework.nuspec
+++ b/Oqtane.Package/Oqtane.Framework.nuspec
@@ -11,14 +11,12 @@
.NET Foundation
false
MIT
- https://github.com/oqtane/oqtane.framework
+ https://github.com/oqtane/oqtane.framework/releases/download/v2.0.2/Oqtane.Framework.2.0.2.Upgrade.zip
https://github.com/oqtane/oqtane.framework/releases/tag/v2.1.0
icon.png
oqtane framework
-
-
\ No newline at end of file
diff --git a/Oqtane.Package/Oqtane.Upgrade.nuspec b/Oqtane.Package/Oqtane.Upgrade.nuspec
new file mode 100644
index 00000000..b4ff1506
--- /dev/null
+++ b/Oqtane.Package/Oqtane.Upgrade.nuspec
@@ -0,0 +1,23 @@
+
+
+
+ Oqtane.Upgrade
+ 2.1.0
+ Shaun Walker
+ .NET Foundation
+ Oqtane Framework
+ A modular application framework for Blazor
+ A modular application framework for Blazor
+ .NET Foundation
+ false
+ MIT
+ https://github.com/oqtane/oqtane.framework
+ https://github.com/oqtane/oqtane.framework/releases/tag/v2.1.0
+ icon.png
+ oqtane upgrade
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Oqtane.Package/release.cmd b/Oqtane.Package/release.cmd
index 6814c56b..63c76cdb 100644
--- a/Oqtane.Package/release.cmd
+++ b/Oqtane.Package/release.cmd
@@ -5,6 +5,8 @@ copy /Y/B/V "..\Oqtane.Server\bin\Release\net5.0\System.Drawing.Common.dll" "..\
nuget.exe pack Oqtane.Client.nuspec
nuget.exe pack Oqtane.Server.nuspec
nuget.exe pack Oqtane.Shared.nuspec
+nuget.exe pack Oqtane.Upgrade.nuspec
+nuget.exe pack Oqtane.Framework.nuspec
del /F/Q/S "..\Oqtane.Server\bin\Release\net5.0\publish" > NUL
rmdir /Q/S "..\Oqtane.Server\bin\Release\net5.0\publish"
dotnet publish ..\Oqtane.Server\Oqtane.Server.csproj /p:Configuration=Release
@@ -12,8 +14,7 @@ del "..\Oqtane.Server\bin\Release\net5.0\publish\appsettings.json"
ren "..\Oqtane.Server\bin\Release\net5.0\publish\appsettings.release.json" "appsettings.json"
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe ".\install.ps1"
del "..\Oqtane.Server\bin\Release\net5.0\publish\appsettings.json"
-C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe ".\upgrade.ps1"
del "..\Oqtane.Server\bin\Release\net5.0\publish\Oqtane.Upgrade.*"
-nuget.exe pack Oqtane.Framework.nuspec
+C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe ".\upgrade.ps1"
pause
diff --git a/Oqtane.Server/Controllers/FileController.cs b/Oqtane.Server/Controllers/FileController.cs
index bcc86e9d..d687c657 100644
--- a/Oqtane.Server/Controllers/FileController.cs
+++ b/Oqtane.Server/Controllers/FileController.cs
@@ -285,6 +285,7 @@ namespace Oqtane.Controllers
if (User.IsInRole(RoleNames.Host))
{
folderPath = GetFolderPath(folder);
+ folderId = -1;
}
}
diff --git a/Oqtane.Server/Infrastructure/InstallationManager.cs b/Oqtane.Server/Infrastructure/InstallationManager.cs
index 1a59f39a..14f7806f 100644
--- a/Oqtane.Server/Infrastructure/InstallationManager.cs
+++ b/Oqtane.Server/Infrastructure/InstallationManager.cs
@@ -4,6 +4,7 @@ using System.Diagnostics;
using System.IO;
using System.IO.Compression;
using System.Linq;
+using System.Net;
using System.Reflection;
using System.Text.Json;
using System.Text.RegularExpressions;
@@ -215,24 +216,22 @@ namespace Oqtane.Infrastructure
public void UpgradeFramework()
{
- string folder = Path.Combine(_environment.WebRootPath, "Framework");
+ string folder = Path.Combine(_environment.ContentRootPath, "Packages");
if (Directory.Exists(folder))
{
- // get package with highest version and clean up any others
+ // get package with highest version
string packagename = "";
- foreach (string package in Directory.GetFiles(folder, "Oqtane.Framework.*.nupkg"))
+ string[] packages = Directory.GetFiles(folder, "Oqtane.Framework.*.nupkg");
+ if (packages.Length > 0)
{
- if (packagename != "")
- {
- File.Delete(packagename);
- }
- packagename = package;
+ packagename = packages[packages.Length - 1]; // use highest version
}
if (packagename != "")
{
// verify package version
string packageversion = "";
+ string packageurl = "";
using (ZipArchive archive = ZipFile.OpenRead(packagename))
{
// locate nuspec
@@ -251,6 +250,11 @@ namespace Oqtane.Infrastructure
{
packageversion = node.InnerText;
}
+ node = doc.SelectSingleNode("/package/metadata/projectUrl");
+ if (node != null)
+ {
+ packageurl = node.InnerText;
+ }
reader.Close();
break;
}
@@ -258,8 +262,15 @@ namespace Oqtane.Infrastructure
}
// ensure package version is greater than or equal to current framework version
- if (packageversion != "" && Version.Parse(Constants.Version).CompareTo(Version.Parse(packageversion)) <= 0)
+ if (packageversion != "" && Version.Parse(Constants.Version).CompareTo(Version.Parse(packageversion)) <= 0 && packageurl != "")
{
+ // install upgrade nuget package
+ InstallPackages();
+ // download upgrade zip package
+ var client = new WebClient();
+ Uri uri = new Uri(packageurl);
+ client.DownloadFile(packageurl, Path.Combine(folder, uri.Segments[uri.Segments.Length - 1]));
+ // install upgrade zip package
FinishUpgrade();
}
}
diff --git a/Oqtane.Server/Repository/FileRepository.cs b/Oqtane.Server/Repository/FileRepository.cs
index f86a059d..9c170523 100644
--- a/Oqtane.Server/Repository/FileRepository.cs
+++ b/Oqtane.Server/Repository/FileRepository.cs
@@ -55,7 +55,6 @@ namespace Oqtane.Repository
public File GetFile(int fileId)
{
File file = GetFile(fileId, true);
- file.Url = GetFileUrl(file, _tenants.GetAlias());
return file;
}
diff --git a/Oqtane.Upgrade/Program.cs b/Oqtane.Upgrade/Program.cs
index d9a042ce..cb624704 100644
--- a/Oqtane.Upgrade/Program.cs
+++ b/Oqtane.Upgrade/Program.cs
@@ -2,7 +2,6 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
-using System.Reflection;
using System.Threading;
namespace Oqtane.Upgrade
@@ -20,10 +19,9 @@ namespace Oqtane.Upgrade
if (args.Length == 2)
{
- string binfolder = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
string contentrootfolder = args[0];
string webrootfolder = args[1];
- string deployfolder = Path.Combine(webrootfolder, "Framework");
+ string deployfolder = Path.Combine(contentrootfolder, "Packages");
if (Directory.Exists(deployfolder))
{
@@ -48,20 +46,7 @@ namespace Oqtane.Upgrade
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
- string filename = Path.GetFileName(entry.FullName);
- if (!string.IsNullOrEmpty(filename))
- {
- // use top level folder to determine location to extract files
- switch (Path.GetDirectoryName(entry.FullName).Split(Path.DirectorySeparatorChar)[0])
- {
- case "lib":
- files.Add(Path.Combine(binfolder, filename));
- break;
- case "wwwroot":
- files.Add(Path.Combine(webrootfolder, entry.FullName.Replace("wwwroot/", "").Replace('/', Path.DirectorySeparatorChar)));
- break;
- }
- }
+ files.Add(Path.Combine(contentrootfolder, entry.FullName));
}
}
@@ -92,28 +77,12 @@ namespace Oqtane.Upgrade
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
- string filename = Path.GetFileName(entry.FullName);
- if (!string.IsNullOrEmpty(filename))
+ string filename = Path.Combine(contentrootfolder, entry.FullName);
+ if (!Directory.Exists(Path.GetDirectoryName(filename)))
{
- // use top level folder to determine location to extract files
- switch (Path.GetDirectoryName(entry.FullName).Split(Path.DirectorySeparatorChar)[0])
- {
- case "lib":
- filename = Path.Combine(binfolder, filename);
- break;
- case "wwwroot":
- filename = Path.Combine(webrootfolder, entry.FullName.Replace("wwwroot/", "").Replace('/', Path.DirectorySeparatorChar));
- break;
- }
- if (files.Contains(filename))
- {
- if (!Directory.Exists(Path.GetDirectoryName(filename)))
- {
- Directory.CreateDirectory(Path.GetDirectoryName(filename));
- }
- entry.ExtractToFile(filename, true);
- }
+ Directory.CreateDirectory(Path.GetDirectoryName(filename));
}
+ entry.ExtractToFile(filename, true);
}
}
}
@@ -156,7 +125,7 @@ namespace Oqtane.Upgrade
}
catch (Exception ex)
{
- Console.WriteLine("Update Not Successful: " + ex.Message);
+ Console.WriteLine("Upgrade Not Successful: " + ex.Message);
}
}
else