private void ReadFrom(BinaryReader bR) { switch (bR.ReadByte()) { case 0: //eof reached break; case 1: _name = Encoding.UTF8.GetString(bR.ReadBytes(bR.ReadByte())); _lastModifiedUTC = DateTime.FromBinary(bR.ReadInt64()); _attributes = (PackageItemAttributes)bR.ReadByte(); _extractTo = (ExtractLocation)bR.ReadByte(); if (_extractTo == ExtractLocation.Custom) { _extractToCustomLocation = Encoding.UTF8.GetString(bR.ReadBytes(bR.ReadByte())); } long length = bR.ReadInt64(); _data = new OffsetStream(bR.BaseStream, bR.BaseStream.Position, length, true); bR.BaseStream.Position += length; break; default: throw new IOException("PackageItem version not supported."); } }
public static string GetExtractLocation(ExtractLocation extractTo, string extractToCustomLocation) { switch (extractTo) { case ExtractLocation.WindowsRoot: return(Path.GetPathRoot(Environment.SystemDirectory)); case ExtractLocation.Windows: return(Path.GetDirectoryName(Environment.SystemDirectory)); case ExtractLocation.System: return(Environment.SystemDirectory); case ExtractLocation.Temp: return(Path.GetTempPath()); case ExtractLocation.CommonApplicationData: return(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)); case ExtractLocation.CommonProgramFiles: return(Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFiles)); case ExtractLocation.DesktopDirectory: return(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)); case ExtractLocation.LocalApplicationData: return(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)); case ExtractLocation.Personal: return(Environment.GetFolderPath(Environment.SpecialFolder.Personal)); case ExtractLocation.ProgramFiles: return(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)); case ExtractLocation.SendTo: return(Environment.GetFolderPath(Environment.SpecialFolder.SendTo)); case ExtractLocation.Programs: return(Environment.GetFolderPath(Environment.SpecialFolder.Programs)); case ExtractLocation.StartMenu: return(Environment.GetFolderPath(Environment.SpecialFolder.StartMenu)); case ExtractLocation.Startup: return(Environment.GetFolderPath(Environment.SpecialFolder.Startup)); case ExtractLocation.Templates: return(Environment.GetFolderPath(Environment.SpecialFolder.Templates)); case ExtractLocation.AppPath: return(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)); case ExtractLocation.Custom: return(extractToCustomLocation); default: return(null); } }
public ExtractInterfaceOptionsResult(bool isCancelled, ImmutableArray <ISymbol> includedMembers, string interfaceName, string fileName, ExtractLocation location) { IsCancelled = isCancelled; IncludedMembers = includedMembers; InterfaceName = interfaceName; Location = location; FileName = fileName; }
public PackageItem(string name, Stream s) { _name = name; _lastModifiedUTC = DateTime.UtcNow; _attributes = PackageItemAttributes.None; _extractTo = ExtractLocation.None; _extractToCustomLocation = null; _data = s; }
public string GetExtractionFilePath(ExtractLocation extractTo, string extractToCustomLocation = null) { if (IsAttributeSet(PackageItemAttributes.FixedExtractLocation)) { return(Path.Combine(Package.GetExtractLocation(_extractTo, _extractToCustomLocation), _name)); } else { return(Path.Combine(Package.GetExtractLocation(extractTo, extractToCustomLocation), _name)); } }
protected override void Execute(CodeActivityContext context) { var SourceFilePath = ZipFile.Get(context); var DestinationFolderPath = ExtractLocation.Get(context); var Password_Val = Password.Get(context); using (ZipFile zip = new ZipFile(SourceFilePath)) { zip.Password = Password_Val.ToString(); zip.ExtractAll(DestinationFolderPath); } }
public PackageItem(string name, DateTime lastModifiedUTC, Stream s, PackageItemAttributes attributes = PackageItemAttributes.None, ExtractLocation extractTo = ExtractLocation.None, string extractToCustomLocation = null) { _name = name; _lastModifiedUTC = lastModifiedUTC; _attributes = attributes; _extractTo = extractTo; if (extractTo == ExtractLocation.Custom) { _extractToCustomLocation = extractToCustomLocation; } _data = s; }
public PackageItem(string filepath, PackageItemAttributes attributes = PackageItemAttributes.None, ExtractLocation extractTo = ExtractLocation.None, string extractToCustomLocation = null) { _name = Path.GetFileName(filepath); _lastModifiedUTC = File.GetLastWriteTimeUtc(filepath); _attributes = attributes; _extractTo = extractTo; if (extractTo == ExtractLocation.Custom) { _extractToCustomLocation = extractToCustomLocation; } _data = new FileStream(filepath, FileMode.Open, FileAccess.Read); _ownStream = true; }
public void ExtractAll(ExtractLocation extractTo, string extractToCustomLocation = null, bool overwrite = false) { if (_mode != PackageMode.Open) { throw new IOException("Package is not in open mode."); } List <PackageItemTransactionLog> oplog = new List <PackageItemTransactionLog>(); try { foreach (PackageItem item in _items) { PackageItemTransactionLog log; if (extractTo == ExtractLocation.None) { log = item.Extract(overwrite); } else { log = item.Extract(extractTo, extractToCustomLocation, overwrite); } if (log != null) { oplog.Add(log); } } //PROCESS ATTRIBUTES foreach (PackageItem item in _items) { if (item.IsAttributeSet(PackageItemAttributes.ExecuteFile)) { if (extractTo == ExtractLocation.None) { System.Diagnostics.Process.Start(item.GetExtractionFilePath()); } else { System.Diagnostics.Process.Start(item.GetExtractionFilePath(extractTo, extractToCustomLocation)); } } } //COMMIT foreach (PackageItemTransactionLog log in oplog) { if (log.OriginalFilePath != null) { try { File.Delete(log.OriginalFilePath); } catch { } } } } catch (Exception) { //ROLLBACK foreach (PackageItemTransactionLog log in oplog) { try { File.Delete(log.FilePath); if (log.OriginalFilePath != null) { File.Move(log.OriginalFilePath, log.FilePath); } } catch { } } throw; } }
public PackageItemTransactionLog Extract(ExtractLocation extractTo, string extractToCustomLocation = null, bool overwrite = false) { return(Extract(GetExtractionFilePath(extractTo, extractToCustomLocation), overwrite)); }