mirror of
https://github.com/AndnixSH/APKToolGUI.git
synced 2026-05-04 11:02:27 +00:00
Revert back to DotNetZip but using ProDotNetZip for fixed vulnerability
This commit is contained in:
@@ -112,6 +112,9 @@
|
||||
</Reference>
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationFramework" />
|
||||
<Reference Include="ProDotNetZip, Version=1.20.0.0, Culture=neutral, PublicKeyToken=6583c7c814667745, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\ProDotNetZip.1.20.0\lib\netstandard2.0\ProDotNetZip.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="ResourceLoader, Version=3.3.1.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\ResourceLoader.3.3.1\lib\netstandard2.0\ResourceLoader.dll</HintPath>
|
||||
</Reference>
|
||||
@@ -135,6 +138,7 @@
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Data.OracleClient" />
|
||||
<Reference Include="System.Design" />
|
||||
<Reference Include="System.Diagnostics.DiagnosticSource, Version=9.0.0.3, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.9.0.3\lib\net462\System.Diagnostics.DiagnosticSource.dll</HintPath>
|
||||
@@ -144,6 +148,7 @@
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.DirectoryServices" />
|
||||
<Reference Include="System.Formats.Nrbf, Version=9.0.0.3, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Formats.Nrbf.9.0.3\lib\net462\System.Formats.Nrbf.dll</HintPath>
|
||||
</Reference>
|
||||
@@ -157,17 +162,7 @@
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Compression.FileSystem" />
|
||||
<Reference Include="System.IO.Compression.ZipFile, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Compression.ZipFile.4.3.0\lib\net46\System.IO.Compression.ZipFile.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.FileSystem, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.FileSystem.4.3.0\lib\net46\System.IO.FileSystem.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
@@ -192,6 +187,7 @@
|
||||
<Reference Include="System.Memory, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.6.1\lib\net462\System.Memory.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Net" />
|
||||
<Reference Include="System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
@@ -241,6 +237,9 @@
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security" />
|
||||
<Reference Include="System.Security.AccessControl, Version=6.0.0.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.AccessControl.6.0.1\lib\net461\System.Security.AccessControl.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Cryptography.Algorithms, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.1\lib\net463\System.Security.Cryptography.Algorithms.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
@@ -261,11 +260,22 @@
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Permissions, Version=9.0.0.3, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Permissions.9.0.3\lib\net462\System.Security.Permissions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Security.Principal.Windows, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Principal.Windows.5.0.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.ServiceProcess" />
|
||||
<Reference Include="System.Text.Encoding.CodePages, Version=9.0.0.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Encoding.CodePages.9.0.3\lib\net462\System.Text.Encoding.CodePages.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Text.RegularExpressions, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.RegularExpressions.4.3.1\lib\net463\System.Text.RegularExpressions.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Transactions" />
|
||||
<Reference Include="System.Xaml" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
|
||||
@@ -10,18 +10,12 @@ using APKToolGUI.Properties;
|
||||
using APKToolGUI.ApkTool;
|
||||
using APKToolGUI.Utils;
|
||||
using System.Threading.Tasks;
|
||||
using System.Collections.Generic;
|
||||
using APKToolGUI.Handlers;
|
||||
using Microsoft.WindowsAPICodePack.Taskbar;
|
||||
using System.Media;
|
||||
using System.Linq;
|
||||
using System.Windows.Interop;
|
||||
using System.Security.Cryptography;
|
||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
|
||||
using APKToolGUI.Controls;
|
||||
using Dark.Net;
|
||||
using APKEasyTool;
|
||||
using System.IO.Compression;
|
||||
using Ionic.Zip;
|
||||
|
||||
namespace APKToolGUI
|
||||
{
|
||||
@@ -196,35 +190,35 @@ namespace APKToolGUI
|
||||
{
|
||||
Directory.CreateDirectory(splitPath);
|
||||
|
||||
using (ZipArchive archive = ZipFile.OpenRead(file))
|
||||
using (ZipFile zipDest = ZipFile.Read(file))
|
||||
{
|
||||
bool mainApkFound = false;
|
||||
|
||||
foreach (ZipArchiveEntry entry in archive.Entries)
|
||||
foreach (ZipEntry entry in zipDest.Entries)
|
||||
{
|
||||
if (!mainApkFound && !entry.FullName.Contains("config.") && entry.FullName.EndsWith(".apk"))
|
||||
if (!mainApkFound && !entry.FileName.Contains("config.") && entry.FileName.EndsWith(".apk"))
|
||||
{
|
||||
Debug.WriteLine("Found main APK: " + entry.FullName);
|
||||
string extractPath = Path.Combine(splitPath, entry.FullName);
|
||||
Debug.WriteLine("Found main APK: " + entry.FileName);
|
||||
string extractPath = Path.Combine(splitPath, entry.FileName);
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(extractPath));
|
||||
entry.ExtractToFile(extractPath, true);
|
||||
entry.Extract(splitPath, ExtractExistingFileAction.OverwriteSilently);
|
||||
file = extractPath;
|
||||
mainApkFound = true;
|
||||
}
|
||||
|
||||
if (entry.FullName.Contains("lib/armeabi-v7a"))
|
||||
if (entry.FileName.Contains("lib/armeabi-v7a"))
|
||||
{
|
||||
arch += "armeabi-v7a, ";
|
||||
}
|
||||
if (entry.FullName.Contains("lib/arm64-v8a"))
|
||||
if (entry.FileName.Contains("lib/arm64-v8a"))
|
||||
{
|
||||
arch += "arm64-v8a, ";
|
||||
}
|
||||
if (entry.FullName.Contains("lib/x86"))
|
||||
if (entry.FileName.Contains("lib/x86"))
|
||||
{
|
||||
arch += "x86, ";
|
||||
}
|
||||
if (entry.FullName.Contains("lib/x86_64"))
|
||||
if (entry.FileName.Contains("lib/x86_64"))
|
||||
{
|
||||
arch += "x86_64, ";
|
||||
}
|
||||
@@ -890,9 +884,9 @@ namespace APKToolGUI
|
||||
if (Directory.Exists(Path.Combine(inputFolder, "original", "META-INF")))
|
||||
{
|
||||
string unsignedApkPath = Path.Combine(Path.GetDirectoryName(outputCompiledApkFile), Path.GetFileName(outputUnsignedApk));
|
||||
ZipUtils.AddDirectory(outputFile, Path.Combine(inputFolder, "original", "META-INF"), "META-INF");
|
||||
ZipUtils.UpdateDirectory(outputFile, Path.Combine(inputFolder, "original", "META-INF"), "META-INF");
|
||||
if (File.Exists(Path.Combine(inputFolder, "original", "stamp-cert-sha256")))
|
||||
ZipUtils.AddFile(outputFile, Path.Combine(inputFolder, "original", "stamp-cert-sha256"));
|
||||
ZipUtils.UpdateFile(outputFile, Path.Combine(inputFolder, "original", "stamp-cert-sha256"));
|
||||
ToLog(ApktoolEventType.Infomation, String.Format(Language.CopyFileTo, outputFile, unsignedApkPath));
|
||||
File.Copy(outputFile, unsignedApkPath, true);
|
||||
}
|
||||
@@ -1627,7 +1621,6 @@ namespace APKToolGUI
|
||||
#endregion
|
||||
|
||||
#region Fix flickering
|
||||
|
||||
public static void SetDoubleBuffered(System.Windows.Forms.Control c)
|
||||
{
|
||||
if (System.Windows.Forms.SystemInformation.TerminalServerSession)
|
||||
|
||||
@@ -8,7 +8,7 @@ using System.Reflection;
|
||||
using Microsoft.WindowsAPICodePack.Shell;
|
||||
using APKToolGUI.Languages;
|
||||
|
||||
namespace APKEasyTool
|
||||
namespace APKToolGUI
|
||||
{
|
||||
public class TaskBarJumpList
|
||||
{
|
||||
|
||||
+96
-101
@@ -1,165 +1,160 @@
|
||||
using System;
|
||||
using Ionic.Zip;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.IO.Compression;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Documents;
|
||||
|
||||
namespace APKToolGUI.Utils
|
||||
{
|
||||
public class ZipUtils
|
||||
{
|
||||
public static void ExtractAllStream(string path, string embeddedZip)
|
||||
{
|
||||
Assembly _assembly = Assembly.GetExecutingAssembly();
|
||||
Stream _zipFileStream = _assembly.GetManifestResourceStream(embeddedZip);
|
||||
using (ZipFile zipFile = ZipFile.Read(_zipFileStream))
|
||||
{
|
||||
zipFile.ExtractAll(path);
|
||||
}
|
||||
}
|
||||
|
||||
public static string GetFileName(string path, string fileNameContains, string folderContains = "")
|
||||
{
|
||||
using (ZipArchive archive = ZipFile.OpenRead(path))
|
||||
using (ZipFile zipDest = ZipFile.Read(path))
|
||||
{
|
||||
var entry = archive.Entries
|
||||
.FirstOrDefault(e => e.FullName.Contains(fileNameContains) &&
|
||||
(string.IsNullOrEmpty(folderContains) || e.FullName.Contains(folderContains)));
|
||||
return entry != null ? Path.GetFileName(entry.FullName) : string.Empty;
|
||||
foreach (ZipEntry entry in zipDest.Entries)
|
||||
{
|
||||
if (entry.FileName.Contains(fileNameContains) && entry.FileName.Contains(folderContains))
|
||||
return Path.GetFileName(entry.FileName);
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public static string GetFileNameWithoutExtension(string path, string fileNameContains, string folderContains = "")
|
||||
{
|
||||
using (ZipArchive archive = ZipFile.OpenRead(path))
|
||||
using (ZipFile zipDest = ZipFile.Read(path))
|
||||
{
|
||||
var entry = archive.Entries
|
||||
.FirstOrDefault(e => e.FullName.Contains(fileNameContains) &&
|
||||
(string.IsNullOrEmpty(folderContains) || e.FullName.Contains(folderContains)));
|
||||
return entry != null ? Path.GetFileNameWithoutExtension(entry.FullName) : string.Empty;
|
||||
foreach (ZipEntry entry in zipDest.Entries)
|
||||
{
|
||||
if (entry.FileName.Contains(fileNameContains) && entry.FileName.Contains(folderContains))
|
||||
return Path.GetFileNameWithoutExtension(entry.FileName);
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public static bool Exists(string path, string fileNameContains, string folderContains = "")
|
||||
{
|
||||
using (ZipArchive archive = ZipFile.OpenRead(path))
|
||||
using (ZipFile zipDest = ZipFile.Read(path))
|
||||
{
|
||||
return archive.Entries.Any(e => e.FullName.Contains(fileNameContains) &&
|
||||
(string.IsNullOrEmpty(folderContains) || e.FullName.Contains(folderContains)));
|
||||
foreach (ZipEntry entry in zipDest.Entries)
|
||||
{
|
||||
if (entry.FileName.Contains(fileNameContains) && String.IsNullOrEmpty(folderContains))
|
||||
return true;
|
||||
else if (entry.FileName.Contains(fileNameContains) && entry.FileName.Contains(folderContains))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void AddFile(string zipFile, string fileName, string directoryPathInArchive = "")
|
||||
{
|
||||
using (ZipFile zip = ZipFile.Read(zipFile))
|
||||
{
|
||||
if (!String.IsNullOrEmpty(directoryPathInArchive))
|
||||
zip.AddFile(fileName, directoryPathInArchive);
|
||||
else
|
||||
zip.AddFile(fileName);
|
||||
zip.Save();
|
||||
}
|
||||
}
|
||||
|
||||
public static void AddFile(string zipPath, string filePath, string targetFolderInZip = "")
|
||||
public static void UpdateFile(string zipFile, string fileName, string directoryPathInArchive = "")
|
||||
{
|
||||
using (FileStream zipToOpen = new FileStream(zipPath, FileMode.Open))
|
||||
using (ZipFile zip = ZipFile.Read(zipFile))
|
||||
{
|
||||
using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
|
||||
{
|
||||
// Combine the target folder with the file name to create the entry path
|
||||
string fileName = Path.GetFileName(filePath);
|
||||
string entryPath = string.IsNullOrEmpty(targetFolderInZip)
|
||||
? fileName
|
||||
: Path.Combine(targetFolderInZip, fileName).Replace("\\", "/");
|
||||
|
||||
// Remove the entry if it already exists
|
||||
var existingEntry = archive.GetEntry(entryPath);
|
||||
existingEntry?.Delete();
|
||||
|
||||
// Add the file to the archive
|
||||
archive.CreateEntryFromFile(filePath, entryPath, CompressionLevel.Optimal);
|
||||
|
||||
Console.WriteLine($"Added '{filePath}' to ZIP archive at '{entryPath}'.");
|
||||
}
|
||||
if (!String.IsNullOrEmpty(directoryPathInArchive))
|
||||
zip.UpdateFile(fileName, directoryPathInArchive);
|
||||
else
|
||||
zip.UpdateFile(fileName);
|
||||
zip.Save();
|
||||
}
|
||||
}
|
||||
|
||||
public static void RemoveFile(string zipFile, string fileName)
|
||||
{
|
||||
using (FileStream fs = new FileStream(zipFile, FileMode.OpenOrCreate))
|
||||
using (ZipArchive archive = new ZipArchive(fs, ZipArchiveMode.Update))
|
||||
using (ZipFile zip = ZipFile.Read(zipFile))
|
||||
{
|
||||
var entry = archive.Entries.FirstOrDefault(e => e.FullName.Contains(fileName));
|
||||
entry?.Delete();
|
||||
bool chkresult2 = zip.Any(entry => entry.FileName.Contains(fileName));
|
||||
if (chkresult2)
|
||||
{
|
||||
zip.RemoveEntry(fileName);
|
||||
zip.Save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void ExtractFile(string path, string fileName, string destination)
|
||||
{
|
||||
using (ZipArchive archive = ZipFile.OpenRead(path))
|
||||
using (ZipFile zip = ZipFile.Read(path))
|
||||
{
|
||||
var entry = archive.Entries.FirstOrDefault(e => e.FullName.Contains(fileName));
|
||||
entry?.ExtractToFile(Path.Combine(destination, Path.GetFileName(entry.FullName)), true);
|
||||
bool chkresult2 = zip.Any(entry => entry.FileName.Contains(fileName));
|
||||
if (chkresult2)
|
||||
{
|
||||
zip.FlattenFoldersOnExtract = true;
|
||||
ZipEntry e = zip[fileName];
|
||||
e.Extract(destination, ExtractExistingFileAction.OverwriteSilently);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void ExtractAll(string path, string destination, bool flattenFoldersOnExtract = false)
|
||||
{
|
||||
using (ZipArchive archive = ZipFile.OpenRead(path))
|
||||
using (ZipFile zip = ZipFile.Read(path))
|
||||
{
|
||||
foreach (var entry in archive.Entries)
|
||||
{
|
||||
string fullPath = flattenFoldersOnExtract
|
||||
? Path.Combine(destination, Path.GetFileName(entry.FullName))
|
||||
: Path.Combine(destination, entry.FullName);
|
||||
string directoryPath = Path.GetDirectoryName(fullPath);
|
||||
if (!string.IsNullOrEmpty(directoryPath)) Directory.CreateDirectory(directoryPath);
|
||||
entry.ExtractToFile(fullPath, true);
|
||||
}
|
||||
zip.FlattenFoldersOnExtract = flattenFoldersOnExtract;
|
||||
zip.ExtractAll(destination, ExtractExistingFileAction.OverwriteSilently);
|
||||
}
|
||||
}
|
||||
|
||||
public static void AddDirectory(string zipPath, string directoryPath, string directoryPathInArchive = "")
|
||||
public static void AddDirectory(string path, string fileName, string directoryPathInArchive = "")
|
||||
{
|
||||
if (!File.Exists(zipPath))
|
||||
{
|
||||
Console.WriteLine("ZIP file does not exist.");
|
||||
return;
|
||||
}
|
||||
|
||||
using (FileStream zipToOpen = new FileStream(zipPath, FileMode.Open))
|
||||
{
|
||||
using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
|
||||
{
|
||||
foreach (string filePath in Directory.GetFiles(directoryPath, "*", SearchOption.AllDirectories))
|
||||
{
|
||||
// Calculate the relative path and prepend the target folder inside the ZIP
|
||||
string relativePath = GetRelativePath(directoryPath, filePath);
|
||||
string entryPath = Path.Combine(directoryPathInArchive, relativePath).Replace("\\", "/");
|
||||
|
||||
// Remove the entry if it already exists
|
||||
var existingEntry = archive.GetEntry(entryPath);
|
||||
existingEntry?.Delete();
|
||||
|
||||
// Add the file to the archive
|
||||
archive.CreateEntryFromFile(filePath, entryPath, CompressionLevel.Optimal);
|
||||
}
|
||||
}
|
||||
}
|
||||
ZipFile zip = new ZipFile();
|
||||
if (!String.IsNullOrEmpty(directoryPathInArchive))
|
||||
zip.AddDirectory(fileName, directoryPathInArchive);
|
||||
else
|
||||
zip.AddDirectory(fileName);
|
||||
zip.Save(path);
|
||||
}
|
||||
|
||||
static string GetRelativePath(string basePath, string fullPath)
|
||||
public static void UpdateDirectory(string path, string dirName, string directoryPathInArchive = "")
|
||||
{
|
||||
// Ensure both paths are absolute
|
||||
basePath = Path.GetFullPath(basePath);
|
||||
fullPath = Path.GetFullPath(fullPath);
|
||||
|
||||
if (!fullPath.StartsWith(basePath, StringComparison.OrdinalIgnoreCase))
|
||||
using (ZipFile zip = ZipFile.Read(path))
|
||||
{
|
||||
throw new ArgumentException("The fullPath is not within the basePath.");
|
||||
if (!String.IsNullOrEmpty(directoryPathInArchive))
|
||||
zip.UpdateDirectory(dirName, directoryPathInArchive);
|
||||
else
|
||||
zip.UpdateDirectory(dirName);
|
||||
zip.Save();
|
||||
}
|
||||
|
||||
return fullPath.Substring(basePath.Length).TrimStart(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
|
||||
}
|
||||
|
||||
public static void ExtractDirectory(string path, string folderName, string destination, bool flattenFoldersOnExtract = false)
|
||||
{
|
||||
using (ZipArchive archive = ZipFile.OpenRead(path))
|
||||
using (ZipFile zip = ZipFile.Read(path))
|
||||
{
|
||||
foreach (ZipArchiveEntry entry in archive.Entries.Where(e => e.FullName.Contains(folderName)))
|
||||
zip.FlattenFoldersOnExtract = flattenFoldersOnExtract;
|
||||
foreach (ZipEntry e in zip.Where(x => x.FileName.Contains(folderName)))
|
||||
{
|
||||
string extractPath = flattenFoldersOnExtract
|
||||
? Path.Combine(destination, Path.GetFileName(entry.FullName))
|
||||
: Path.Combine(destination, entry.FullName);
|
||||
|
||||
string directoryPath = Path.GetDirectoryName(extractPath);
|
||||
if (!string.IsNullOrEmpty(directoryPath))
|
||||
{
|
||||
Directory.CreateDirectory(directoryPath);
|
||||
}
|
||||
|
||||
entry.ExtractToFile(extractPath, true);
|
||||
e.Extract(destination, ExtractExistingFileAction.OverwriteSilently);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -330,6 +330,14 @@
|
||||
<assemblyIdentity name="Microsoft.Bcl.HashCode" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Text.Encoding.CodePages" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.3" newVersion="9.0.0.3" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Security.Permissions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.3" newVersion="9.0.0.3" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
<package id="Ookii.Dialogs.WinForms" version="4.0.0" targetFramework="net48" />
|
||||
<package id="OSVersionExt" version="3.0.0" targetFramework="net48" />
|
||||
<package id="PortableSettingsProvider" version="0.2.5" targetFramework="net48" />
|
||||
<package id="ProDotNetZip" version="1.20.0" targetFramework="net48" />
|
||||
<package id="Resource.Embedder" version="2.2.0" targetFramework="net48" />
|
||||
<package id="ResourceLoader" version="3.3.1" targetFramework="net48" />
|
||||
<package id="System.AppContext" version="4.3.0" targetFramework="net48" />
|
||||
@@ -28,8 +29,6 @@
|
||||
<package id="System.Globalization" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Globalization.Calendars" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO.Compression" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO.Compression.ZipFile" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO.FileSystem" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.IO.FileSystem.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Linq" version="4.3.0" targetFramework="net48" />
|
||||
@@ -53,11 +52,15 @@
|
||||
<package id="System.Runtime.InteropServices" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime.Numerics" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Security.AccessControl" version="6.0.1" targetFramework="net48" />
|
||||
<package id="System.Security.Cryptography.Algorithms" version="4.3.1" targetFramework="net48" />
|
||||
<package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Security.Cryptography.X509Certificates" version="4.3.2" targetFramework="net48" />
|
||||
<package id="System.Security.Permissions" version="9.0.3" targetFramework="net48" />
|
||||
<package id="System.Security.Principal.Windows" version="5.0.0" targetFramework="net48" />
|
||||
<package id="System.Text.Encoding" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Text.Encoding.CodePages" version="9.0.3" targetFramework="net48" />
|
||||
<package id="System.Text.Encoding.Extensions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Text.RegularExpressions" version="4.3.1" targetFramework="net48" />
|
||||
<package id="System.Threading" version="4.3.0" targetFramework="net48" />
|
||||
|
||||
Reference in New Issue
Block a user