From 98ce8b65ec027250ebb8ad915ccedb981c1987fd Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 3 Oct 2024 02:35:15 -0400 Subject: [PATCH] Correct info for IS-CAB file groups --- .../InstallShieldCabinet/Enums.cs | 60 +++++++++++++++++ .../InstallShieldCabinet/FileGroup.cs | 65 ++++--------------- 2 files changed, 73 insertions(+), 52 deletions(-) diff --git a/SabreTools.Models/InstallShieldCabinet/Enums.cs b/SabreTools.Models/InstallShieldCabinet/Enums.cs index cb52a39..643e3e2 100644 --- a/SabreTools.Models/InstallShieldCabinet/Enums.cs +++ b/SabreTools.Models/InstallShieldCabinet/Enums.cs @@ -12,6 +12,66 @@ namespace SabreTools.Models.InstallShieldCabinet FILE_INVALID = 8, } + /// i6comp02 + [Flags] + public enum FileGroupAttributes : ushort + { + /// + /// Shared + /// + FGATTR_SHARED = 0x01, + + /// + /// Encrypted + /// + FGATTR_ENCRYPTED = 0x02, + + /// + /// Compressed + /// + FGATTR_COMPRESSED = 0x04, + + /// + /// Self-Registering + /// + FGATTR_SELFREGISTER = 0x10, + + /// + /// Potentially locked + /// + FGATTR_LOCKED = 0x20, + + /// + /// Uninstall + /// + FGATTR_UNINSTALL = 0x40, + } + + /// i6comp02 + [Flags] + public enum FileGroupFlags : uint + { + /// + /// Always overwrite + /// + FGDESC_ALWAYS_OVERWRITE = 0x001, + + /// + /// Never overwrite + /// + FGDESC_NEVER_OVERWRITE = 0x002, + + /// + /// Overwrite if newer date + /// + FGDESC_NEWER_DATE = 0x020, + + /// + /// Overwrite if newer version + /// + FGDESC_NEWER_VERSION = 0x200, + } + /// public enum LinkFlags : byte { diff --git a/SabreTools.Models/InstallShieldCabinet/FileGroup.cs b/SabreTools.Models/InstallShieldCabinet/FileGroup.cs index aef4fe0..6b75db3 100644 --- a/SabreTools.Models/InstallShieldCabinet/FileGroup.cs +++ b/SabreTools.Models/InstallShieldCabinet/FileGroup.cs @@ -1,6 +1,7 @@ namespace SabreTools.Models.InstallShieldCabinet { /// + /// Additional info from i6comp02 public sealed class FileGroup { /// @@ -18,35 +19,15 @@ namespace SabreTools.Models.InstallShieldCabinet /// public uint ExpandedSize { get; set; } - /// - /// Reserved - /// - public byte[]? Reserved0 { get; set; } - /// /// Size of the compressed data /// public uint CompressedSize { get; set; } /// - /// Reserved + /// Attributes (junk2) /// - public byte[]? Reserved1 { get; set; } - - /// - /// Reserved - /// - public byte[]? Reserved2 { get; set; } - - /// - /// Attribute(?) - /// - public ushort Attribute1 { get; set; } - - /// - /// Attribute(?) - /// - public ushort Attribute2 { get; set; } + public FileGroupAttributes Attributes { get; set; } /// /// Index of the first file @@ -59,19 +40,19 @@ namespace SabreTools.Models.InstallShieldCabinet public uint LastFile { get; set; } /// - /// Unknown offset(?) + /// Unknown string offset /// - public uint UnknownOffset { get; set; } + public uint UnknownStringOffset { get; set; } /// - /// Var 4 offset(?) + /// Offset to the operating system (Var4) /// - public uint Var4Offset { get; set; } + public uint OperatingSystemOffset { get; set; } /// - /// Var 1 offset(?) + /// Offset to the language (Var1) /// - public uint Var1Offset { get; set; } + public uint LanguageOffset { get; set; } /// /// Offset to the HTTP location @@ -84,43 +65,23 @@ namespace SabreTools.Models.InstallShieldCabinet public uint FTPLocationOffset { get; set; } /// - /// Misc offset(?) + /// Misc offset /// public uint MiscOffset { get; set; } - /// - /// Var 2 offset(?) - /// - public uint Var2Offset { get; set; } - /// /// Offset to the target directory /// public uint TargetDirectoryOffset { get; set; } /// - /// Reserved + /// Overwrite setting flags /// - public byte[]? Reserved3 { get; set; } + public FileGroupFlags OverwriteFlags { get; set; } /// /// Reserved /// - public byte[]? Reserved4 { get; set; } - - /// - /// Reserved - /// - public byte[]? Reserved5 { get; set; } - - /// - /// Reserved - /// - public byte[]? Reserved6 { get; set; } - - /// - /// Reserved - /// - public byte[]? Reserved7 { get; set; } + public uint[]? Reserved { get; set; } = new uint[4]; } } \ No newline at end of file