|
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