Fix: On Startup, only Update Plugins if installed

This commit is contained in:
Gary Sharp
2013-06-20 12:33:52 +10:00
parent b7dc05dd65
commit 6f7f3336b3
9 changed files with 153 additions and 140 deletions
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.0618.1707")]
[assembly: AssemblyFileVersion("1.2.0618.1707")]
[assembly: AssemblyVersion("1.2.0620.1229")]
[assembly: AssemblyFileVersion("1.2.0620.1229")]
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.0618.1707")]
[assembly: AssemblyFileVersion("1.2.0618.1707")]
[assembly: AssemblyVersion("1.2.0620.1229")]
[assembly: AssemblyFileVersion("1.2.0620.1229")]
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.0618.1707")]
[assembly: AssemblyFileVersion("1.2.0618.1707")]
[assembly: AssemblyVersion("1.2.0620.1229")]
[assembly: AssemblyFileVersion("1.2.0620.1229")]
+35 -18
View File
@@ -82,21 +82,12 @@ namespace Disco.Services.Plugins
Plugins.RestartApp(1500);
}
internal static void UpdateOffline(ScheduledTaskStatus Status)
public static List<PluginManifest> OfflineInstalledPlugins(DiscoDataContext dbContext)
{
string pluginsLocation;
string pluginPackagesLocation;
string pluginsStorageLocation;
PluginLibraryUpdateResponse pluginCatalogue;
List<Tuple<PluginManifest, string, PluginLibraryItem>> UpdatePlugins = new List<Tuple<PluginManifest, string, PluginLibraryItem>>();
string pluginsLocation = dbContext.DiscoConfiguration.PluginsLocation;
string pluginsStorageLocation = dbContext.DiscoConfiguration.PluginStorageLocation;
using (DiscoDataContext dbContext = new DiscoDataContext())
{
pluginCatalogue = Plugins.LoadCatalogue(dbContext);
pluginsLocation = dbContext.DiscoConfiguration.PluginsLocation;
pluginPackagesLocation = dbContext.DiscoConfiguration.PluginPackagesLocation;
pluginsStorageLocation = dbContext.DiscoConfiguration.PluginStorageLocation;
}
List<PluginManifest> installedPluginManifests = new List<PluginManifest>();
DirectoryInfo pluginDirectoryRoot = new DirectoryInfo(pluginsLocation);
if (pluginDirectoryRoot.Exists)
@@ -114,22 +105,48 @@ namespace Disco.Services.Plugins
catch (Exception) { }
if (pluginManifest != null)
installedPluginManifests.Add(pluginManifest);
}
}
}
return installedPluginManifests;
}
internal static void UpdateOffline(ScheduledTaskStatus Status)
{
PluginLibraryUpdateResponse pluginCatalogue = null;
List<PluginManifest> installedPluginManifests;
string pluginPackagesLocation;
List<Tuple<PluginManifest, string, PluginLibraryItem>> updatePlugins = new List<Tuple<PluginManifest, string, PluginLibraryItem>>();
using (DiscoDataContext dbContext = new DiscoDataContext())
{
pluginPackagesLocation = dbContext.DiscoConfiguration.PluginPackagesLocation;
installedPluginManifests = OfflineInstalledPlugins(dbContext);
if (installedPluginManifests.Count > 0)
pluginCatalogue = Plugins.LoadCatalogue(dbContext);
}
if (pluginCatalogue != null && installedPluginManifests.Count > 0)
{
foreach (var pluginManifest in installedPluginManifests)
{
// Check for Update
var catalogueItem = pluginCatalogue.Plugins.FirstOrDefault(i => i.Id == pluginManifest.Id && Version.Parse(i.LatestVersion) > pluginManifest.Version);
if (catalogueItem != null)
{ // Update Available
UpdatePlugins.Add(new Tuple<PluginManifest, string, PluginLibraryItem>(pluginManifest, null, catalogueItem));
}
}
updatePlugins.Add(new Tuple<PluginManifest, string, PluginLibraryItem>(pluginManifest, null, catalogueItem));
}
}
}
if (UpdatePlugins.Count > 0)
if (updatePlugins.Count > 0)
{
ExecuteTaskInternal(Status, pluginPackagesLocation, UpdatePlugins);
ExecuteTaskInternal(Status, pluginPackagesLocation, updatePlugins);
}
}
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.0618.1707")]
[assembly: AssemblyFileVersion("1.2.0618.1707")]
[assembly: AssemblyVersion("1.2.0620.1229")]
[assembly: AssemblyFileVersion("1.2.0620.1229")]
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.0618.1707")]
[assembly: AssemblyFileVersion("1.2.0618.1707")]
[assembly: AssemblyVersion("1.2.0620.1229")]
[assembly: AssemblyFileVersion("1.2.0620.1229")]
+3 -8
View File
@@ -25,9 +25,7 @@ namespace Disco.Web
return true;
}
public static void InitalizeEnvironment()
{
using (var dbContext = new DiscoDataContext())
public static void InitalizeEnvironment(DiscoDataContext dbContext)
{
// Initialize Logging
Disco.Services.Logging.LogContext.Initalize(dbContext, DiscoApplication.SchedulerFactory);
@@ -60,7 +58,7 @@ namespace Disco.Web
// Setup Attachment Monitor
DiscoApplication.DocumentDropBoxMonitor = new BI.DocumentTemplateBI.Importer.DocumentDropBoxMonitor(dbContext, DiscoApplication.SchedulerFactory, HttpContext.Current.Cache);
}
DiscoApplication.DocumentDropBoxMonitor.StartWatching();
DiscoApplication.DocumentDropBoxMonitor.ScheduleCurrentFiles(10);
@@ -68,9 +66,7 @@ namespace Disco.Web
Disco.BI.Interop.SignalRHandlers.RepositoryMonitorNotifications.Initialize();
}
public static void InitializeUpdateEnvironment()
{
using (var dbContext = new DiscoDataContext())
public static void InitializeUpdateEnvironment(DiscoDataContext dbContext)
{
// Initialize Logging
Disco.Services.Logging.LogContext.Initalize(dbContext, DiscoApplication.SchedulerFactory);
@@ -88,7 +84,6 @@ namespace Disco.Web
// Initialize Scheduled Tasks
Disco.Services.Tasks.ScheduledTasks.InitalizeScheduledTasks(dbContext, DiscoApplication.SchedulerFactory, true);
}
}
public static void DisposeEnvironment()
{
+19 -18
View File
@@ -38,23 +38,29 @@ namespace Disco.Web
if (AppConfig.InitializeDatabase())
{
// Database Initialized
Debug.WriteLine("Initialized Database: +{0}ms", timer.ElapsedMilliseconds - timer_last);
timer_last = timer.ElapsedMilliseconds;
// Check for Post-Update
bool ignoreVersionUpdate = false;
bool.TryParse(ConfigurationManager.AppSettings["DiscoIgnoreVersionUpdate"], out ignoreVersionUpdate);
Version previousVersion = null;
if (!ignoreVersionUpdate)
{
using (DiscoDataContext dbContext = new DiscoDataContext())
{
previousVersion = dbContext.DiscoConfiguration.InstalledDatabaseVersion;
// Check for Post-Update
bool isVersionUpdate = dbContext.DiscoConfiguration.InstalledDatabaseVersion != Disco.BI.Interop.Community.UpdateCheck.CurrentDiscoVersion();
bool ignoreVersionUpdate = false;
if (isVersionUpdate)
{
// Update Database with New Version
dbContext.DiscoConfiguration.InstalledDatabaseVersion = Disco.BI.Interop.Community.UpdateCheck.CurrentDiscoVersion();
dbContext.SaveChanges();
// Check if configured to Ignore Plugin Updates (Mainly for Dev environment)
bool.TryParse(ConfigurationManager.AppSettings["DiscoIgnoreVersionUpdate"], out ignoreVersionUpdate);
// Only Update if Plugins are installed
if (!ignoreVersionUpdate)
ignoreVersionUpdate = (Disco.Services.Plugins.UpdatePluginTask.OfflineInstalledPlugins(dbContext).Count == 0);
}
}
if (ignoreVersionUpdate || Disco.BI.Interop.Community.UpdateCheck.CurrentDiscoVersion() == previousVersion)
if (!isVersionUpdate || ignoreVersionUpdate)
{
// Normal Startup
@@ -83,7 +89,7 @@ namespace Disco.Web
Debug.WriteLine("Registered Bundles: +{0}ms", timer.ElapsedMilliseconds - timer_last);
timer_last = timer.ElapsedMilliseconds;
AppConfig.InitalizeEnvironment();
AppConfig.InitalizeEnvironment(dbContext);
Debug.WriteLine("Initialized Environment: +{0}ms", timer.ElapsedMilliseconds - timer_last);
timer_last = timer.ElapsedMilliseconds;
@@ -94,12 +100,7 @@ namespace Disco.Web
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterUpdateRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles();
AppConfig.InitializeUpdateEnvironment();
using (DiscoDataContext dbContext = new DiscoDataContext())
{
dbContext.DiscoConfiguration.InstalledDatabaseVersion = Disco.BI.Interop.Community.UpdateCheck.CurrentDiscoVersion();
dbContext.SaveChanges();
AppConfig.InitializeUpdateEnvironment(dbContext);
}
}
}
+2 -2
View File
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.2.0618.1707")]
[assembly: AssemblyFileVersion("1.2.0618.1707")]
[assembly: AssemblyVersion("1.2.0620.1229")]
[assembly: AssemblyFileVersion("1.2.0620.1229")]