Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/duplicati/duplicati.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBlueBlock <danb@pobox.com>2019-08-04 05:08:17 +0300
committerBlueBlock <danb@pobox.com>2019-08-04 05:08:17 +0300
commit8447ee3cf3f3bf59670090a1919a703a8f5eed14 (patch)
treed5d6aab7ac692f2bd9600e1fb541c9d64430291f /Duplicati/GUI
parentd281f67570d3544eab028b7fd06e98450b6815ef (diff)
add sqlite nuget packages
Diffstat (limited to 'Duplicati/GUI')
-rw-r--r--Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj25
-rw-r--r--Duplicati/GUI/Duplicati.GUI.TrayIcon/Program.cs324
-rw-r--r--Duplicati/GUI/Duplicati.GUI.TrayIcon/app.config27
-rw-r--r--Duplicati/GUI/Duplicati.GUI.TrayIcon/packages.config5
4 files changed, 226 insertions, 155 deletions
diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj
index 38eea5ee0..fdb941074 100644
--- a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj
+++ b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj
@@ -29,6 +29,8 @@
<TargetFrameworkProfile />
<UseMSBuildEngine>false</UseMSBuildEngine>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+ <NuGetPackageImportStamp>
+ </NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
<OutputPath>bin\Debug</OutputPath>
@@ -70,13 +72,29 @@
<Reference Include="CoCoL, Version=1.5.0.19417, Culture=neutral, PublicKeyToken=0983de3c914beeaa, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\CoCoL.1.6.1\lib\net45\CoCoL.dll</HintPath>
</Reference>
+ <Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
+ <HintPath>..\..\..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll</HintPath>
+ </Reference>
+ <Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
+ <HintPath>..\..\..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.SqlServer.dll</HintPath>
+ </Reference>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
+ <Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Core" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
+ <Reference Include="System.Data.SQLite, Version=1.0.111.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
+ <HintPath>..\..\..\packages\System.Data.SQLite.Core.1.0.111.0\lib\net46\System.Data.SQLite.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Data.SQLite.EF6, Version=1.0.111.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
+ <HintPath>..\..\..\packages\System.Data.SQLite.EF6.1.0.111.0\lib\net46\System.Data.SQLite.EF6.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Data.SQLite.Linq, Version=1.0.111.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
+ <HintPath>..\..\..\packages\System.Data.SQLite.Linq.1.0.111.0\lib\net46\System.Data.SQLite.Linq.dll</HintPath>
+ </Reference>
<Reference Include="System.Windows.Forms" />
<Reference Include="appindicator-sharp">
<HintPath>..\..\..\thirdparty\appindicator-sharp\appindicator-sharp.dll</HintPath>
@@ -434,4 +452,11 @@
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
+ <Import Project="..\..\..\packages\System.Data.SQLite.Core.1.0.111.0\build\net46\System.Data.SQLite.Core.targets" Condition="Exists('..\..\..\packages\System.Data.SQLite.Core.1.0.111.0\build\net46\System.Data.SQLite.Core.targets')" />
+ <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+ <PropertyGroup>
+ <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
+ </PropertyGroup>
+ <Error Condition="!Exists('..\..\..\packages\System.Data.SQLite.Core.1.0.111.0\build\net46\System.Data.SQLite.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\System.Data.SQLite.Core.1.0.111.0\build\net46\System.Data.SQLite.Core.targets'))" />
+ </Target>
</Project> \ No newline at end of file
diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Program.cs b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Program.cs
index 411d668f4..69e6469ce 100644
--- a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Program.cs
+++ b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Program.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.IO;
using System.Linq;
using System.Net;
using Duplicati.Library.Common;
@@ -76,117 +77,98 @@ namespace Duplicati.GUI.TrayIcon
public static void RealMain(string[] _args)
{
- List<string> args = new List<string>(_args);
- Dictionary<string, string> options = Duplicati.Library.Utility.CommandLineParser.ExtractOptions(args);
+ try
+ {
- if (Platform.IsClientWindows && (Duplicati.Library.AutoUpdater.UpdaterManager.IsRunningInUpdateEnvironment || !Duplicati.Library.Utility.Utility.ParseBoolOption(options, DETACHED_PROCESS)))
- Duplicati.Library.Utility.Win32.AttachConsole(Duplicati.Library.Utility.Win32.ATTACH_PARENT_PROCESS);
+ List<string> args = new List<string>(_args);
+ Dictionary<string, string> options = Duplicati.Library.Utility.CommandLineParser.ExtractOptions(args);
- foreach (string s in args)
- if (
- s.Equals("help", StringComparison.OrdinalIgnoreCase) ||
- s.Equals("/help", StringComparison.OrdinalIgnoreCase) ||
- s.Equals("usage", StringComparison.OrdinalIgnoreCase) ||
- s.Equals("/usage", StringComparison.OrdinalIgnoreCase))
- options["help"] = "";
+ if (Platform.IsClientWindows && (Duplicati.Library.AutoUpdater.UpdaterManager.IsRunningInUpdateEnvironment || !Duplicati.Library.Utility.Utility.ParseBoolOption(options, DETACHED_PROCESS)))
+ Duplicati.Library.Utility.Win32.AttachConsole(Duplicati.Library.Utility.Win32.ATTACH_PARENT_PROCESS);
- if (options.ContainsKey("help"))
- {
- Console.WriteLine("Supported commandline arguments:");
- Console.WriteLine();
+ foreach (string s in args)
+ if (
+ s.Equals("help", StringComparison.OrdinalIgnoreCase) ||
+ s.Equals("/help", StringComparison.OrdinalIgnoreCase) ||
+ s.Equals("usage", StringComparison.OrdinalIgnoreCase) ||
+ s.Equals("/usage", StringComparison.OrdinalIgnoreCase))
+ options["help"] = "";
- foreach (Library.Interface.ICommandLineArgument arg in SupportedCommands)
+ if (options.ContainsKey("help"))
{
- Console.WriteLine("--{0}: {1}", arg.Name, arg.LongDescription);
- if (arg.Name == TOOLKIT_OPTION)
- Console.WriteLine(" Supported toolkits: {0}{1}", string.Join(", ", arg.ValidValues), Environment.NewLine);
- }
+ Console.WriteLine("Supported commandline arguments:");
+ Console.WriteLine();
- Console.WriteLine("Additionally, these server options are also supported:");
- Console.WriteLine();
+ foreach (Library.Interface.ICommandLineArgument arg in SupportedCommands)
+ {
+ Console.WriteLine("--{0}: {1}", arg.Name, arg.LongDescription);
+ if (arg.Name == TOOLKIT_OPTION)
+ Console.WriteLine(" Supported toolkits: {0}{1}", string.Join(", ", arg.ValidValues), Environment.NewLine);
+ }
- foreach (Library.Interface.ICommandLineArgument arg in Duplicati.Server.Program.SupportedCommands)
- Console.WriteLine("--{0}: {1}", arg.Name, arg.LongDescription);
+ Console.WriteLine("Additionally, these server options are also supported:");
+ Console.WriteLine();
- return;
- }
+ foreach (Library.Interface.ICommandLineArgument arg in Duplicati.Server.Program.SupportedCommands)
+ Console.WriteLine("--{0}: {1}", arg.Name, arg.LongDescription);
- options.TryGetValue(BROWSER_COMMAND_OPTION, out _browser_command);
+ return;
+ }
- string toolkit;
- if (!options.TryGetValue(TOOLKIT_OPTION, out toolkit))
- {
+ options.TryGetValue(BROWSER_COMMAND_OPTION, out _browser_command);
+
+ string toolkit;
+ if (!options.TryGetValue(TOOLKIT_OPTION, out toolkit))
+ {
#if !(__MonoCS__ || __WindowsGTK__ || ENABLE_GTK)
- if (Platform.IsClientPosix && !Platform.IsClientOSX)
- Console.WriteLine("Warning: this build does not support GTK, rebuild with ENABLE_GTK defined");
+ if (Platform.IsClientPosix && !Platform.IsClientOSX)
+ Console.WriteLine("Warning: this build does not support GTK, rebuild with ENABLE_GTK defined");
#endif
- toolkit = GetDefaultToolKit();
- }
- else
- {
- if (TOOLKIT_WINDOWS_FORMS.Equals(toolkit, StringComparison.OrdinalIgnoreCase))
- toolkit = TOOLKIT_WINDOWS_FORMS;
+ toolkit = GetDefaultToolKit();
+ }
+ else
+ {
+ if (TOOLKIT_WINDOWS_FORMS.Equals(toolkit, StringComparison.OrdinalIgnoreCase))
+ toolkit = TOOLKIT_WINDOWS_FORMS;
#if __MonoCS__ || __WindowsGTK__ || ENABLE_GTK
else if (TOOLKIT_GTK.Equals(toolkit, StringComparison.OrdinalIgnoreCase))
toolkit = TOOLKIT_GTK;
else if (TOOLKIT_GTK_APP_INDICATOR.Equals(toolkit, StringComparison.OrdinalIgnoreCase))
toolkit = TOOLKIT_GTK_APP_INDICATOR;
#endif
- else if (TOOLKIT_COCOA.Equals(toolkit, StringComparison.OrdinalIgnoreCase))
- toolkit = TOOLKIT_COCOA;
- else if (TOOLKIT_RUMPS.Equals(toolkit, StringComparison.OrdinalIgnoreCase))
- toolkit = TOOLKIT_RUMPS;
- else
- toolkit = GetDefaultToolKit();
- }
-
- HostedInstanceKeeper hosted = null;
-
- string password = null;
- var saltedpassword = false;
-
- if (!Library.Utility.Utility.ParseBoolOption(options, NOHOSTEDSERVER_OPTION))
- {
- try
- {
- hosted = new HostedInstanceKeeper(_args);
+ else if (TOOLKIT_COCOA.Equals(toolkit, StringComparison.OrdinalIgnoreCase))
+ toolkit = TOOLKIT_COCOA;
+ else if (TOOLKIT_RUMPS.Equals(toolkit, StringComparison.OrdinalIgnoreCase))
+ toolkit = TOOLKIT_RUMPS;
+ else
+ toolkit = GetDefaultToolKit();
}
- catch (Server.SingleInstance.MultipleInstanceException)
- {
- return;
- }
-
- // We have a hosted server, if this is the first run,
- // we should open the main page
- openui = Duplicati.Server.Program.IsFirstRun || Duplicati.Server.Program.ServerPortChanged;
- password = Duplicati.Server.Program.DataConnection.ApplicationSettings.WebserverPassword;
- saltedpassword = true;
- // Tell the hosted server it was started by the TrayIcon
- Duplicati.Server.Program.Origin = "Tray icon";
- var cert = Duplicati.Server.Program.DataConnection.ApplicationSettings.ServerSSLCertificate;
- var scheme = "http";
+ HostedInstanceKeeper hosted = null;
- if (cert != null && cert.HasPrivateKey)
- scheme = "https";
+ string password = null;
+ var saltedpassword = false;
- serverURL = (new UriBuilder(serverURL)
+ if (!Library.Utility.Utility.ParseBoolOption(options, NOHOSTEDSERVER_OPTION))
{
- Port = Duplicati.Server.Program.ServerPort,
- Scheme = scheme
- }).Uri;
- }
- else if (Library.Utility.Utility.ParseBoolOption(options, READCONFIGFROMDB_OPTION))
- {
- databaseConnection = Server.Program.GetDatabaseConnection(options);
+ try
+ {
+ hosted = new HostedInstanceKeeper(_args);
+ }
+ catch (Server.SingleInstance.MultipleInstanceException)
+ {
+ return;
+ }
- if (databaseConnection != null)
- {
- disableTrayIconLogin = databaseConnection.ApplicationSettings.DisableTrayIconLogin;
- password = databaseConnection.ApplicationSettings.WebserverPasswordTrayIcon;
- saltedpassword = false;
+ // We have a hosted server, if this is the first run,
+ // we should open the main page
+ openui = Duplicati.Server.Program.IsFirstRun || Duplicati.Server.Program.ServerPortChanged;
+ password = Duplicati.Server.Program.DataConnection.ApplicationSettings.WebserverPassword;
+ saltedpassword = true;
+ // Tell the hosted server it was started by the TrayIcon
+ Duplicati.Server.Program.Origin = "Tray icon";
- var cert = databaseConnection.ApplicationSettings.ServerSSLCertificate;
+ var cert = Duplicati.Server.Program.DataConnection.ApplicationSettings.ServerSSLCertificate;
var scheme = "http";
if (cert != null && cert.HasPrivateKey)
@@ -194,102 +176,138 @@ namespace Duplicati.GUI.TrayIcon
serverURL = (new UriBuilder(serverURL)
{
- Port = databaseConnection.ApplicationSettings.LastWebserverPort == -1 ? serverURL.Port : databaseConnection.ApplicationSettings.LastWebserverPort,
+ Port = Duplicati.Server.Program.ServerPort,
Scheme = scheme
}).Uri;
}
- }
+ else if (Library.Utility.Utility.ParseBoolOption(options, READCONFIGFROMDB_OPTION))
+ {
+ databaseConnection = Server.Program.GetDatabaseConnection(options);
- string pwd;
+ if (databaseConnection != null)
+ {
+ disableTrayIconLogin = databaseConnection.ApplicationSettings.DisableTrayIconLogin;
+ password = databaseConnection.ApplicationSettings.WebserverPasswordTrayIcon;
+ saltedpassword = false;
- if (options.TryGetValue("webserver-password", out pwd))
- {
- password = pwd;
- saltedpassword = false;
- }
+ var cert = databaseConnection.ApplicationSettings.ServerSSLCertificate;
+ var scheme = "http";
+
+ if (cert != null && cert.HasPrivateKey)
+ scheme = "https";
- string url;
+ serverURL = (new UriBuilder(serverURL)
+ {
+ Port = databaseConnection.ApplicationSettings.LastWebserverPort == -1 ? serverURL.Port : databaseConnection.ApplicationSettings.LastWebserverPort,
+ Scheme = scheme
+ }).Uri;
+ }
+ }
+
+ string pwd;
+
+ if (options.TryGetValue("webserver-password", out pwd))
+ {
+ password = pwd;
+ saltedpassword = false;
+ }
- if (options.TryGetValue(HOSTURL_OPTION, out url))
- serverURL = new Uri(url);
+ string url;
- StartTray(_args, options, toolkit, hosted, password, saltedpassword);
+ if (options.TryGetValue(HOSTURL_OPTION, out url))
+ serverURL = new Uri(url);
+
+ StartTray(_args, options, toolkit, hosted, password, saltedpassword);
+ }
+ catch (Exception ex)
+ {
+ File.AppendAllText(@"c:\temp\debug.log", ex.ToString());
+ throw;
+ }
}
private static void StartTray(string[] _args, Dictionary<string, string> options, string toolkit, HostedInstanceKeeper hosted, string password, bool saltedpassword)
{
- using (hosted)
+ try
{
- var reSpawn = 0;
-
- do
+ using (hosted)
{
- try
- {
- System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
+ var reSpawn = 0;
- using (Connection = new HttpServerConnection(serverURL, password, saltedpassword, databaseConnection != null ? PasswordSource.Database : PasswordSource.HostedServer, disableTrayIconLogin, options))
+ do
+ {
+ try
{
- using (var tk = RunTrayIcon(toolkit))
- {
- if (hosted != null && Server.Program.ApplicationInstance != null)
- Server.Program.ApplicationInstance.SecondInstanceDetected +=
- new Server.SingleInstance.SecondInstanceDelegate(
- x => { tk.ShowUrlInWindow(serverURL.ToString()); });
+ System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
- // TODO: If we change to hosted browser this should be a callback
- if (openui)
+ using (Connection = new HttpServerConnection(serverURL, password, saltedpassword, databaseConnection != null ? PasswordSource.Database : PasswordSource.HostedServer, disableTrayIconLogin, options))
+ {
+ using (var tk = RunTrayIcon(toolkit))
{
- try
- {
- tk.ShowUrlInWindow(Connection.StatusWindowURL);
+ if (hosted != null && Server.Program.ApplicationInstance != null)
+ Server.Program.ApplicationInstance.SecondInstanceDetected +=
+ new Server.SingleInstance.SecondInstanceDelegate(
+ x => { tk.ShowUrlInWindow(serverURL.ToString()); });
- Duplicati.Server.Program.IsFirstRun = false;
- Duplicati.Server.Program.ServerPortChanged = false;
- }
- catch
+ // TODO: If we change to hosted browser this should be a callback
+ if (openui)
{
+ try
+ {
+ tk.ShowUrlInWindow(Connection.StatusWindowURL);
+
+ Duplicati.Server.Program.IsFirstRun = false;
+ Duplicati.Server.Program.ServerPortChanged = false;
+ }
+ catch
+ {
+ }
}
- }
- // If the server shuts down, shut down the tray-icon as well
- Action shutdownEvent = () =>
- {
- // Make sure we do not start again after
- // a controlled exit
- reSpawn = 100;
- tk.InvokeExit();
- };
+ // If the server shuts down, shut down the tray-icon as well
+ Action shutdownEvent = () =>
+ {
+ // Make sure we do not start again after
+ // a controlled exit
+ reSpawn = 100;
+ tk.InvokeExit();
+ };
- if (hosted != null)
- hosted.InstanceShutdown += shutdownEvent;
+ if (hosted != null)
+ hosted.InstanceShutdown += shutdownEvent;
- tk.Init(_args);
+ tk.Init(_args);
- // If the tray-icon quits, stop the server
- reSpawn = 100;
+ // If the tray-icon quits, stop the server
+ reSpawn = 100;
- // Make sure that the server shutdown does not access the tray-icon,
- // as it would be disposed by now
- if (hosted != null)
- hosted.InstanceShutdown -= shutdownEvent;
+ // Make sure that the server shutdown does not access the tray-icon,
+ // as it would be disposed by now
+ if (hosted != null)
+ hosted.InstanceShutdown -= shutdownEvent;
+ }
}
}
- }
- catch (WebException ex)
- {
- System.Diagnostics.Trace.WriteLine("Request error: " + ex);
- Console.WriteLine("Request error: " + ex);
+ catch (WebException ex)
+ {
+ System.Diagnostics.Trace.WriteLine("Request error: " + ex);
+ Console.WriteLine("Request error: " + ex);
- reSpawn++;
- }
- catch (Exception ex)
- {
- System.Diagnostics.Trace.WriteLine("Unexpected error: " + ex);
- Console.WriteLine("Unexpected error: " + ex);
- return;
- }
- } while (reSpawn < 3);
+ reSpawn++;
+ }
+ catch (Exception ex)
+ {
+ System.Diagnostics.Trace.WriteLine("Unexpected error: " + ex);
+ Console.WriteLine("Unexpected error: " + ex);
+ return;
+ }
+ } while (reSpawn < 3);
+ }
+ }
+ catch (Exception ex)
+ {
+ File.AppendAllText(@"c:\temp\debug.log", ex.ToString());
+ throw;
}
}
diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/app.config b/Duplicati/GUI/Duplicati.GUI.TrayIcon/app.config
index f66d51929..fb5316f89 100644
--- a/Duplicati/GUI/Duplicati.GUI.TrayIcon/app.config
+++ b/Duplicati/GUI/Duplicati.GUI.TrayIcon/app.config
@@ -1,6 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
- <startup useLegacyV2RuntimeActivationPolicy="true"><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" /></startup>
+ <configSections>
+ <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
+ <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
+ </configSections>
+ <startup useLegacyV2RuntimeActivationPolicy="true">
+ <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
+ </startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
@@ -17,4 +23,21 @@
</dependentAssembly>
</assemblyBinding>
</runtime>
-</configuration>
+ <entityFramework>
+ <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
+ <parameters>
+ <parameter value="mssqllocaldb" />
+ </parameters>
+ </defaultConnectionFactory>
+ <providers>
+ <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
+ <provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
+ </providers>
+ </entityFramework>
+ <system.data>
+ <DbProviderFactories>
+ <remove invariant="System.Data.SQLite.EF6" />
+ <add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
+ <remove invariant="System.Data.SQLite" /><add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /></DbProviderFactories>
+ </system.data>
+</configuration> \ No newline at end of file
diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/packages.config b/Duplicati/GUI/Duplicati.GUI.TrayIcon/packages.config
index 54fa558e1..dc01aa873 100644
--- a/Duplicati/GUI/Duplicati.GUI.TrayIcon/packages.config
+++ b/Duplicati/GUI/Duplicati.GUI.TrayIcon/packages.config
@@ -1,5 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="CoCoL" version="1.6.1" targetFramework="net45" />
+ <package id="EntityFramework" version="6.2.0" targetFramework="net462" />
<package id="Newtonsoft.Json" version="12.0.2" targetFramework="net45" />
+ <package id="System.Data.SQLite" version="1.0.111.0" targetFramework="net462" />
+ <package id="System.Data.SQLite.Core" version="1.0.111.0" targetFramework="net462" />
+ <package id="System.Data.SQLite.EF6" version="1.0.111.0" targetFramework="net462" />
+ <package id="System.Data.SQLite.Linq" version="1.0.111.0" targetFramework="net462" />
</packages> \ No newline at end of file