diff --git a/pkgs/applications/misc/keepass/default.nix b/pkgs/applications/misc/keepass/default.nix index 391410628ba..5eaad6514e1 100644 --- a/pkgs/applications/misc/keepass/default.nix +++ b/pkgs/applications/misc/keepass/default.nix @@ -8,11 +8,11 @@ # plugin derivations in the Nix store and nowhere else. with builtins; buildDotnetPackage rec { baseName = "keepass"; - version = "2.33"; + version = "2.34"; src = fetchurl { url = "mirror://sourceforge/keepass/KeePass-${version}-Source.zip"; - sha256 = "0n4rkx2awyq1gbqiby1lkf2zw82brji96s4fkjsahmci528a882i"; + sha256 = "e3f184e4deddd1aa5ee2b52e2373c772d3f3975e5eddb2fd729eb27b437011aa"; }; sourceRoot = "."; @@ -20,7 +20,7 @@ with builtins; buildDotnetPackage rec { buildInputs = [ unzip makeWrapper icoutils ]; pluginLoadPathsPatch = - let outputLc = toString (add 8 (length plugins)); + let outputLc = toString (add 7 (length plugins)); patchTemplate = readFile ./keepass-plugins.patch; loadTemplate = readFile ./keepass-plugins-load.patch; loads = diff --git a/pkgs/applications/misc/keepass/keepass-plugins-load.patch b/pkgs/applications/misc/keepass/keepass-plugins-load.patch index 872b6c06d78..b7bea38e4c8 100644 --- a/pkgs/applications/misc/keepass/keepass-plugins-load.patch +++ b/pkgs/applications/misc/keepass/keepass-plugins-load.patch @@ -1 +1 @@ -+ m_pluginManager.LoadAllPlugins("$PATH$/lib/dotnet/keepass"); ++ m_pluginManager.LoadAllPlugins("$PATH$/lib/dotnet/keepass", SearchOption.TopDirectoryOnly, new string[] {}); diff --git a/pkgs/applications/misc/keepass/keepass-plugins.patch b/pkgs/applications/misc/keepass/keepass-plugins.patch index 1a32d77806a..1793f04a170 100644 --- a/pkgs/applications/misc/keepass/keepass-plugins.patch +++ b/pkgs/applications/misc/keepass/keepass-plugins.patch @@ -1,13 +1,45 @@ --- old/KeePass/Forms/MainForm.cs +++ new/KeePass/Forms/MainForm.cs -@@ -384,9 +384,$OUTPUT_LC$ @@ namespace KeePass.Forms - m_pluginManager.Initialize(m_pluginDefaultHost); - +@@ -386,42 +386,$OUTPUT_LC$ @@ namespace KeePass.Forms m_pluginManager.UnloadAllPlugins(); -- if(AppPolicy.Current.Plugins) -- m_pluginManager.LoadAllPlugins(UrlUtil.GetFileDirectory( -- WinUtil.GetExecutable(), false, true)); -+ if(AppPolicy.Current.Plugins) { + if(AppPolicy.Current.Plugins) + { +- string[] vExclNames = new string[] { +- AppDefs.FileNames.Program, AppDefs.FileNames.XmlSerializers, +- AppDefs.FileNames.NativeLib32, AppDefs.FileNames.NativeLib64, +- AppDefs.FileNames.ShInstUtil +- }; +- +- string strPlgRoot = UrlUtil.GetFileDirectory( +- WinUtil.GetExecutable(), false, true); +- m_pluginManager.LoadAllPlugins(strPlgRoot, SearchOption.TopDirectoryOnly, +- vExclNames); +- +- if(!NativeLib.IsUnix()) +- { +- string strPlgSub = UrlUtil.EnsureTerminatingSeparator(strPlgRoot, +- false) + AppDefs.PluginsDir; +- m_pluginManager.LoadAllPlugins(strPlgSub, SearchOption.AllDirectories, +- vExclNames); +- } +- else // Unix +- { +- try +- { +- DirectoryInfo diPlgRoot = new DirectoryInfo(strPlgRoot); +- foreach(DirectoryInfo diSub in diPlgRoot.GetDirectories()) +- { +- if(diSub == null) { Debug.Assert(false); continue; } +- +- if(string.Equals(diSub.Name, AppDefs.PluginsDir, +- StrUtil.CaseIgnoreCmp)) +- m_pluginManager.LoadAllPlugins(diSub.FullName, +- SearchOption.AllDirectories, vExclNames); +- } +- } +- catch(Exception) { Debug.Assert(false); } +- } +- } $DO_LOADS$+ } // Delete old files *after* loading plugins (when timestamps