diff --git a/BurnOutSharp.Builders/InstallShieldCabinet.cs b/BurnOutSharp.Builders/InstallShieldCabinet.cs index 459febe2..a18a4673 100644 --- a/BurnOutSharp.Builders/InstallShieldCabinet.cs +++ b/BurnOutSharp.Builders/InstallShieldCabinet.cs @@ -3,6 +3,7 @@ using System.IO; using System.Text; using BurnOutSharp.Models.InstallShieldCabinet; using BurnOutSharp.Utilities; +using static BurnOutSharp.Models.InstallShieldCabinet.Constants; namespace BurnOutSharp.Builders { @@ -328,8 +329,9 @@ namespace BurnOutSharp.Builders { CommonHeader commonHeader = new CommonHeader(); - commonHeader.Signature = data.ReadUInt32(); - if (commonHeader.Signature != 0x28635349) + byte[] signature = data.ReadBytes(4); + commonHeader.Signature = Encoding.ASCII.GetString(signature); + if (commonHeader.Signature != SignatureString) return null; commonHeader.Version = data.ReadUInt32(); @@ -360,15 +362,13 @@ namespace BurnOutSharp.Builders cabDescriptor.FileTableOffset2 = data.ReadUInt32(); cabDescriptor.Reserved3 = data.ReadBytes(0x0E); - // TODO: Determine how the value "71" was chosen here - cabDescriptor.FileGroupOffsets = new uint[71]; + cabDescriptor.FileGroupOffsets = new uint[MAX_FILE_GROUP_COUNT]; for (int i = 0; i < cabDescriptor.FileGroupOffsets.Length; i++) { cabDescriptor.FileGroupOffsets[i] = data.ReadUInt32(); } - // TODO: Determine how the value "71" was chosen here - cabDescriptor.ComponentOffsets = new uint[71]; + cabDescriptor.ComponentOffsets = new uint[MAX_COMPONENT_COUNT]; for (int i = 0; i < cabDescriptor.ComponentOffsets.Length; i++) { cabDescriptor.ComponentOffsets[i] = data.ReadUInt32(); diff --git a/BurnOutSharp.Models/BFPK/Constants.cs b/BurnOutSharp.Models/BFPK/Constants.cs index 372b26c3..9a5612eb 100644 --- a/BurnOutSharp.Models/BFPK/Constants.cs +++ b/BurnOutSharp.Models/BFPK/Constants.cs @@ -2,10 +2,10 @@ namespace BurnOutSharp.Models.BFPK { public static class Constants { - public const uint SignatureUInt32 = 0x4b504642; - public static readonly byte[] SignatureBytes = new byte[] { 0x42, 0x46, 0x50, 0x4b }; public const string SignatureString = "BFPK"; + + public const uint SignatureUInt32 = 0x4b504642; } } \ No newline at end of file diff --git a/BurnOutSharp.Models/InstallShieldCAB/CabDescriptor.cs b/BurnOutSharp.Models/InstallShieldCabinet/CabDescriptor.cs similarity index 100% rename from BurnOutSharp.Models/InstallShieldCAB/CabDescriptor.cs rename to BurnOutSharp.Models/InstallShieldCabinet/CabDescriptor.cs diff --git a/BurnOutSharp.Models/InstallShieldCAB/CommonHeader.cs b/BurnOutSharp.Models/InstallShieldCabinet/CommonHeader.cs similarity index 90% rename from BurnOutSharp.Models/InstallShieldCAB/CommonHeader.cs rename to BurnOutSharp.Models/InstallShieldCabinet/CommonHeader.cs index 21cf9615..744fff37 100644 --- a/BurnOutSharp.Models/InstallShieldCAB/CommonHeader.cs +++ b/BurnOutSharp.Models/InstallShieldCabinet/CommonHeader.cs @@ -3,7 +3,7 @@ namespace BurnOutSharp.Models.InstallShieldCabinet /// public sealed class CommonHeader { - public uint Signature; + public string Signature; public uint Version; diff --git a/BurnOutSharp.Models/InstallShieldCAB/Component.cs b/BurnOutSharp.Models/InstallShieldCabinet/Component.cs similarity index 100% rename from BurnOutSharp.Models/InstallShieldCAB/Component.cs rename to BurnOutSharp.Models/InstallShieldCabinet/Component.cs diff --git a/BurnOutSharp.Models/InstallShieldCabinet/Constants.cs b/BurnOutSharp.Models/InstallShieldCabinet/Constants.cs new file mode 100644 index 00000000..9ec47168 --- /dev/null +++ b/BurnOutSharp.Models/InstallShieldCabinet/Constants.cs @@ -0,0 +1,17 @@ +namespace BurnOutSharp.Models.InstallShieldCabinet +{ + public static class Constants + { + public static readonly byte[] SignatureBytes = new byte[] { 0x49, 0x53, 0x63, 0x28 }; + + public const string SignatureString = "ISc("; + + public const uint SignatureUInt32 = 0x28635349; + + // TODO: Determine how the value "71" was chosen here + public const int MAX_FILE_GROUP_COUNT = 71; + + // TODO: Determine how the value "71" was chosen here + public const int MAX_COMPONENT_COUNT = 71; + } +} \ No newline at end of file diff --git a/BurnOutSharp.Models/InstallShieldCAB/Enums.cs b/BurnOutSharp.Models/InstallShieldCabinet/Enums.cs similarity index 100% rename from BurnOutSharp.Models/InstallShieldCAB/Enums.cs rename to BurnOutSharp.Models/InstallShieldCabinet/Enums.cs diff --git a/BurnOutSharp.Models/InstallShieldCAB/FileDescriptor.cs b/BurnOutSharp.Models/InstallShieldCabinet/FileDescriptor.cs similarity index 100% rename from BurnOutSharp.Models/InstallShieldCAB/FileDescriptor.cs rename to BurnOutSharp.Models/InstallShieldCabinet/FileDescriptor.cs diff --git a/BurnOutSharp.Models/InstallShieldCAB/FileGroup.cs b/BurnOutSharp.Models/InstallShieldCabinet/FileGroup.cs similarity index 100% rename from BurnOutSharp.Models/InstallShieldCAB/FileGroup.cs rename to BurnOutSharp.Models/InstallShieldCabinet/FileGroup.cs diff --git a/BurnOutSharp.Models/InstallShieldCAB/Header.cs b/BurnOutSharp.Models/InstallShieldCabinet/Header.cs similarity index 100% rename from BurnOutSharp.Models/InstallShieldCAB/Header.cs rename to BurnOutSharp.Models/InstallShieldCabinet/Header.cs diff --git a/BurnOutSharp.Models/InstallShieldCAB/OffsetList.cs b/BurnOutSharp.Models/InstallShieldCabinet/OffsetList.cs similarity index 100% rename from BurnOutSharp.Models/InstallShieldCAB/OffsetList.cs rename to BurnOutSharp.Models/InstallShieldCabinet/OffsetList.cs diff --git a/BurnOutSharp.Models/InstallShieldCAB/VolumeHeader.cs b/BurnOutSharp.Models/InstallShieldCabinet/VolumeHeader.cs similarity index 100% rename from BurnOutSharp.Models/InstallShieldCAB/VolumeHeader.cs rename to BurnOutSharp.Models/InstallShieldCabinet/VolumeHeader.cs