using System;
namespace SabreTools.Data.Models.InstallShieldCabinet
{
///
public sealed class Component
{
///
/// Offset to the component identifier
///
public uint IdentifierOffset { get; set; }
///
/// Component identifier
///
public string Identifier { get; set; } = string.Empty;
///
/// Offset to the component descriptor
///
public uint DescriptorOffset { get; set; }
///
/// Offset to the display name
///
public uint DisplayNameOffset { get; set; }
///
/// Display name
///
public string DisplayName { get; set; } = string.Empty;
///
/// Component status
///
public ComponentStatus Status { get; set; }
///
/// Offset to the password
///
public uint PasswordOffset { get; set; }
///
/// Misc offset
///
public uint MiscOffset { get; set; }
///
/// Component index
///
public ushort ComponentIndex { get; set; }
///
/// Offset to the component name
///
public uint NameOffset { get; set; }
///
/// Component name
///
public string Name { get; set; } = string.Empty;
///
/// Offset to the CD-ROM folder
///
public uint CDRomFolderOffset { get; set; }
///
/// Offset to the HTTP location
///
public uint HTTPLocationOffset { get; set; }
///
/// Offset to the FTP location
///
public uint FTPLocationOffset { get; set; }
///
/// Unknown GUIDs
///
public Guid[] Guid { get; set; } = new Guid[2];
///
/// Offset to the component CLSID
///
public uint CLSIDOffset { get; set; }
///
/// Component CLSID
///
public Guid CLSID { get; set; }
///
/// Reserved
///
/// 28 bytes, see CompAttrs
public byte[] Reserved2 { get; set; } = new byte[28];
///
/// Reserved
///
/// 2 bytes (<= v5), 1 byte (> v5)
public byte[] Reserved3 { get; set; } = [];
///
/// Number of depends(?)
///
public ushort DependsCount { get; set; }
///
/// Offset to depends(?)
///
public uint DependsOffset { get; set; }
///
/// Number of file groups
///
public uint FileGroupCount { get; set; }
///
/// Offset to the file group names
///
public uint FileGroupNamesOffset { get; set; }
///
/// File group names
///
public string[] FileGroupNames { get; set; } = [];
///
/// Number of X3(?)
///
public ushort X3Count { get; set; }
///
/// Offset to X3(?)
///
public uint X3Offset { get; set; }
///
/// Number of sub-components
///
public ushort SubComponentsCount { get; set; }
///
/// Offset to the sub-components
///
public uint SubComponentsOffset { get; set; }
///
/// Offset to the next component
///
public uint NextComponentOffset { get; set; }
///
/// Offset to on installing text
///
public uint OnInstallingOffset { get; set; }
///
/// Offset to on installed text
///
public uint OnInstalledOffset { get; set; }
///
/// Offset to on uninstalling text
///
public uint OnUninstallingOffset { get; set; }
///
/// Offset to on uninstalled text
///
public uint OnUninstalledOffset { get; set; }
}
}