diff --git a/.idea/.idea.SPTInstaller/.idea/avalonia.xml b/.idea/.idea.SPTInstaller/.idea/avalonia.xml
index 6f7ffd1..c49db03 100644
--- a/.idea/.idea.SPTInstaller/.idea/avalonia.xml
+++ b/.idea/.idea.SPTInstaller/.idea/avalonia.xml
@@ -20,6 +20,7 @@
+
diff --git a/SPTInstaller/App.axaml.cs b/SPTInstaller/App.axaml.cs
index 038fcd6..18582ce 100644
--- a/SPTInstaller/App.axaml.cs
+++ b/SPTInstaller/App.axaml.cs
@@ -12,7 +12,7 @@ namespace SPTInstaller;
public partial class App : Application
{
- private readonly string _logPath = Path.Join(Environment.CurrentDirectory, "spt-installer_.log");
+ public static string LogPath = Path.Join(Environment.CurrentDirectory, "spt-installer.log");
public override void Initialize()
{
@@ -21,9 +21,8 @@ public partial class App : Application
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Information()
.WriteTo
- .File(path: _logPath,
- restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Information,
- rollingInterval: RollingInterval.Day)
+ .File(path: LogPath,
+ restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Information)
.CreateLogger();
RxApp.DefaultExceptionHandler = Observer.Create((exception) =>
@@ -42,9 +41,8 @@ public partial class App : Application
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo
- .File(path: _logPath,
- restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Debug,
- rollingInterval: RollingInterval.Day)
+ .File(path: LogPath,
+ restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Debug)
.CreateLogger();
System.Diagnostics.Trace.Listeners.Add(new SerilogTraceListener.SerilogTraceListener());
diff --git a/SPTInstaller/SPTInstaller.csproj b/SPTInstaller/SPTInstaller.csproj
index cc02ac7..960f8e6 100644
--- a/SPTInstaller/SPTInstaller.csproj
+++ b/SPTInstaller/SPTInstaller.csproj
@@ -10,8 +10,8 @@
icon.ico
Assets\spt_installer.ico
Debug;Release;TEST
- 2.70
- 2.70
+ 2.71
+ 2.71
SPT
diff --git a/SPTInstaller/ViewModels/MessageViewModel.cs b/SPTInstaller/ViewModels/MessageViewModel.cs
index fd6947f..dfb686c 100644
--- a/SPTInstaller/ViewModels/MessageViewModel.cs
+++ b/SPTInstaller/ViewModels/MessageViewModel.cs
@@ -6,6 +6,9 @@ using SPTInstaller.Helpers;
using SPTInstaller.Interfaces;
using System.Threading.Tasks;
using System.Windows.Input;
+using Avalonia.Controls.ApplicationLifetimes;
+using Avalonia.Input;
+using Avalonia.Platform.Storage;
namespace SPTInstaller.ViewModels;
@@ -43,6 +46,47 @@ public class MessageViewModel : ViewModelBase
set => this.RaiseAndSetIfChanged(ref _cacheInfoText, value);
}
+ private string _clipCommandText;
+
+ public string ClipCommandText
+ {
+ get => _clipCommandText;
+ set => this.RaiseAndSetIfChanged(ref _clipCommandText, value);
+ }
+
+ public ICommand CopyLogFileToClipboard => ReactiveCommand.CreateFromTask(async () =>
+ {
+ if (Application.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
+ {
+ try
+ {
+ if (desktop.MainWindow?.Clipboard == null)
+ {
+ ClipCommandText = "Could not get clipboard :(";
+ return;
+ }
+
+ var dataObject = new DataObject();
+ var logFile = await desktop.MainWindow.StorageProvider.TryGetFileFromPathAsync(App.LogPath);
+
+ if (logFile == null)
+ {
+ ClipCommandText = "Could not get log file :(";
+ return;
+ }
+
+ dataObject.Set(DataFormats.Files, new[] {logFile});
+
+ await desktop.MainWindow.Clipboard.SetDataObjectAsync(dataObject);
+ ClipCommandText = "Copied!";
+ }
+ catch (Exception ex)
+ {
+ ClipCommandText = ex.Message;
+ }
+ }
+ });
+
private StatusSpinner.SpinnerState _cacheCheckState;
public StatusSpinner.SpinnerState CacheCheckState
@@ -64,6 +108,7 @@ public class MessageViewModel : ViewModelBase
{
ShowCloseButton = showCloseButton;
Message = result.Message;
+ ClipCommandText = "Copy installer log to clipboard";
Task.Run(() =>
{
diff --git a/SPTInstaller/Views/MessageView.axaml b/SPTInstaller/Views/MessageView.axaml
index 0ee61f5..3ad9149 100644
--- a/SPTInstaller/Views/MessageView.axaml
+++ b/SPTInstaller/Views/MessageView.axaml
@@ -15,7 +15,7 @@
-
+
+
-