Same deal with deltas

This commit is contained in:
Paul Betts
2017-05-31 13:36:49 -07:00
parent 70f98d95ec
commit 928ed9bec1
3 changed files with 19 additions and 36 deletions

View File

@@ -68,17 +68,11 @@ namespace Squirrel
this.Log().Info("Extracting {0} and {1} into {2}",
basePackage.ReleasePackageFile, newPackage.ReleasePackageFile, tempPath);
Utility.ExtractZipToDirectory(basePackage.ReleasePackageFile, baseTempInfo.FullName).Wait();
var opts = new ExtractionOptions() { ExtractFullPath = true, Overwrite = true, PreserveFileTime = true };
using (var za = ZipArchive.Open(basePackage.ReleasePackageFile))
using (var reader = za.ExtractAllEntries()) {
reader.WriteAllToDirectory(baseTempInfo.FullName, opts);
}
using (var za = ZipArchive.Open(basePackage.ReleasePackageFile))
using (var reader = za.ExtractAllEntries()) {
reader.WriteAllToDirectory(tempInfo.FullName, opts);
}
Utility.ExtractZipToDirectory(basePackage.ReleasePackageFile, baseTempInfo.FullName).Wait();
Utility.ExtractZipToDirectory(newPackage.ReleasePackageFile, tempInfo.FullName).Wait();
// Collect a list of relative paths under 'lib' and map them
// to their full name. We'll use this later to determine in
@@ -95,10 +89,7 @@ namespace Squirrel
}
ReleasePackage.addDeltaFilesToContentTypes(tempInfo.FullName);
using (var za = ZipArchive.Create()) {
za.AddAllFromDirectory(tempInfo.FullName);
za.SaveTo(outputFile, CompressionType.Deflate);
}
Utility.CreateZipFromDirectory(outputFile, tempInfo.FullName).Wait();
}
return new ReleasePackage(outputFile);

View File

@@ -163,7 +163,7 @@ namespace Squirrel
contentsPostProcessHook?.Invoke(tempPath);
createZipEncoded(outputFile, tempPath);
Utility.CreateZipFromDirectory(outputFile, tempPath).Wait();
ReleasePackageFile = outputFile;
return ReleasePackageFile;
@@ -217,28 +217,6 @@ namespace Squirrel
});
}
// Create zip file with entry names %-encoded, as nupkg file does.
void createZipEncoded(string zipFilePath, string folder)
{
var sevenZip = Path.Combine(
Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location),
"7z.exe");
Utility.InvokeProcessAsync(sevenZip, String.Format("a \"{0}\" -tzip -mmt on *", zipFilePath), CancellationToken.None, folder)
.Wait();
/*
using (var archive = ZipArchive.Create())
using (var tgt = File.OpenWrite(zipFilePath)) {
archive.DeflateCompressionLevel = CompressionLevel.BestCompression;
archive.AddAllFromDirectory(folder);
archive.SaveTo(
tgt,
new WriterOptions(CompressionType.Deflate));
}
*/
}
void extractDependentPackages(IEnumerable<IPackage> dependencies, DirectoryInfo tempPath, FrameworkName framework)
{
dependencies.ForEach(pkg => {

View File

@@ -386,6 +386,20 @@ namespace Squirrel
}
}
public static async Task CreateZipFromDirectory(string zipFilePath, string inFolder)
{
var sevenZip = Utility.FindHelperExecutable("7z.exe");
var result = default(Tuple<int, string>);
try {
result = await Utility.InvokeProcessAsync(sevenZip, String.Format("a \"{0}\" -tzip -mmt on *", zipFilePath), CancellationToken.None, inFolder);
if (result.Item1 != 0) throw new Exception(result.Item2);
} catch (Exception ex) {
Log().Error($"Failed to extract file {zipFilePath} to {inFolder}\n{ex.Message}");
throw;
}
}
public static string AppDirForRelease(string rootAppDirectory, ReleaseEntry entry)
{
return Path.Combine(rootAppDirectory, "app-" + entry.Version.ToString());