|
18 | 18 | using Windows.Storage.Pickers;
|
19 | 19 | using Windows.System;
|
20 | 20 | using Windows.UI.Xaml.Controls;
|
| 21 | +using System.Text; |
| 22 | +using SevenZip; |
21 | 23 |
|
22 | 24 | namespace Files.Uwp.ViewModels.SettingsViewModels
|
23 | 25 | {
|
@@ -59,37 +61,33 @@ private async Task ExportSettings()
|
59 | 61 | {
|
60 | 62 | try
|
61 | 63 | {
|
62 |
| - var zipFolder = await ZipStorageFolder.FromStorageFileAsync(file); |
| 64 | + await ZipStorageFolder.InitArchive(file, OutArchiveFormat.Zip); |
| 65 | + var zipFolder = (ZipStorageFolder)await ZipStorageFolder.FromStorageFileAsync(file); |
63 | 66 | if (zipFolder == null)
|
64 | 67 | {
|
65 | 68 | return;
|
66 | 69 | }
|
67 | 70 | var localFolderPath = ApplicationData.Current.LocalFolder.Path;
|
68 | 71 | // Export user settings
|
69 |
| - var userSettings = await zipFolder.CreateFileAsync(Constants.LocalSettings.UserSettingsFileName, CreationCollisionOption.ReplaceExisting); |
70 |
| - string exportSettings = (string)UserSettingsService.ExportSettings(); |
71 |
| - await userSettings.WriteTextAsync(exportSettings); |
| 72 | + var exportSettings = UTF8Encoding.UTF8.GetBytes((string)UserSettingsService.ExportSettings()); |
| 73 | + await zipFolder.CreateFileAsync(new MemoryStream(exportSettings), Constants.LocalSettings.UserSettingsFileName, CreationCollisionOption.ReplaceExisting); |
72 | 74 | // Export bundles
|
73 |
| - var bundles = await zipFolder.CreateFileAsync(Constants.LocalSettings.BundlesSettingsFileName, CreationCollisionOption.ReplaceExisting); |
74 |
| - string exportBundles = (string)BundlesSettingsService.ExportSettings(); |
75 |
| - await bundles.WriteTextAsync(exportBundles); |
| 75 | + var exportBundles = UTF8Encoding.UTF8.GetBytes((string)BundlesSettingsService.ExportSettings()); |
| 76 | + await zipFolder.CreateFileAsync(new MemoryStream(exportBundles), Constants.LocalSettings.BundlesSettingsFileName, CreationCollisionOption.ReplaceExisting); |
76 | 77 | // Export pinned items
|
77 | 78 | var pinnedItems = await BaseStorageFile.GetFileFromPathAsync(Path.Combine(localFolderPath, Constants.LocalSettings.SettingsFolderName, App.SidebarPinnedController.JsonFileName));
|
78 | 79 | await pinnedItems.CopyAsync(zipFolder, pinnedItems.Name, NameCollisionOption.ReplaceExisting);
|
79 | 80 | // Export terminals config
|
80 | 81 | var terminals = await BaseStorageFile.GetFileFromPathAsync(Path.Combine(localFolderPath, Constants.LocalSettings.SettingsFolderName, App.TerminalController.JsonFileName));
|
81 | 82 | await terminals.CopyAsync(zipFolder, terminals.Name, NameCollisionOption.ReplaceExisting);
|
82 | 83 | // Export file tags list and DB
|
83 |
| - var fileTagsList = await zipFolder.CreateFileAsync(Constants.LocalSettings.FileTagSettingsFileName, CreationCollisionOption.ReplaceExisting); |
84 |
| - string exportTags = (string)FileTagsSettingsService.ExportSettings(); |
85 |
| - await fileTagsList.WriteTextAsync(exportTags); |
86 |
| - var fileTagsDB = await zipFolder.CreateFileAsync(Path.GetFileName(FileTagsHelper.FileTagsDbPath), CreationCollisionOption.ReplaceExisting); |
87 |
| - string exportTagsDB = FileTagsHelper.DbInstance.Export(); |
88 |
| - await fileTagsDB.WriteTextAsync(exportTagsDB); |
| 84 | + var exportTags = UTF8Encoding.UTF8.GetBytes((string)FileTagsSettingsService.ExportSettings()); |
| 85 | + await zipFolder.CreateFileAsync(new MemoryStream(exportTags), Constants.LocalSettings.FileTagSettingsFileName, CreationCollisionOption.ReplaceExisting); |
| 86 | + var exportTagsDB = UTF8Encoding.UTF8.GetBytes(FileTagsHelper.DbInstance.Export()); |
| 87 | + await zipFolder.CreateFileAsync(new MemoryStream(exportTagsDB), Path.GetFileName(FileTagsHelper.FileTagsDbPath), CreationCollisionOption.ReplaceExisting); |
89 | 88 | // Export layout preferences DB
|
90 |
| - var layoutPrefsDB = await zipFolder.CreateFileAsync(Path.GetFileName(FolderSettingsViewModel.LayoutSettingsDbPath), CreationCollisionOption.ReplaceExisting); |
91 |
| - string exportPrefsDB = FolderSettingsViewModel.DbInstance.Export(); |
92 |
| - await layoutPrefsDB.WriteTextAsync(exportPrefsDB); |
| 89 | + var exportPrefsDB = UTF8Encoding.UTF8.GetBytes(FolderSettingsViewModel.DbInstance.Export()); |
| 90 | + await zipFolder.CreateFileAsync(new MemoryStream(exportPrefsDB), Path.GetFileName(FolderSettingsViewModel.LayoutSettingsDbPath), CreationCollisionOption.ReplaceExisting); |
93 | 91 | }
|
94 | 92 | catch (Exception ex)
|
95 | 93 | {
|
|
0 commit comments