Fix: On Startup, only Update Plugins if installed
This commit is contained in:
@@ -25,42 +25,40 @@ namespace Disco.Web
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void InitalizeEnvironment()
|
||||
public static void InitalizeEnvironment(DiscoDataContext dbContext)
|
||||
{
|
||||
using (var dbContext = new DiscoDataContext())
|
||||
// Initialize Logging
|
||||
Disco.Services.Logging.LogContext.Initalize(dbContext, DiscoApplication.SchedulerFactory);
|
||||
|
||||
// Load Organisation Name
|
||||
DiscoApplication.OrganisationName = dbContext.DiscoConfiguration.OrganisationName;
|
||||
DiscoApplication.MultiSiteMode = dbContext.DiscoConfiguration.MultiSiteMode;
|
||||
|
||||
// Setup Global Proxy
|
||||
DiscoApplication.SetGlobalProxy(dbContext.DiscoConfiguration.ProxyAddress,
|
||||
dbContext.DiscoConfiguration.ProxyPort,
|
||||
dbContext.DiscoConfiguration.ProxyUsername,
|
||||
dbContext.DiscoConfiguration.ProxyPassword);
|
||||
|
||||
// Initialize Expressions
|
||||
BI.Expressions.Expression.InitializeExpressions();
|
||||
|
||||
// Initialize Warranty Providers Plugins
|
||||
Disco.Services.Plugins.Plugins.InitalizePlugins(dbContext);
|
||||
|
||||
// Initialize Scheduled Tasks
|
||||
Disco.Services.Tasks.ScheduledTasks.InitalizeScheduledTasks(dbContext, DiscoApplication.SchedulerFactory, true);
|
||||
|
||||
// Schedule Immediate Check for Update (if never updated, or last updated over 2 days ago)
|
||||
if (dbContext.DiscoConfiguration.UpdateLastCheck == null ||
|
||||
dbContext.DiscoConfiguration.UpdateLastCheck.ResponseTimestamp < DateTime.Now.AddDays(-2))
|
||||
{
|
||||
// Initialize Logging
|
||||
Disco.Services.Logging.LogContext.Initalize(dbContext, DiscoApplication.SchedulerFactory);
|
||||
|
||||
// Load Organisation Name
|
||||
DiscoApplication.OrganisationName = dbContext.DiscoConfiguration.OrganisationName;
|
||||
DiscoApplication.MultiSiteMode = dbContext.DiscoConfiguration.MultiSiteMode;
|
||||
|
||||
// Setup Global Proxy
|
||||
DiscoApplication.SetGlobalProxy(dbContext.DiscoConfiguration.ProxyAddress,
|
||||
dbContext.DiscoConfiguration.ProxyPort,
|
||||
dbContext.DiscoConfiguration.ProxyUsername,
|
||||
dbContext.DiscoConfiguration.ProxyPassword);
|
||||
|
||||
// Initialize Expressions
|
||||
BI.Expressions.Expression.InitializeExpressions();
|
||||
|
||||
// Initialize Warranty Providers Plugins
|
||||
Disco.Services.Plugins.Plugins.InitalizePlugins(dbContext);
|
||||
|
||||
// Initialize Scheduled Tasks
|
||||
Disco.Services.Tasks.ScheduledTasks.InitalizeScheduledTasks(dbContext, DiscoApplication.SchedulerFactory, true);
|
||||
|
||||
// Schedule Immediate Check for Update (if never updated, or last updated over 2 days ago)
|
||||
if (dbContext.DiscoConfiguration.UpdateLastCheck == null ||
|
||||
dbContext.DiscoConfiguration.UpdateLastCheck.ResponseTimestamp < DateTime.Now.AddDays(-2))
|
||||
{
|
||||
Disco.BI.Interop.Community.UpdateCheckTask.ScheduleNow();
|
||||
}
|
||||
|
||||
// Setup Attachment Monitor
|
||||
DiscoApplication.DocumentDropBoxMonitor = new BI.DocumentTemplateBI.Importer.DocumentDropBoxMonitor(dbContext, DiscoApplication.SchedulerFactory, HttpContext.Current.Cache);
|
||||
Disco.BI.Interop.Community.UpdateCheckTask.ScheduleNow();
|
||||
}
|
||||
|
||||
// Setup Attachment Monitor
|
||||
DiscoApplication.DocumentDropBoxMonitor = new BI.DocumentTemplateBI.Importer.DocumentDropBoxMonitor(dbContext, DiscoApplication.SchedulerFactory, HttpContext.Current.Cache);
|
||||
|
||||
DiscoApplication.DocumentDropBoxMonitor.StartWatching();
|
||||
DiscoApplication.DocumentDropBoxMonitor.ScheduleCurrentFiles(10);
|
||||
|
||||
@@ -68,26 +66,23 @@ namespace Disco.Web
|
||||
Disco.BI.Interop.SignalRHandlers.RepositoryMonitorNotifications.Initialize();
|
||||
}
|
||||
|
||||
public static void InitializeUpdateEnvironment()
|
||||
public static void InitializeUpdateEnvironment(DiscoDataContext dbContext)
|
||||
{
|
||||
using (var dbContext = new DiscoDataContext())
|
||||
{
|
||||
// Initialize Logging
|
||||
Disco.Services.Logging.LogContext.Initalize(dbContext, DiscoApplication.SchedulerFactory);
|
||||
// Initialize Logging
|
||||
Disco.Services.Logging.LogContext.Initalize(dbContext, DiscoApplication.SchedulerFactory);
|
||||
|
||||
// Load Organisation Name
|
||||
DiscoApplication.OrganisationName = dbContext.DiscoConfiguration.OrganisationName;
|
||||
DiscoApplication.MultiSiteMode = dbContext.DiscoConfiguration.MultiSiteMode;
|
||||
// Load Organisation Name
|
||||
DiscoApplication.OrganisationName = dbContext.DiscoConfiguration.OrganisationName;
|
||||
DiscoApplication.MultiSiteMode = dbContext.DiscoConfiguration.MultiSiteMode;
|
||||
|
||||
// Setup Global Proxy
|
||||
DiscoApplication.SetGlobalProxy(dbContext.DiscoConfiguration.ProxyAddress,
|
||||
dbContext.DiscoConfiguration.ProxyPort,
|
||||
dbContext.DiscoConfiguration.ProxyUsername,
|
||||
dbContext.DiscoConfiguration.ProxyPassword);
|
||||
// Setup Global Proxy
|
||||
DiscoApplication.SetGlobalProxy(dbContext.DiscoConfiguration.ProxyAddress,
|
||||
dbContext.DiscoConfiguration.ProxyPort,
|
||||
dbContext.DiscoConfiguration.ProxyUsername,
|
||||
dbContext.DiscoConfiguration.ProxyPassword);
|
||||
|
||||
// Initialize Scheduled Tasks
|
||||
Disco.Services.Tasks.ScheduledTasks.InitalizeScheduledTasks(dbContext, DiscoApplication.SchedulerFactory, true);
|
||||
}
|
||||
// Initialize Scheduled Tasks
|
||||
Disco.Services.Tasks.ScheduledTasks.InitalizeScheduledTasks(dbContext, DiscoApplication.SchedulerFactory, true);
|
||||
}
|
||||
|
||||
public static void DisposeEnvironment()
|
||||
|
||||
+56
-55
@@ -38,68 +38,69 @@ 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())
|
||||
{
|
||||
using (DiscoDataContext dbContext = new DiscoDataContext())
|
||||
{
|
||||
previousVersion = dbContext.DiscoConfiguration.InstalledDatabaseVersion;
|
||||
}
|
||||
}
|
||||
if (ignoreVersionUpdate || Disco.BI.Interop.Community.UpdateCheck.CurrentDiscoVersion() == previousVersion)
|
||||
{
|
||||
// Normal Startup
|
||||
|
||||
AreaRegistration.RegisterAllAreas();
|
||||
|
||||
Debug.WriteLine("Registered Areas: +{0}ms", timer.ElapsedMilliseconds - timer_last);
|
||||
timer_last = timer.ElapsedMilliseconds;
|
||||
|
||||
WebApiConfig.Register(GlobalConfiguration.Configuration);
|
||||
|
||||
Debug.WriteLine("Registered API: +{0}ms", timer.ElapsedMilliseconds - timer_last);
|
||||
timer_last = timer.ElapsedMilliseconds;
|
||||
|
||||
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
|
||||
|
||||
Debug.WriteLine("Registered Global Filters: +{0}ms", timer.ElapsedMilliseconds - timer_last);
|
||||
timer_last = timer.ElapsedMilliseconds;
|
||||
|
||||
RouteConfig.RegisterRoutes(RouteTable.Routes);
|
||||
|
||||
Debug.WriteLine("Registered Routes: +{0}ms", timer.ElapsedMilliseconds - timer_last);
|
||||
timer_last = timer.ElapsedMilliseconds;
|
||||
|
||||
BundleConfig.RegisterBundles();
|
||||
|
||||
Debug.WriteLine("Registered Bundles: +{0}ms", timer.ElapsedMilliseconds - timer_last);
|
||||
timer_last = timer.ElapsedMilliseconds;
|
||||
|
||||
AppConfig.InitalizeEnvironment();
|
||||
|
||||
Debug.WriteLine("Initialized Environment: +{0}ms", timer.ElapsedMilliseconds - timer_last);
|
||||
timer_last = timer.ElapsedMilliseconds;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Post-Update Startup
|
||||
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
|
||||
RouteConfig.RegisterUpdateRoutes(RouteTable.Routes);
|
||||
BundleConfig.RegisterBundles();
|
||||
AppConfig.InitializeUpdateEnvironment();
|
||||
|
||||
using (DiscoDataContext dbContext = new DiscoDataContext())
|
||||
// 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 (!isVersionUpdate || ignoreVersionUpdate)
|
||||
{
|
||||
// Normal Startup
|
||||
|
||||
AreaRegistration.RegisterAllAreas();
|
||||
|
||||
Debug.WriteLine("Registered Areas: +{0}ms", timer.ElapsedMilliseconds - timer_last);
|
||||
timer_last = timer.ElapsedMilliseconds;
|
||||
|
||||
WebApiConfig.Register(GlobalConfiguration.Configuration);
|
||||
|
||||
Debug.WriteLine("Registered API: +{0}ms", timer.ElapsedMilliseconds - timer_last);
|
||||
timer_last = timer.ElapsedMilliseconds;
|
||||
|
||||
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
|
||||
|
||||
Debug.WriteLine("Registered Global Filters: +{0}ms", timer.ElapsedMilliseconds - timer_last);
|
||||
timer_last = timer.ElapsedMilliseconds;
|
||||
|
||||
RouteConfig.RegisterRoutes(RouteTable.Routes);
|
||||
|
||||
Debug.WriteLine("Registered Routes: +{0}ms", timer.ElapsedMilliseconds - timer_last);
|
||||
timer_last = timer.ElapsedMilliseconds;
|
||||
|
||||
BundleConfig.RegisterBundles();
|
||||
|
||||
Debug.WriteLine("Registered Bundles: +{0}ms", timer.ElapsedMilliseconds - timer_last);
|
||||
timer_last = timer.ElapsedMilliseconds;
|
||||
|
||||
AppConfig.InitalizeEnvironment(dbContext);
|
||||
|
||||
Debug.WriteLine("Initialized Environment: +{0}ms", timer.ElapsedMilliseconds - timer_last);
|
||||
timer_last = timer.ElapsedMilliseconds;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Post-Update Startup
|
||||
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
|
||||
RouteConfig.RegisterUpdateRoutes(RouteTable.Routes);
|
||||
BundleConfig.RegisterBundles();
|
||||
AppConfig.InitializeUpdateEnvironment(dbContext);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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")]
|
||||
Reference in New Issue
Block a user