private void UnzipFile(ref string psFile) { try { this.objLog.GravarLog(Log.TypeMessage.Message, "Unziping file " + psFile); string zipFile = Path.Combine(this.sFilesPath, psFile); string unzipedFile = Path.Combine(this.sFilesPath, Path.GetFileNameWithoutExtension(psFile)); psFile = Path.GetFileNameWithoutExtension(psFile) + ".sta"; string stafile = Path.Combine(this.sFilesPath, psFile); using (SevenZipArchive archive = new SevenZipArchive(zipFile, ArchiveFormat.Zip))//TODO mudar o tipo de zip para Z { archive.ExtractAll(this.sFilesPath); } File.Copy(unzipedFile, stafile, true); File.Delete(unzipedFile); File.Delete(zipFile); this.objLog.GravarLog(Log.TypeMessage.Success, "Unziped file " + psFile); } catch (Exception ex) { this.objLog.GravarLog(Log.TypeMessage.Error, ex.Message + " | " + ex.StackTrace); } }
private static void ExtractNPM(string fileName, string targetFolder) { Directory.CreateDirectory(targetFolder); using (SevenZipArchive archive = new SevenZipArchive(fileName)) { archive.ExtractAll(targetFolder, ExtractOptions.OverwriteExistingFiles); } Directory.Move(Path.Combine(targetFolder, "package"), Path.Combine(targetFolder, "npm")); }
private static string SaveAndExtractPackage(IDictionary<string, object> meta) { var pkgName = (string)meta["name"]; var destPath = Path.Combine(ModulesDir, pkgName); var url = (string)((IDictionary<string, object>)meta["dist"])["tarball"]; var urlSplit = url.Split('/'); var filename = urlSplit[urlSplit.Length - 1]; var tmpFilePath = Path.Combine(TempDir, filename); if (File.Exists(tmpFilePath)) // make sure we don't re-download and reinstall anything return destPath; Console.WriteLine("Installing {0} into {1} ...", url, destPath); CleanUpDir(destPath); if (Directory.Exists(destPath)) Directory.Delete(destPath, true); if (!Directory.Exists(TempDir)) Directory.CreateDirectory(TempDir); var tempPkgDir = Path.Combine(TempDir, pkgName); if (!Directory.Exists(tempPkgDir)) Directory.CreateDirectory(tempPkgDir); new WebClient().DownloadFile(url, tmpFilePath); var workingDir = Environment.CurrentDirectory; var tarFileName = Path.Combine(workingDir, tmpFilePath); Environment.CurrentDirectory = tempPkgDir; using (SevenZipArchive archive = new SevenZipArchive(tarFileName)) { archive.ExtractAll(".", ExtractOptions.OverwriteExistingFiles); } Environment.CurrentDirectory = workingDir; // getting error when doing move, so copy recursively instead CopyDirectory(Path.Combine(tempPkgDir, "package"), destPath, true); return destPath; }