internal static void Extract(string inputFile, string destinationDir, TextWriter output, TextWriter error) { try { if (File.Exists(inputFile)) { if (destinationDir == ".") { destinationDir = System.Environment.CurrentDirectory; } Fs.EnsureFolder(destinationDir); output.WriteCommandHeader($"Extracting {inputFile} to {destinationDir}..."); TemplatePackage.Extract(inputFile, destinationDir, true); } else { error.WriteCommandText($"{inputFile} is not a valid folder to create a Templates Package."); } } catch (Exception ex) { error.WriteException(ex, "Unexpected exception extracting templates package."); } }
private static void Extract(string mstxFilePath, string versionedFolder, bool verifyPackageSignatures = true) { try { TemplatePackage.Extract(mstxFilePath, versionedFolder, verifyPackageSignatures); AppHealth.Current.Verbose.TrackAsync($"{StringRes.TemplatesContentExtractedToString} {versionedFolder}.").FireAndForget(); } catch (Exception ex) { AppHealth.Current.Exception.TrackAsync(ex, StringRes.TemplatesSourceExtractContentMessage).FireAndForget(); throw; } }
public async Task ExtractConcurrentReadAsync() { var inFile = @"Packaging\MsSigned\Templates.mstx"; var outDir1 = @"C:\Temp\OutFolder\Concurrent1"; var outDir2 = @"C:\Temp\OutFolder\Concurrent2"; Task t1 = new Task(() => TemplatePackage.Extract(inFile, outDir1)); Task t2 = new Task(() => TemplatePackage.Extract(inFile, outDir2)); t1.Start(); t2.Start(); await Task.WhenAll(t1, t2); Directory.Delete(outDir1, true); Directory.Delete(outDir2, true); }
public void ExtractFileCurrentDir() { var certPass = GetTestCertPassword(); X509Certificate2 cert = TemplatePackage.LoadCert(@"Packaging\TestCert.pfx", certPass); var inFile = @"Packaging\SampleContent.txt"; var outFile = @"ToExtract.package"; var extractionDir = string.Empty; TemplatePackage.PackAndSign(inFile, outFile, cert, MediaTypeNames.Text.Plain); TemplatePackage.Extract(outFile, extractionDir); Assert.True(File.Exists(outFile)); File.Delete(outFile); }
public void Pack_FolderWithDefaultNaming() { int filesInCurrentFolder = new DirectoryInfo(Environment.CurrentDirectory).GetFiles("*", SearchOption.AllDirectories).Count(); var inFolder = Environment.CurrentDirectory; var outDir = @"C:\Temp\PackTests"; var extractDir = Path.Combine(outDir, "Extraction"); var outFile = TemplatePackage.Pack(inFolder); TemplatePackage.Extract(outFile, extractDir, false); int filesInExtractionFolder = new DirectoryInfo(extractDir).GetFiles("*", SearchOption.AllDirectories).Count(); Assert.Equal(filesInCurrentFolder, filesInExtractionFolder); File.Delete(outFile); Directory.Delete(outDir, true); }
public void Pack_Folder() { int filesInCurrentFolder = new DirectoryInfo(Environment.CurrentDirectory).GetFiles("*", SearchOption.AllDirectories).Count(); var inFolder = Environment.CurrentDirectory; var outDir = @"C:\Temp\PackTests"; var outFile = Path.Combine(outDir, "JustPacked.mstx"); var extractDir = Path.Combine(outDir, "Extraction"); TemplatePackage.Pack(inFolder, outFile, MediaTypeNames.Text.Plain); TemplatePackage.Extract(outFile, extractDir, false); int filesInExtractionFolder = new DirectoryInfo(extractDir).GetFiles("*", SearchOption.AllDirectories).Count(); Assert.Equal(filesInCurrentFolder, filesInExtractionFolder); Directory.Delete(outDir, true); }
public void ExtractFileAndPacksInCurrentDir() { var certPass = GetTestCertPassword(); X509Certificate2 cert = TemplatePackage.LoadCert(@"Packaging\TestCert.pfx", certPass); File.Copy(@"Packaging\SampleContent.txt", Path.Combine(Environment.CurrentDirectory, "NewFile.txt"), true); var inFile = "NewFile.txt"; var outFile = @"ToExtract.package"; var extractionDir = Environment.CurrentDirectory; TemplatePackage.PackAndSign(inFile, outFile, cert, MediaTypeNames.Text.Plain); TemplatePackage.Extract(outFile, extractionDir); Assert.True(Directory.Exists(extractionDir)); Assert.True(File.Exists(Path.Combine(extractionDir, Path.GetFileName(inFile)))); File.Delete(outFile); }
public void ExtractAbsoluteDirs() { var certPass = GetTestCertPassword(); X509Certificate2 cert = TemplatePackage.LoadCert(@"Packaging\TestCert.pfx", certPass); var inFile = Path.Combine(Environment.CurrentDirectory, @"Packaging\SampleContent.txt"); var outFile = @"C:\Temp\MyPackage\ToExtract.package"; var extractionDir = @"C:\Temp\NewContent\Extracted"; TemplatePackage.PackAndSign(inFile, outFile, cert, MediaTypeNames.Text.Plain); TemplatePackage.Extract(outFile, extractionDir); Assert.True(Directory.Exists(extractionDir)); Assert.True(File.Exists(Path.Combine(extractionDir, @"Packaging\SampleContent.txt"))); File.Delete(outFile); Directory.Delete(extractionDir, true); }
public void ExtractRelativeDirs() { var certPass = GetTestCertPassword(); X509Certificate2 cert = TemplatePackage.LoadCert(@"Packaging\TestCert.pfx", certPass); var inFile = @"Packaging\SampleContent.txt"; var outFile = @"Packaging\ToExtract.package"; var extractionDir = "NewDirToExtract"; TemplatePackage.PackAndSign(inFile, outFile, cert, MediaTypeNames.Text.Plain); TemplatePackage.Extract(outFile, extractionDir); Assert.True(Directory.Exists(extractionDir)); Assert.True(File.Exists(Path.Combine(extractionDir, inFile))); File.Delete(outFile); Directory.Delete(extractionDir, true); }
public void PackAndSign_FolderExtractToAbsoluteDir() { var certPass = GetTestCertPassword(); X509Certificate2 cert = TemplatePackage.LoadCert(@"Packaging\TestCert.pfx", certPass); int filesInCurrentFolder = new DirectoryInfo(Environment.CurrentDirectory).GetFiles("*", SearchOption.AllDirectories).Count(); var inFolder = Environment.CurrentDirectory; var outDir = @"C:\Temp\OutFolder\Extraction"; string signedFile = TemplatePackage.PackAndSign(inFolder, cert); TemplatePackage.Extract(signedFile, outDir); int filesInExtractionFolder = new DirectoryInfo(outDir).GetFiles("*", SearchOption.AllDirectories).Count(); Assert.Equal(filesInCurrentFolder, filesInExtractionFolder); File.Delete(signedFile); Directory.Delete(outDir, true); }
public void ExtractFileTampered() { var certPass = GetTestCertPassword(); X509Certificate2 cert = TemplatePackage.LoadCert(@"Packaging\TestCert.pfx", certPass); var inFile = @"Packaging\SampleContent.txt"; var outFile = @"Packaging\ToExtract.package"; var extractionDir = "SubDir"; TemplatePackage.PackAndSign(inFile, outFile, cert, MediaTypeNames.Text.Plain); ModifyContent(outFile, "SampleContent.txt"); Exception ex = Assert.Throws <InvalidSignatureException>(() => { TemplatePackage.Extract(outFile, extractionDir); }); File.Delete(outFile); Directory.Delete(extractionDir, true); }