diff --git a/SabreTools.Serialization/Wrappers/InstallShieldCabinet.cs b/SabreTools.Serialization/Wrappers/InstallShieldCabinet.cs index da94613d..10aaac23 100644 --- a/SabreTools.Serialization/Wrappers/InstallShieldCabinet.cs +++ b/SabreTools.Serialization/Wrappers/InstallShieldCabinet.cs @@ -87,6 +87,15 @@ namespace SabreTools.Serialization.Wrappers #endregion + #region Extraction State + + /// + /// Base filename path for related CAB files + /// + private string? _filenamePattern; + + #endregion + #region Constants /// @@ -238,6 +247,14 @@ namespace SabreTools.Serialization.Wrappers return set; } + /// + /// Open the numbered cabinet set volume + /// + /// Volume ID, 1-indexed + /// Wrapper representing the volume on success, null otherwise + public InstallShieldCabinet? OpenVolume(ushort volumeId) + => OpenVolume(_filenamePattern, volumeId); + /// /// Open the numbered cabinet set volume /// @@ -271,6 +288,15 @@ namespace SabreTools.Serialization.Wrappers return volume; } + /// + /// Open a cabinet file for reading + /// + /// Cabinet part index to be opened + /// Cabinet files suffix (e.g. `.cab`) + /// A Stream representing the cabinet part, null on error + public Stream? OpenFileForReading(int index, string suffix) + => OpenFileForReading(_filenamePattern, index, suffix); + /// /// Open a cabinet file for reading ///