Correct info for IS-CAB file groups

This commit is contained in:
Matt Nadareski
2024-10-03 02:35:15 -04:00
parent ca58343c30
commit 98ce8b65ec
2 changed files with 73 additions and 52 deletions

View File

@@ -12,6 +12,66 @@ namespace SabreTools.Models.InstallShieldCabinet
FILE_INVALID = 8,
}
/// <remarks>i6comp02</remarks>
[Flags]
public enum FileGroupAttributes : ushort
{
/// <summary>
/// Shared
/// </summary>
FGATTR_SHARED = 0x01,
/// <summary>
/// Encrypted
/// </summary>
FGATTR_ENCRYPTED = 0x02,
/// <summary>
/// Compressed
/// </summary>
FGATTR_COMPRESSED = 0x04,
/// <summary>
/// Self-Registering
/// </summary>
FGATTR_SELFREGISTER = 0x10,
/// <summary>
/// Potentially locked
/// </summary>
FGATTR_LOCKED = 0x20,
/// <summary>
/// Uninstall
/// </summary>
FGATTR_UNINSTALL = 0x40,
}
/// <remarks>i6comp02</remarks>
[Flags]
public enum FileGroupFlags : uint
{
/// <summary>
/// Always overwrite
/// </summary>
FGDESC_ALWAYS_OVERWRITE = 0x001,
/// <summary>
/// Never overwrite
/// </summary>
FGDESC_NEVER_OVERWRITE = 0x002,
/// <summary>
/// Overwrite if newer date
/// </summary>
FGDESC_NEWER_DATE = 0x020,
/// <summary>
/// Overwrite if newer version
/// </summary>
FGDESC_NEWER_VERSION = 0x200,
}
/// <see href="https://github.com/twogood/unshield/blob/main/lib/cabfile.h"/>
public enum LinkFlags : byte
{

View File

@@ -1,6 +1,7 @@
namespace SabreTools.Models.InstallShieldCabinet
{
/// <see href="https://github.com/twogood/unshield/blob/main/lib/libunshield.h"/>
/// <remarks>Additional info from i6comp02</remarks>
public sealed class FileGroup
{
/// <summary>
@@ -18,35 +19,15 @@ namespace SabreTools.Models.InstallShieldCabinet
/// </summary>
public uint ExpandedSize { get; set; }
/// <summary>
/// Reserved
/// </summary>
public byte[]? Reserved0 { get; set; }
/// <summary>
/// Size of the compressed data
/// </summary>
public uint CompressedSize { get; set; }
/// <summary>
/// Reserved
/// Attributes (junk2)
/// </summary>
public byte[]? Reserved1 { get; set; }
/// <summary>
/// Reserved
/// </summary>
public byte[]? Reserved2 { get; set; }
/// <summary>
/// Attribute(?)
/// </summary>
public ushort Attribute1 { get; set; }
/// <summary>
/// Attribute(?)
/// </summary>
public ushort Attribute2 { get; set; }
public FileGroupAttributes Attributes { get; set; }
/// <summary>
/// Index of the first file
@@ -59,19 +40,19 @@ namespace SabreTools.Models.InstallShieldCabinet
public uint LastFile { get; set; }
/// <summary>
/// Unknown offset(?)
/// Unknown string offset
/// </summary>
public uint UnknownOffset { get; set; }
public uint UnknownStringOffset { get; set; }
/// <summary>
/// Var 4 offset(?)
/// Offset to the operating system (Var4)
/// </summary>
public uint Var4Offset { get; set; }
public uint OperatingSystemOffset { get; set; }
/// <summary>
/// Var 1 offset(?)
/// Offset to the language (Var1)
/// </summary>
public uint Var1Offset { get; set; }
public uint LanguageOffset { get; set; }
/// <summary>
/// Offset to the HTTP location
@@ -84,43 +65,23 @@ namespace SabreTools.Models.InstallShieldCabinet
public uint FTPLocationOffset { get; set; }
/// <summary>
/// Misc offset(?)
/// Misc offset
/// </summary>
public uint MiscOffset { get; set; }
/// <summary>
/// Var 2 offset(?)
/// </summary>
public uint Var2Offset { get; set; }
/// <summary>
/// Offset to the target directory
/// </summary>
public uint TargetDirectoryOffset { get; set; }
/// <summary>
/// Reserved
/// Overwrite setting flags
/// </summary>
public byte[]? Reserved3 { get; set; }
public FileGroupFlags OverwriteFlags { get; set; }
/// <summary>
/// Reserved
/// </summary>
public byte[]? Reserved4 { get; set; }
/// <summary>
/// Reserved
/// </summary>
public byte[]? Reserved5 { get; set; }
/// <summary>
/// Reserved
/// </summary>
public byte[]? Reserved6 { get; set; }
/// <summary>
/// Reserved
/// </summary>
public byte[]? Reserved7 { get; set; }
public uint[]? Reserved { get; set; } = new uint[4];
}
}