From 3210b8601d1db01bf672e82044714c94e1b40406 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Mon, 28 Jul 2025 11:35:24 -0400 Subject: [PATCH] Add IS-CAB CreateFilenamePattern from UnshieldSharp --- .../Wrappers/InstallShieldCabinet.cs | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) 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 ///