diff --git a/SabreTools.Serialization/Wrappers/InstallShieldCabinet.cs b/SabreTools.Serialization/Wrappers/InstallShieldCabinet.cs
index 1d77b590..54c0307c 100644
--- a/SabreTools.Serialization/Wrappers/InstallShieldCabinet.cs
+++ b/SabreTools.Serialization/Wrappers/InstallShieldCabinet.cs
@@ -78,6 +78,12 @@ namespace SabreTools.Serialization.Wrappers
/// Only used in multi-file
public InstallShieldCabinet? Prev { get; set; }
+ ///
+ /// Volume index ID, 0 for headers
+ ///
+ /// Only used in multi-file
+ public ushort VolumeID { get; set; }
+
#endregion
#region Constants
@@ -196,7 +202,7 @@ namespace SabreTools.Serialization.Wrappers
// Loop until there are no parts left
bool iterate = true;
InstallShieldCabinet? previous = null;
- for (int i = 1; iterate; i++)
+ for (ushort i = 1; iterate; i++)
{
var file = OpenFileForReading(pattern, i, HEADER_SUFFIX);
if (file != null)
@@ -207,14 +213,21 @@ namespace SabreTools.Serialization.Wrappers
if (file == null)
break;
- var header = Create(file);
- if (header == null)
+ var current = Create(file);
+ if (current == null)
break;
+ current.VolumeID = i;
if (previous != null)
- previous.Next = header;
+ {
+ previous.Next = current;
+ current.Prev = previous;
+ }
else
- previous = set = header;
+ {
+ set = current;
+ previous = current;
+ }
}
return set;