Skip to content

Commit 9d50a73

Browse files
committed
feat: Improve RestoreCustomAppSettingsIfNeeded
1 parent da85a02 commit 9d50a73

File tree

3 files changed

+30
-32
lines changed

3 files changed

+30
-32
lines changed

src/Atc.Installer.Wpf.App/App.xaml.cs

+18
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,12 @@ public partial class App
99
private readonly IHost host;
1010
private IConfiguration? configuration;
1111

12+
public static DirectoryInfo InstallerTempDirectory => new(Path.Combine(Path.GetTempPath(), "atc-installer"));
13+
1214
public App()
1315
{
16+
RestoreCustomAppSettingsIfNeeded();
17+
1418
host = Host.CreateDefaultBuilder()
1519
.ConfigureAppConfiguration(
1620
configurationBuilder =>
@@ -89,4 +93,18 @@ await host
8993

9094
host.Dispose();
9195
}
96+
97+
private static void RestoreCustomAppSettingsIfNeeded()
98+
{
99+
var currentFile = new FileInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "appsettings.custom.json"));
100+
var backupFile = new FileInfo(Path.Combine(InstallerTempDirectory.FullName, "appsettings.custom.json"));
101+
if (!currentFile.Exists ||
102+
!backupFile.Exists ||
103+
currentFile.LastWriteTime == backupFile.LastWriteTime)
104+
{
105+
return;
106+
}
107+
108+
File.Copy(backupFile.FullName, currentFile.FullName, overwrite: true);
109+
}
92110
}

src/Atc.Installer.Wpf.App/MainWindowViewModel.cs

+11-31
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ public partial class MainWindowViewModel : MainWindowViewModelBase
1010
private readonly IWindowsApplicationInstallerService waInstallerService;
1111
private readonly IAzureStorageAccountInstallerService azureStorageAccountInstallerService;
1212
private readonly ToastNotificationManager notificationManager = new();
13-
private readonly DirectoryInfo installerTempDirectory = new(Path.Combine(Path.GetTempPath(), "atc-installer"));
1413
private DirectoryInfo? installationDirectory;
1514
private string? projectName;
1615
private ComponentProviderViewModel? selectedComponentProvider;
@@ -29,7 +28,7 @@ public MainWindowViewModel()
2928

3029
this.azureStorageAccountInstallerService = new AzureStorageAccountInstallerService();
3130

32-
this.installationDirectory = new DirectoryInfo(Path.Combine(installerTempDirectory.FullName, "InstallationFiles"));
31+
this.installationDirectory = new DirectoryInfo(Path.Combine(App.InstallerTempDirectory.FullName, "InstallationFiles"));
3332

3433
ApplicationOptions = new ApplicationOptionsViewModel(new ApplicationOptions());
3534

@@ -44,7 +43,7 @@ public MainWindowViewModel()
4443
waInstallerService,
4544
networkShellService,
4645
new ObservableCollectionEx<ComponentProviderViewModel>(),
47-
installerTempDirectory,
46+
App.InstallerTempDirectory,
4847
installationDirectory,
4948
ProjectName,
5049
new Dictionary<string, object>(StringComparer.Ordinal),
@@ -59,7 +58,7 @@ public MainWindowViewModel()
5958
iisInstallerService,
6059
networkShellService,
6160
ComponentProviders,
62-
installerTempDirectory,
61+
App.InstallerTempDirectory,
6362
installationDirectory,
6463
ProjectName,
6564
new Dictionary<string, object>(StringComparer.Ordinal),
@@ -89,7 +88,6 @@ public MainWindowViewModel(
8988
this.waInstallerService = windowsApplicationInstallerService ?? throw new ArgumentNullException(nameof(windowsApplicationInstallerService));
9089
this.azureStorageAccountInstallerService = azureStorageAccountInstallerService ?? throw new ArgumentNullException(nameof(azureStorageAccountInstallerService));
9190

92-
applicationOptionsValue = RestoreCustomAppSettingsIfNeeded(applicationOptionsValue);
9391
LoadRecentOpenFiles();
9492

9593
ApplicationOptions = new ApplicationOptionsViewModel(applicationOptionsValue);
@@ -174,27 +172,9 @@ public void StopMonitoringServices()
174172
cancellationTokenSource?.Cancel();
175173
}
176174

