From 5019ea91224c2ad53e55ab11e32c608fc6798179 Mon Sep 17 00:00:00 2001 From: Oliver Haucke Date: Tue, 13 Aug 2019 12:27:34 +0200 Subject: [PATCH] add --portable startparameter to make it portable --- src/Log2Console/MainForm.cs | 3 ++- src/Log2Console/Settings/UserSettings.cs | 34 +++++++++++++++++------- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/src/Log2Console/MainForm.cs b/src/Log2Console/MainForm.cs index 35945f9..e5cf9d3 100644 --- a/src/Log2Console/MainForm.cs +++ b/src/Log2Console/MainForm.cs @@ -85,7 +85,8 @@ public MainForm() _loggersPanelFloaty.Docking += OnFloatyDocking; // Settings - _firstStartup = !UserSettings.Load(); + bool portableMode = Environment.GetCommandLineArgs().Contains("--portable"); + _firstStartup = !UserSettings.Load(portableMode); if (_firstStartup) { // Initialize default layout diff --git a/src/Log2Console/Settings/UserSettings.cs b/src/Log2Console/Settings/UserSettings.cs index 77335e0..5c48127 100644 --- a/src/Log2Console/Settings/UserSettings.cs +++ b/src/Log2Console/Settings/UserSettings.cs @@ -8,7 +8,7 @@ using Log2Console.Log; using Log2Console.Receiver; - +using System.Reflection; namespace Log2Console.Settings { @@ -67,6 +67,9 @@ public sealed class UserSettings [NonSerialized] private Dictionary _sourceCodeLocationMap; + [NonSerialized] + private bool _portableMode; + private static UserSettings _instance; private bool _recursivlyEnableLoggers = true; @@ -145,13 +148,14 @@ public static UserSettings Instance set { _instance = value; } } - public static bool Load() + public static bool Load(bool portableMode) { bool ok = false; _instance = new UserSettings(); + _instance._portableMode = portableMode; - string settingsFilePath = GetSettingsFilePath(); + string settingsFilePath = GetSettingsFilePath(portableMode); if (!File.Exists(settingsFilePath)) return ok; @@ -190,23 +194,33 @@ public static bool Load() ok = false; } } + _instance._portableMode = portableMode; return ok; } - private static string GetSettingsFilePath() + private static string GetSettingsFilePath(bool portableMode) { - string userDir = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); - - DirectoryInfo di = new DirectoryInfo(userDir); - di = di.CreateSubdirectory("Log2Console"); + if (portableMode) + { + string startupPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); - return di.FullName + Path.DirectorySeparatorChar + SettingsFileName; + return Path.Combine(startupPath, SettingsFileName); + } + else + { + string userDir = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); + + DirectoryInfo di = new DirectoryInfo(userDir); + di = di.CreateSubdirectory("Log2Console"); + + return Path.Combine(di.FullName, SettingsFileName); + } } public void Save() { - string settingsFilePath = GetSettingsFilePath(); + string settingsFilePath = GetSettingsFilePath(this._portableMode); using (FileStream fs = new FileStream(settingsFilePath, FileMode.Create)) {