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
///