177-
private ApplicationOptions RestoreCustomAppSettingsIfNeeded(
178-
ApplicationOptions applicationOptions)
179-
{
180-
var currentFile = new FileInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "appsettings.custom.json"));
181-
var backupFile = new FileInfo(Path.Combine(installerTempDirectory.FullName, "appsettings.custom.json"));
182-
if (!currentFile.Exists ||
183-
!backupFile.Exists ||
184-
currentFile.LastWriteTime == backupFile.LastWriteTime)
185-
{
186-
return applicationOptions;
187-
}
188-
189-
File.Copy(backupFile.FullName, currentFile.FullName, overwrite: true);
190-
191-
var wrapperModel = FileHelper<ApplicationOptionsWrapper>.ReadJsonFileToModel(fileInfo: backupFile)!;
192-
return wrapperModel.Application;
193-
}
194-
195175
private void LoadRecentOpenFiles()
196176
{
197-
var recentOpenFilesFile = Path.Combine(installerTempDirectory.FullName, "RecentOpenFiles.json");
177+
var recentOpenFilesFile = Path.Combine(App.InstallerTempDirectory.FullName, "RecentOpenFiles.json");
198178
if (!File.Exists(recentOpenFilesFile))
199179
{
200180
return;
@@ -256,10 +236,10 @@ private void AddLoadedFileToRecentOpenFiles(
256236
recentOpenFilesOption.RecentOpenFiles.Add(item);
257237
}
258238

259-
var recentOpenFilesFilePath = Path.Combine(installerTempDirectory.FullName, "RecentOpenFiles.json");
260-
if (!Directory.Exists(installerTempDirectory.FullName))
239+
var recentOpenFilesFilePath = Path.Combine(App.InstallerTempDirectory.FullName, "RecentOpenFiles.json");
240+
if (!Directory.Exists(App.InstallerTempDirectory.FullName))
261241
{
262-
Directory.CreateDirectory(installerTempDirectory.FullName);
242+
Directory.CreateDirectory(App.InstallerTempDirectory.FullName);
263243
}
264244

265245
var json = JsonSerializer.Serialize(
@@ -343,7 +323,7 @@ private void AddComponentProviderWindowsApplication(
343323
waInstallerService,
344324
networkShellService,
345325
ComponentProviders,
346-
installerTempDirectory,
326+
App.InstallerTempDirectory,
347327
installationDirectory,
348328
ProjectName!,
349329
DefaultApplicationSettings,
@@ -364,7 +344,7 @@ private void AddComponentProviderElasticSearchServer(
364344
networkShellService,
365345
waInstallerService,
366346
ComponentProviders,
367-
installerTempDirectory,
347+
App.InstallerTempDirectory,
368348
installationDirectory,
369349
ProjectName!,
370350
DefaultApplicationSettings,
@@ -384,7 +364,7 @@ private void AddComponentProviderInternetInformationServer(
384364
iisInstallerService,
385365
networkShellService,
386366
ComponentProviders,
387-
installerTempDirectory,
367+
App.InstallerTempDirectory,
388368
installationDirectory,
389369
ProjectName!,
390370
DefaultApplicationSettings,
@@ -405,7 +385,7 @@ private void AddComponentProviderPostgreSql(
405385
networkShellService,
406386
waInstallerService,
407387
ComponentProviders,
408-
installerTempDirectory,
388+
App.InstallerTempDirectory,
409389
installationDirectory,
410390
ProjectName!,
411391
DefaultApplicationSettings,

src/Atc.Installer.Wpf.App/MainWindowViewModel_Commands.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ private void OpenApplicationSettingsCommandHandler()
5050
new ApplicationSettingsDialog(
5151
new ApplicationSettingsDialogViewModel(
5252
ApplicationOptions,
53-
installerTempDirectory)).ShowDialog();
53+
App.InstallerTempDirectory)).ShowDialog();
5454
}
5555

5656
private Task OpenRecentConfigurationFileCommandHandler(

0 commit comments

Comments
 (0)