public bool Extract(out DynamoInstalledPackage pkg) { if (this.DownloadState != State.Downloaded) { throw new Exception("The package cannot be extracted unless it is downloaded. "); } this.DownloadState = State.Installing; // unzip, place files var unzipPath = Greg.Utility.FileUtilities.UnZip(DownloadPath); if (!Directory.Exists(unzipPath)) { throw new Exception("The package was found to be empty and was not installed."); } var installedPath = BuildInstallDirectoryString(); Directory.CreateDirectory(installedPath); // Now create all of the directories foreach (string dirPath in Directory.GetDirectories(unzipPath, "*", SearchOption.AllDirectories)) { Directory.CreateDirectory(dirPath.Replace(unzipPath, installedPath)); } // Copy all the files foreach (string newPath in Directory.GetFiles(unzipPath, "*.*", SearchOption.AllDirectories)) { File.Copy(newPath, newPath.Replace(unzipPath, installedPath)); } // provide handle to installed package pkg = new DynamoInstalledPackage(installedPath, Header.name, VersionName); return(true); }
public bool Extract( out DynamoInstalledPackage pkg ) { if (this.DownloadState != State.Downloaded) { throw new Exception("The package cannot be extracted unless it is downloaded. "); } this.DownloadState = State.Installing; // unzip, place files var unzipPath = Greg.Utility.FileUtilities.UnZip(DownloadPath); if (!Directory.Exists(unzipPath)) { throw new Exception("The package was found to be empty and was not installed."); } var installedPath = BuildInstallDirectoryString(); Directory.CreateDirectory(installedPath); // Now create all of the directories foreach (string dirPath in Directory.GetDirectories(unzipPath, "*", SearchOption.AllDirectories)) Directory.CreateDirectory(dirPath.Replace(unzipPath, installedPath)); // Copy all the files foreach (string newPath in Directory.GetFiles(unzipPath, "*.*", SearchOption.AllDirectories)) File.Copy(newPath, newPath.Replace(unzipPath, installedPath)); // provide handle to installed package pkg = new DynamoInstalledPackage(installedPath, Header.name, VersionName); return true; }