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")]