fix .NET upgrade issue related to database provider packages

This commit is contained in:
sbwalker
2023-11-21 15:09:14 -05:00
parent ffae6e269b
commit 116542d8e4
11 changed files with 21 additions and 63 deletions

View File

@ -215,39 +215,14 @@ namespace Oqtane.Infrastructure
try
{
bool installPackages = false;
// iterate database packages in installation folder
var packagesFolder = new DirectoryInfo(Path.Combine(_environment.ContentRootPath, Constants.PackagesFolder));
foreach (var package in packagesFolder.GetFiles("*.nupkg.bak"))
{
// determine if package needs to be upgraded or installed
bool upgrade = System.IO.File.Exists(package.FullName.Replace(".nupkg.bak",".log"));
if (upgrade || package.Name.StartsWith(Utilities.GetAssemblyName(install.DatabaseType)))
{
var packageName = Path.Combine(package.DirectoryName, package.Name);
packageName = packageName.Substring(0, packageName.IndexOf(".bak"));
package.MoveTo(packageName, true);
installPackages = true;
}
}
if (installPackages)
{
using (var scope = _serviceScopeFactory.CreateScope())
{
var installationManager = scope.ServiceProvider.GetRequiredService<IInstallationManager>();
installationManager.InstallPackages();
}
}
// load the installation database type (if necessary)
if (Type.GetType(install.DatabaseType) == null)
{
var assemblyPath = Path.GetDirectoryName(Assembly.GetEntryAssembly()?.Location);
var assembliesFolder = new DirectoryInfo(assemblyPath);
var assemblyFile = new FileInfo($"{assembliesFolder}/{Utilities.GetAssemblyName(install.DatabaseType)}.dll");
AssemblyLoadContext.Default.LoadOqtaneAssembly(assemblyFile);
}
//if (Type.GetType(install.DatabaseType) == null)
//{
// var assemblyPath = Path.GetDirectoryName(Assembly.GetEntryAssembly()?.Location);
// var assembliesFolder = new DirectoryInfo(assemblyPath);
// var assemblyFile = new FileInfo($"{assembliesFolder}/{Utilities.GetAssemblyName(install.DatabaseType)}.dll");
// AssemblyLoadContext.Default.LoadOqtaneAssembly(assemblyFile);
//}
result.Success = true;
}

View File

@ -52,39 +52,22 @@ namespace Oqtane.Infrastructure
Directory.CreateDirectory(sourceFolder);
}
// move packages to secure /Packages folder
foreach (var folderName in "Modules,Themes,Packages".Split(","))
// move core framework distribution packages to secure /Packages folder
string folder = Path.Combine(webRootPath, "Packages");
if (Directory.Exists(folder))
{
string folder = Path.Combine(webRootPath, folderName);
if (Directory.Exists(folder))
foreach (var file in Directory.GetFiles(folder, "*.nupkg"))
{
foreach (var file in Directory.GetFiles(folder, "*.nupkg*"))
var destinationFile = Path.Combine(sourceFolder, Path.GetFileName(file));
if (File.Exists(destinationFile))
{
var destinationFile = Path.Combine(sourceFolder, Path.GetFileName(file));
if (File.Exists(destinationFile))
{
File.Delete(destinationFile);
}
if (destinationFile.ToLower().EndsWith(".nupkg.bak"))
{
// leave a copy in the current folder as it is distributed with the core framework
File.Copy(file, destinationFile);
}
else
{
// move to destination
File.Move(file, destinationFile);
}
File.Delete(destinationFile);
}
}
else
{
Directory.CreateDirectory(folder);
File.Move(file, destinationFile);
}
}
// iterate through Nuget packages in source folder
// install Nuget packages in secure Packages folder
foreach (string packagename in Directory.GetFiles(sourceFolder, "*.nupkg"))
{
try