diff --git a/SabreTools.Serialization/Wrappers/InstallShieldCabinet.cs b/SabreTools.Serialization/Wrappers/InstallShieldCabinet.cs
index 95b9222a..f1f011cf 100644
--- a/SabreTools.Serialization/Wrappers/InstallShieldCabinet.cs
+++ b/SabreTools.Serialization/Wrappers/InstallShieldCabinet.cs
@@ -1,5 +1,6 @@
using System;
using System.IO;
+using System.Text.RegularExpressions;
using SabreTools.Models.InstallShieldCabinet;
namespace SabreTools.Serialization.Wrappers
@@ -135,6 +136,29 @@ namespace SabreTools.Serialization.Wrappers
#endregion
+ #region Cabinet Set
+
+ ///
+ /// Create the generic filename pattern to look for from the input filename
+ ///
+ /// String representing the filename pattern for a cabinet set, null on error
+ public static string? CreateFilenamePattern(string filename)
+ {
+ string? pattern = null;
+ if (string.IsNullOrEmpty(filename))
+ return pattern;
+
+ string? directory = Path.GetDirectoryName(Path.GetFullPath(filename));
+ if (directory != null)
+ pattern = Path.Combine(directory, Path.GetFileNameWithoutExtension(filename));
+ else
+ pattern = Path.GetFileNameWithoutExtension(filename);
+
+ return new Regex(@"\d+$").Replace(pattern, string.Empty);
+ }
+
+ #endregion
+
#region Component
///