Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/Files.App/Data/Models/CompressArchiveModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,10 @@ public async Task<bool> RunCreationAsync()
};

compressor.CustomParameters.Add("mt", CPUThreads.ToString());
//Use UTF-8 encoding.
//References: 7-zip chm --> Command Line Version --> Switches
//--> -m --> cu=[off | on].
compressor.CustomParameters.Add("cu", "on");

compressor.Compressing += Compressor_Compressing;
compressor.FileCompressionStarted += Compressor_FileCompressionStarted;
Expand Down
2 changes: 2 additions & 0 deletions src/Files.App/Utils/Storage/StorageItems/ZipStorageFile.cs
Original file line number Diff line number Diff line change
Expand Up @@ -326,6 +326,7 @@ public override IAsyncAction RenameAsync(string desiredName, NameCollisionOption
await using (var archiveStream = await OpenZipFileAsync(FileAccessMode.Read))
{
SevenZipCompressor compressor = new SevenZipCompressor() { CompressionMode = CompressionMode.Append };
compressor.CustomParameters.Add("cu", "on");
compressor.SetFormatFromExistingArchive(archiveStream);
var fileName = IO.Path.GetRelativePath(containerPath, IO.Path.Combine(IO.Path.GetDirectoryName(Path), desiredName));
await compressor.ModifyArchiveAsync(archiveStream, new Dictionary<int, string>() { { index, fileName } }, Credentials.Password, ms);
Expand Down Expand Up @@ -375,6 +376,7 @@ public override IAsyncAction DeleteAsync(StorageDeleteOption option)
await using (var archiveStream = await OpenZipFileAsync(FileAccessMode.Read))
{
SevenZipCompressor compressor = new SevenZipCompressor() { CompressionMode = CompressionMode.Append };
compressor.CustomParameters.Add("cu", "on");
compressor.SetFormatFromExistingArchive(archiveStream);
await compressor.ModifyArchiveAsync(archiveStream, new Dictionary<int, string>() { { index, null } }, Credentials.Password, ms);
}
Expand Down
5 changes: 5 additions & 0 deletions src/Files.App/Utils/Storage/StorageItems/ZipStorageFolder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,7 @@ public override IAsyncOperation<BaseStorageFolder> CreateFolderAsync(string desi
await using (var archiveStream = await OpenZipFileAsync(FileAccessMode.Read))
{
SevenZipCompressor compressor = new SevenZipCompressor() { CompressionMode = CompressionMode.Append };
compressor.CustomParameters.Add("cu", "on");
compressor.SetFormatFromExistingArchive(archiveStream);
var fileName = IO.Path.GetRelativePath(containerPath, zipDesiredName);
await compressor.CompressStreamDictionaryAsync(archiveStream, new Dictionary<string, Stream>() { { fileName, null } }, Credentials.Password, ms);
Expand Down Expand Up @@ -366,6 +367,7 @@ public override IAsyncAction RenameAsync(string desiredName, NameCollisionOption
await using (var archiveStream = await OpenZipFileAsync(FileAccessMode.Read))
{
SevenZipCompressor compressor = new SevenZipCompressor() { CompressionMode = CompressionMode.Append };
compressor.CustomParameters.Add("cu", "on");
compressor.SetFormatFromExistingArchive(archiveStream);
var folderKey = IO.Path.GetRelativePath(containerPath, Path);
var folderDes = IO.Path.Combine(IO.Path.GetDirectoryName(folderKey), desiredName);
Expand Down Expand Up @@ -417,6 +419,7 @@ public override IAsyncAction DeleteAsync(StorageDeleteOption option)
await using (var archiveStream = await OpenZipFileAsync(FileAccessMode.Read))
{
SevenZipCompressor compressor = new SevenZipCompressor() { CompressionMode = CompressionMode.Append };
compressor.CustomParameters.Add("cu", "on");
compressor.SetFormatFromExistingArchive(archiveStream);
var entriesMap = new Dictionary<int, string>(index.Select(x => new KeyValuePair<int, string>(x.Index, null)));
await compressor.ModifyArchiveAsync(archiveStream, entriesMap, Credentials.Password, ms);
Expand Down Expand Up @@ -556,6 +559,7 @@ private static async Task<bool> InitArchive(Stream stream, OutArchiveFormat form
CompressionMode = CompressionMode.Create,
ArchiveFormat = format
};
compressor.CustomParameters.Add("cu", "on");
await compressor.CompressStreamDictionaryAsync(stream, new Dictionary<string, Stream>());
await stream.FlushAsync();
return true;
Expand Down Expand Up @@ -627,6 +631,7 @@ public IAsyncOperation<BaseStorageFile> CreateFileAsync(Stream contents, string
await using (var archiveStream = await OpenZipFileAsync(FileAccessMode.Read))
{
SevenZipCompressor compressor = new SevenZipCompressor() { CompressionMode = CompressionMode.Append };
compressor.CustomParameters.Add("cu", "on");
compressor.SetFormatFromExistingArchive(archiveStream);
var fileName = IO.Path.GetRelativePath(containerPath, zipDesiredName);
await compressor.CompressStreamDictionaryAsync(archiveStream, new Dictionary<string, Stream>() { { fileName, contents } }, Credentials.Password, ms);
Expand Down
Loading