From e95e3cb9fe85a0c6b320434d0b2a0392002b9e7f Mon Sep 17 00:00:00 2001 From: Tomek Melissa Date: Wed, 11 Aug 2021 13:43:53 +0200 Subject: [PATCH] Fixing #143 Added server component based on quartznet server It is important to completely uninstall any previous version of RIS. You need to delete Schedule.xml file as well if you are upgrading from <3.0 --- Common/Common.csproj | 6 +- Job.Download/Job.Download.csproj | 4 +- Job.Download/packages.config | 2 +- .../Job.ExecutionMonitor.csproj | 4 +- Job.ExecutionMonitor/packages.config | 2 +- Job.Export/Job.Export.csproj | 4 +- Job.Export/packages.config | 2 +- Job.Import/Job.Import.csproj | 4 +- Job.Import/packages.config | 2 +- .../Job.ProcessingMonitor.csproj | 4 +- Job.ProcessingMonitor/packages.config | 2 +- Job.Upload/Job.Upload.csproj | 4 +- Job.Upload/packages.config | 2 +- Recurring Integrations Scheduler.sln | 14 +- Scheduler/App.config | 6 +- Scheduler/Scheduler.csproj | 20 +- Scheduler/packages.config | 10 +- Server/App.config | 115 +++++ Server/Configuration.cs | 90 ++++ Server/IQuartzServer.cs | 37 ++ Server/Program.cs | 43 ++ Server/Properties/AssemblyInfo.cs | 27 ++ Server/QuartzServer.cs | 166 +++++++ Server/QuartzServerFactory.cs | 31 ++ {Setup => Server}/Schedule.xml | 0 Server/Server.csproj | 118 +++++ Server/packages.config | 17 + Setup/Quartz.Server.exe.config | 411 ------------------ Setup/README.md | 11 - Setup/Recurring Integrations Scheduler.iss | 10 +- Version.cs | 2 +- 31 files changed, 703 insertions(+), 467 deletions(-) create mode 100644 Server/App.config create mode 100644 Server/Configuration.cs create mode 100644 Server/IQuartzServer.cs create mode 100644 Server/Program.cs create mode 100644 Server/Properties/AssemblyInfo.cs create mode 100644 Server/QuartzServer.cs create mode 100644 Server/QuartzServerFactory.cs rename {Setup => Server}/Schedule.xml (100%) create mode 100644 Server/Server.csproj create mode 100644 Server/packages.config delete mode 100644 Setup/Quartz.Server.exe.config diff --git a/Common/Common.csproj b/Common/Common.csproj index c3583dc..8d69671 100644 --- a/Common/Common.csproj +++ b/Common/Common.csproj @@ -91,7 +91,7 @@ 2.0.12 - 4.34.0 + 4.35.1 5.2.9 @@ -103,10 +103,10 @@ 7.2.2 - 3.3.2 + 3.3.3 - 1.2.10 + 1.2.12 2.0.0 diff --git a/Job.Download/Job.Download.csproj b/Job.Download/Job.Download.csproj index 343e2a0..2cd3c4b 100644 --- a/Job.Download/Job.Download.csproj +++ b/Job.Download/Job.Download.csproj @@ -50,8 +50,8 @@ ..\packages\Polly.7.2.2\lib\net472\Polly.dll - - ..\packages\Quartz.3.3.2\lib\net472\Quartz.dll + + ..\packages\Quartz.3.3.3\lib\net472\Quartz.dll diff --git a/Job.Download/packages.config b/Job.Download/packages.config index 54566ee..affbf63 100644 --- a/Job.Download/packages.config +++ b/Job.Download/packages.config @@ -4,7 +4,7 @@ - + diff --git a/Job.ExecutionMonitor/Job.ExecutionMonitor.csproj b/Job.ExecutionMonitor/Job.ExecutionMonitor.csproj index b5f32d6..7d87ec4 100644 --- a/Job.ExecutionMonitor/Job.ExecutionMonitor.csproj +++ b/Job.ExecutionMonitor/Job.ExecutionMonitor.csproj @@ -50,8 +50,8 @@ ..\packages\Polly.7.2.2\lib\net472\Polly.dll - - ..\packages\Quartz.3.3.2\lib\net472\Quartz.dll + + ..\packages\Quartz.3.3.3\lib\net472\Quartz.dll diff --git a/Job.ExecutionMonitor/packages.config b/Job.ExecutionMonitor/packages.config index 54566ee..affbf63 100644 --- a/Job.ExecutionMonitor/packages.config +++ b/Job.ExecutionMonitor/packages.config @@ -4,7 +4,7 @@ - + diff --git a/Job.Export/Job.Export.csproj b/Job.Export/Job.Export.csproj index 04d9c57..82d3eec 100644 --- a/Job.Export/Job.Export.csproj +++ b/Job.Export/Job.Export.csproj @@ -47,8 +47,8 @@ ..\packages\Polly.7.2.2\lib\net472\Polly.dll - - ..\packages\Quartz.3.3.2\lib\net472\Quartz.dll + + ..\packages\Quartz.3.3.3\lib\net472\Quartz.dll diff --git a/Job.Export/packages.config b/Job.Export/packages.config index ed1e04e..b21d4c6 100644 --- a/Job.Export/packages.config +++ b/Job.Export/packages.config @@ -3,7 +3,7 @@ - + diff --git a/Job.Import/Job.Import.csproj b/Job.Import/Job.Import.csproj index d90c610..9bdff57 100644 --- a/Job.Import/Job.Import.csproj +++ b/Job.Import/Job.Import.csproj @@ -50,8 +50,8 @@ ..\packages\Polly.7.2.2\lib\net472\Polly.dll - - ..\packages\Quartz.3.3.2\lib\net472\Quartz.dll + + ..\packages\Quartz.3.3.3\lib\net472\Quartz.dll diff --git a/Job.Import/packages.config b/Job.Import/packages.config index 54566ee..affbf63 100644 --- a/Job.Import/packages.config +++ b/Job.Import/packages.config @@ -4,7 +4,7 @@ - + diff --git a/Job.ProcessingMonitor/Job.ProcessingMonitor.csproj b/Job.ProcessingMonitor/Job.ProcessingMonitor.csproj index 169608c..6aa3b19 100644 --- a/Job.ProcessingMonitor/Job.ProcessingMonitor.csproj +++ b/Job.ProcessingMonitor/Job.ProcessingMonitor.csproj @@ -50,8 +50,8 @@ ..\packages\Polly.7.2.2\lib\net472\Polly.dll - - ..\packages\Quartz.3.3.2\lib\net472\Quartz.dll + + ..\packages\Quartz.3.3.3\lib\net472\Quartz.dll diff --git a/Job.ProcessingMonitor/packages.config b/Job.ProcessingMonitor/packages.config index 54566ee..affbf63 100644 --- a/Job.ProcessingMonitor/packages.config +++ b/Job.ProcessingMonitor/packages.config @@ -4,7 +4,7 @@ - + diff --git a/Job.Upload/Job.Upload.csproj b/Job.Upload/Job.Upload.csproj index c6cd702..6be8290 100644 --- a/Job.Upload/Job.Upload.csproj +++ b/Job.Upload/Job.Upload.csproj @@ -47,8 +47,8 @@ ..\packages\Polly.7.2.2\lib\net472\Polly.dll - - ..\packages\Quartz.3.3.2\lib\net472\Quartz.dll + + ..\packages\Quartz.3.3.3\lib\net472\Quartz.dll diff --git a/Job.Upload/packages.config b/Job.Upload/packages.config index ed1e04e..b21d4c6 100644 --- a/Job.Upload/packages.config +++ b/Job.Upload/packages.config @@ -3,7 +3,7 @@ - + diff --git a/Recurring Integrations Scheduler.sln b/Recurring Integrations Scheduler.sln index db5f87a..b05be36 100644 --- a/Recurring Integrations Scheduler.sln +++ b/Recurring Integrations Scheduler.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26730.16 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.31424.327 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common", "Common\Common.csproj", "{96BB041A-3FDE-400F-ADDA-9DB19F3274BE}" EndProject @@ -24,6 +24,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Version.cs = Version.cs EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server", "Server\Server.csproj", "{A83C017E-6A29-4039-8970-46AB95BEE619}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -96,6 +98,14 @@ Global {8E9BC494-6962-48DC-BC55-4E159E5517D3}.Release|Any CPU.Build.0 = Release|Any CPU {8E9BC494-6962-48DC-BC55-4E159E5517D3}.Release|x86.ActiveCfg = Release|Any CPU {8E9BC494-6962-48DC-BC55-4E159E5517D3}.Release|x86.Build.0 = Release|Any CPU + {A83C017E-6A29-4039-8970-46AB95BEE619}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A83C017E-6A29-4039-8970-46AB95BEE619}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A83C017E-6A29-4039-8970-46AB95BEE619}.Debug|x86.ActiveCfg = Debug|Any CPU + {A83C017E-6A29-4039-8970-46AB95BEE619}.Debug|x86.Build.0 = Debug|Any CPU + {A83C017E-6A29-4039-8970-46AB95BEE619}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A83C017E-6A29-4039-8970-46AB95BEE619}.Release|Any CPU.Build.0 = Release|Any CPU + {A83C017E-6A29-4039-8970-46AB95BEE619}.Release|x86.ActiveCfg = Release|Any CPU + {A83C017E-6A29-4039-8970-46AB95BEE619}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Scheduler/App.config b/Scheduler/App.config index 4e3e265..190b468 100644 --- a/Scheduler/App.config +++ b/Scheduler/App.config @@ -174,7 +174,7 @@ - + @@ -196,6 +196,10 @@ + + + + diff --git a/Scheduler/Scheduler.csproj b/Scheduler/Scheduler.csproj index d982eea..da3b61b 100644 --- a/Scheduler/Scheduler.csproj +++ b/Scheduler/Scheduler.csproj @@ -77,17 +77,17 @@ ..\packages\PortableSettingsProvider.0.2.4\lib\net45\PortableSettingsProvider.dll - - ..\packages\Quartz.3.3.2\lib\net472\Quartz.dll + + ..\packages\Quartz.3.3.3\lib\net472\Quartz.dll - - ..\packages\Quartz.Jobs.3.3.2\lib\net472\Quartz.Jobs.dll + + ..\packages\Quartz.Jobs.3.3.3\lib\net472\Quartz.Jobs.dll - - ..\packages\Quartz.Plugins.3.3.2\lib\net472\Quartz.Plugins.dll + + ..\packages\Quartz.Plugins.3.3.3\lib\net472\Quartz.Plugins.dll - - ..\packages\Quartz.Serialization.Json.3.3.2\lib\net472\Quartz.Serialization.Json.dll + + ..\packages\Quartz.Serialization.Json.3.3.3\lib\net472\Quartz.Serialization.Json.dll @@ -123,8 +123,8 @@ - - ..\packages\Topshelf.4.2.1\lib\net452\Topshelf.dll + + ..\packages\Topshelf.4.3.0\lib\net452\Topshelf.dll diff --git a/Scheduler/packages.config b/Scheduler/packages.config index 95cfb41..efe0c88 100644 --- a/Scheduler/packages.config +++ b/Scheduler/packages.config @@ -5,15 +5,15 @@ - - - - + + + + - + \ No newline at end of file diff --git a/Server/App.config b/Server/App.config new file mode 100644 index 0000000..065905a --- /dev/null +++ b/Server/App.config @@ -0,0 +1,115 @@ + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Server/Configuration.cs b/Server/Configuration.cs new file mode 100644 index 0000000..0864d31 --- /dev/null +++ b/Server/Configuration.cs @@ -0,0 +1,90 @@ +//https://github.com/quartznet/quartznet +using System; +using System.Collections.Specialized; +using System.Configuration; +using log4net; + +namespace RecurringIntegrationsScheduler.Server +{ + /// + /// Configuration for the Quartz server. + /// + public class Configuration + { + private static readonly ILog log = LogManager.GetLogger(typeof(Configuration)); + + private const string PrefixServerConfiguration = "quartz.server"; + private const string KeyServiceName = PrefixServerConfiguration + ".serviceName"; + private const string KeyServiceDisplayName = PrefixServerConfiguration + ".serviceDisplayName"; + private const string KeyServiceDescription = PrefixServerConfiguration + ".serviceDescription"; + private const string KeyServerImplementationType = PrefixServerConfiguration + ".type"; + + private const string DefaultServiceName = "QuartzServer"; + private const string DefaultServiceDisplayName = "Quartz Server"; + private const string DefaultServiceDescription = "Quartz Job Scheduling Server"; + private static readonly string DefaultServerImplementationType = typeof(QuartzServer).AssemblyQualifiedName!; + + private static readonly NameValueCollection? configuration; + + /// + /// Initializes the class. + /// + static Configuration() + { + try + { + configuration = (NameValueCollection) ConfigurationManager.GetSection("quartz"); + } + catch (Exception e) + { + log.Warn("could not read configuration using ConfigurationManager.GetSection: " + e.Message); + } + } + + /// + /// Gets the name of the service. + /// + /// The name of the service. + public static string ServiceName => GetConfigurationOrDefault(KeyServiceName, DefaultServiceName); + + /// + /// Gets the display name of the service. + /// + /// The display name of the service. + public static string ServiceDisplayName => GetConfigurationOrDefault(KeyServiceDisplayName, DefaultServiceDisplayName); + + /// + /// Gets the service description. + /// + /// The service description. + public static string ServiceDescription => GetConfigurationOrDefault(KeyServiceDescription, DefaultServiceDescription); + + /// + /// Gets the type name of the server implementation. + /// + /// The type of the server implementation. + public static string ServerImplementationType => GetConfigurationOrDefault(KeyServerImplementationType, DefaultServerImplementationType); + + /// + /// Returns configuration value with given key. If configuration + /// for the does not exists, return the default value. + /// + /// Key to read configuration with. + /// Default value to return if configuration is not found + /// The configuration value. + private static string GetConfigurationOrDefault(string configurationKey, string defaultValue) + { + string? retValue = null; + if (configuration != null) + { + retValue = configuration[configurationKey]; + } + + if (retValue == null || retValue.Trim().Length == 0) + { + retValue = defaultValue; + } + return retValue; + } + } +} diff --git a/Server/IQuartzServer.cs b/Server/IQuartzServer.cs new file mode 100644 index 0000000..ac40787 --- /dev/null +++ b/Server/IQuartzServer.cs @@ -0,0 +1,37 @@ +//https://github.com/quartznet/quartznet +using System.Threading.Tasks; + +namespace RecurringIntegrationsScheduler.Server +{ + /// + /// Service interface for core Quartz.NET server. + /// + public interface IQuartzServer + { + /// + /// Initializes the instance of . + /// Initialization will only be called once in server's lifetime. + /// + Task Initialize(); + + /// + /// Starts this instance. + /// + void Start(); + + /// + /// Stops this instance. + /// + void Stop(); + + /// + /// Pauses all activity in scheduler. + /// + void Pause(); + + /// + /// Resumes all activity in server. + /// + void Resume(); + } +} diff --git a/Server/Program.cs b/Server/Program.cs new file mode 100644 index 0000000..f4e8674 --- /dev/null +++ b/Server/Program.cs @@ -0,0 +1,43 @@ +//https://github.com/quartznet/quartznet +using System; +using System.IO; +using System.Reflection; +using log4net.Config; +using Topshelf; + +namespace RecurringIntegrationsScheduler.Server +{ + /// + /// The server's main entry point. + /// + public static class Program + { + /// + /// Main. + /// + public static void Main() + { + // change from service account's dir to more logical one + Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory); + + var logRepository = log4net.LogManager.GetRepository(Assembly.GetEntryAssembly()); + XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config")); + + HostFactory.Run(x => + { + x.RunAsLocalSystem(); + + x.SetDescription(Configuration.ServiceDescription); + x.SetDisplayName(Configuration.ServiceDisplayName); + x.SetServiceName(Configuration.ServiceName); + + x.Service(factory => + { + QuartzServer server = QuartzServerFactory.CreateServer(); + server.Initialize().GetAwaiter().GetResult(); + return server; + }); + }); + } + } +} \ No newline at end of file diff --git a/Server/Properties/AssemblyInfo.cs b/Server/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..e513933 --- /dev/null +++ b/Server/Properties/AssemblyInfo.cs @@ -0,0 +1,27 @@ +/* Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the MIT License. */ + +using System.Reflection; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. + +[assembly: AssemblyTitle("Recurring Integrations Scheduler Server")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Recurring Integrations Scheduler")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. + +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM + +[assembly: Guid("a83c017e-6a29-4039-8970-46ab95bee619")] \ No newline at end of file diff --git a/Server/QuartzServer.cs b/Server/QuartzServer.cs new file mode 100644 index 0000000..caafc69 --- /dev/null +++ b/Server/QuartzServer.cs @@ -0,0 +1,166 @@ +//https://github.com/quartznet/quartznet +using System; +using System.Threading.Tasks; +using log4net; +using Quartz; +using Quartz.Impl; +using Topshelf; + +namespace RecurringIntegrationsScheduler.Server +{ + /// + /// The main server logic. + /// + public class QuartzServer : ServiceControl, IQuartzServer + { + private readonly ILog logger; + private ISchedulerFactory schedulerFactory = null!; + private IScheduler scheduler = null!; + + /// + /// Initializes a new instance of the class. + /// + public QuartzServer() + { + logger = LogManager.GetLogger(GetType()); + } + + /// + /// Initializes the instance of the class. + /// + public virtual async Task Initialize() + { + try + { + schedulerFactory = CreateSchedulerFactory(); + scheduler = await GetScheduler().ConfigureAwait(false); + } + catch (Exception e) + { + logger.Error("Server initialization failed:" + e.Message, e); + throw; + } + } + + /// + /// Gets the scheduler with which this server should operate with. + /// + /// + protected virtual Task GetScheduler() + { + return schedulerFactory.GetScheduler(); + } + + /// + /// Returns the current scheduler instance (usually created in + /// using the method). + /// + protected virtual IScheduler Scheduler => scheduler; + + /// + /// Creates the scheduler factory that will be the factory + /// for all schedulers on this instance. + /// + /// + protected virtual ISchedulerFactory CreateSchedulerFactory() + { + return new StdSchedulerFactory(); + } + + /// + /// Starts this instance, delegates to scheduler. + /// + public virtual void Start() + { + try + { + scheduler.Start(); + } + catch (Exception ex) + { + logger.Fatal($"Scheduler start failed: {ex.Message}", ex); + throw; + } + + logger.Info("Scheduler started successfully"); + } + + /// + /// Stops this instance, delegates to scheduler. + /// + public virtual void Stop() + { + try + { + scheduler.Shutdown(true); + } + catch (Exception ex) + { + logger.Error($"Scheduler stop failed: {ex.Message}", ex); + throw; + } + + logger.Info("Scheduler shutdown complete"); + } + + /// + /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + /// + public virtual void Dispose() + { + // no-op for now + } + + /// + /// Pauses all activity in scheduler. + /// + public virtual void Pause() + { + scheduler.PauseAll(); + } + + /// + /// Resumes all activity in server. + /// + public void Resume() + { + scheduler.ResumeAll(); + } + + /// + /// TopShelf's method delegated to . + /// + public bool Start(HostControl hostControl) + { + Start(); + return true; + } + + /// + /// TopShelf's method delegated to . + /// + public bool Stop(HostControl hostControl) + { + Stop(); + return true; + } + + /// + /// TopShelf's method delegated to . + /// + public bool Pause(HostControl hostControl) + { + Pause(); + return true; + } + + /// + /// TopShelf's method delegated to . + /// + public bool Continue(HostControl hostControl) + { + Resume(); + return true; + } + } +} diff --git a/Server/QuartzServerFactory.cs b/Server/QuartzServerFactory.cs new file mode 100644 index 0000000..0c94114 --- /dev/null +++ b/Server/QuartzServerFactory.cs @@ -0,0 +1,31 @@ +//https://github.com/quartznet/quartznet + +using System; +using log4net; + +namespace RecurringIntegrationsScheduler.Server +{ + /// + /// Factory class to create Quartz server implementations from. + /// + public class QuartzServerFactory + { + private static readonly ILog logger = LogManager.GetLogger(typeof (QuartzServerFactory)); + + /// + /// Creates a new instance of an Quartz.NET server core. + /// + /// + public static QuartzServer CreateServer() + { + string typeName = Configuration.ServerImplementationType; + + Type t = Type.GetType(typeName, true)!; + + logger.Debug("Creating new instance of server type '" + typeName + "'"); + QuartzServer retValue = (QuartzServer) Activator.CreateInstance(t)!; + logger.Debug("Instance successfully created"); + return retValue; + } + } +} \ No newline at end of file diff --git a/Setup/Schedule.xml b/Server/Schedule.xml similarity index 100% rename from Setup/Schedule.xml rename to Server/Schedule.xml diff --git a/Server/Server.csproj b/Server/Server.csproj new file mode 100644 index 0000000..a67699f --- /dev/null +++ b/Server/Server.csproj @@ -0,0 +1,118 @@ + + + + + Debug + AnyCPU + {A83C017E-6A29-4039-8970-46AB95BEE619} + Exe + RecurringIntegrationsScheduler.Server + RecurringIntegrationsScheduler.Server + v4.7.2 + 512 + true + true + 8.0 + + + AnyCPU + true + full + false + ..\Output\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + ..\Output\Release\ + TRACE + prompt + 4 + false + + + + ..\packages\log4net.2.0.12\lib\net45\log4net.dll + + + ..\packages\Microsoft.Extensions.Logging.Abstractions.5.0.0\lib\net461\Microsoft.Extensions.Logging.Abstractions.dll + + + ..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll + + + ..\packages\Quartz.3.3.3\lib\net472\Quartz.dll + + + ..\packages\Quartz.Jobs.3.3.3\lib\net472\Quartz.Jobs.dll + + + ..\packages\Quartz.Plugins.3.3.3\lib\net472\Quartz.Plugins.dll + + + ..\packages\Quartz.Serialization.Json.3.3.3\lib\net472\Quartz.Serialization.Json.dll + + + + ..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll + + + + + + ..\packages\System.Diagnostics.DiagnosticSource.5.0.1\lib\net46\System.Diagnostics.DiagnosticSource.dll + + + ..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll + + + + ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll + + + ..\packages\System.Runtime.CompilerServices.Unsafe.5.0.0\lib\net45\System.Runtime.CompilerServices.Unsafe.dll + + + ..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll + True + True + + + + + + + + + + + + ..\packages\Topshelf.4.3.0\lib\net452\Topshelf.dll + + + + + Version.cs + + + + + + + + + + + + + + + Always + + + + \ No newline at end of file diff --git a/Server/packages.config b/Server/packages.config new file mode 100644 index 0000000..dd2c86f --- /dev/null +++ b/Server/packages.config @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Setup/Quartz.Server.exe.config b/Setup/Quartz.Server.exe.config deleted file mode 100644 index 002064f..0000000 --- a/Setup/Quartz.Server.exe.config +++ /dev/null @@ -1,411 +0,0 @@ - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Setup/README.md b/Setup/README.md index 4c8aaf9..0aba5bd 100644 --- a/Setup/README.md +++ b/Setup/README.md @@ -1,14 +1,3 @@ -To create installation package you need few additional binary files which are not included in RIS source code. - -Please download the following Quartz.NET server binaries and copy those files to this folder. - -* bin\Release\Quartz.Server\net461\Quartz.Server.exe - -This version of Recurring Integrations Scheduler requires Quartz.NET 3.2.4 - -Download zip archive from https://github.com/quartznet/quartznet/releases - - **Recurring Integrations Scheduler.iss** file contains packaging instructions for [Inno Setup](http://www.jrsoftware.org/isinfo.php) installer. Example command to create installation package (executed from root folder of the solution): diff --git a/Setup/Recurring Integrations Scheduler.iss b/Setup/Recurring Integrations Scheduler.iss index d095a10..18b13bf 100644 --- a/Setup/Recurring Integrations Scheduler.iss +++ b/Setup/Recurring Integrations Scheduler.iss @@ -41,7 +41,7 @@ Source: "..\Output\Release\Quartz.Plugins.dll"; DestDir: "{app}"; Flags: ignorev Source: "..\Output\Release\Quartz.Jobs.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: App Scheduler Source: "..\Output\Release\Quartz.Serialization.Json.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: App Scheduler Source: "..\Output\Release\Topshelf.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: Scheduler -Source: ".\Quartz.Server.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: Scheduler +Source: "..\Output\Release\RecurringIntegrationsScheduler.Server.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: Scheduler ; Common Source: "..\Output\Release\RecurringIntegrationsScheduler.Common.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: App Scheduler ; Jobs @@ -71,8 +71,8 @@ Source: "..\Output\Release\RecurringIntegrationsScheduler.exe"; DestDir: "{app}" Source: "..\Output\Release\RecurringIntegrationsScheduler.exe.config"; DestDir: "{app}"; Flags: ignoreversion; Components: App ; Configuration files -Source: ".\Schedule.xml"; DestDir: "{app}"; Flags: onlyifdoesntexist uninsneveruninstall; Components: Scheduler -Source: ".\Quartz.Server.exe.config"; DestDir: "{app}"; Flags: onlyifdoesntexist; Components: Scheduler +Source: "..\Output\Release\Schedule.xml"; DestDir: "{app}"; Flags: onlyifdoesntexist uninsneveruninstall; Components: Scheduler +Source: "..\Output\Release\RecurringIntegrationsScheduler.Server.exe.config"; DestDir: "{app}"; Flags: onlyifdoesntexist; Components: Scheduler ; ReadMe Source: "..\README.MD"; DestDir: "{app}"; Flags: ignoreversion; Components: App Scheduler ; License @@ -86,9 +86,9 @@ Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}" Name: "{group}\Recurring Integrations Scheduler App"; Filename: "{app}\RecurringIntegrationsScheduler.exe"; WorkingDir: "{app}" [Run] -Filename: "{app}\Quartz.Server.exe"; Parameters: "install"; Flags: runhidden; Components: Scheduler +Filename: "{app}\RecurringIntegrationsScheduler.Server.exe"; Parameters: "install"; Flags: runhidden; Components: Scheduler Filename: {sys}\sc.exe; Parameters: "start RecurringIntegrationsScheduler" ; Flags: runhidden [UninstallRun] Filename: {sys}\sc.exe; Parameters: "stop RecurringIntegrationsScheduler" ; Flags: runhidden ; RunOnceId: "DelService" -Filename: "{app}\Quartz.Server.exe"; Parameters: "uninstall"; Flags: runhidden; Components: Scheduler ; RunOnceId: "DelServerExecutable" +Filename: "{app}\RecurringIntegrationsScheduler.Server.exe"; Parameters: "uninstall"; Flags: runhidden; Components: Scheduler ; RunOnceId: "DelServerExecutable" diff --git a/Version.cs b/Version.cs index e80941b..42231f8 100644 --- a/Version.cs +++ b/Version.cs @@ -2,4 +2,4 @@ Licensed under the MIT License. */ using System.Reflection; -[assembly: AssemblyVersion("3.3.1.0")] +[assembly: AssemblyVersion("3.4.0.0")]