Expand description
Parse and inspect Inno Setup installer binaries.
This crate provides typed access to the internal structures of an Inno Setup installer executable, from the PE loader stub through the compressed setup header down to individual records and embedded files.
Format research is tracked in RESEARCH.md at the crate root and is
the source of truth for what each layer of the parser implements.
§Stable Identifiers
Public discriminator enums expose stable core::fmt::Display
strings, and most also expose as_str(). Consumers may persist
those strings in databases and compare them across crate releases.
New variants on #[non_exhaustive] enums are added in minor-version
releases; once a variant’s display string is published, that string
is a compatibility surface and will not be renamed.
§Architecture
The crate is organized in layers that mirror the on-disk format:
- PE overlay detection (
overlay): Locates the Inno Setup loader table (SetupLdr) and the setup payload appended after the PE sections. - Decompression (
decompress): Handleszlib, LZMA, and LZMA2 decompression of the setup header and data streams. - Low-level structures (
header,records): View types for each structure in the setup header (TSetupHeader, file/registry/ ini/run records, language tables, Pascal script, and the file location table). - High-level API (
InnoInstaller): Ties everything together into a convenient exploration interface for analysis use cases.
Re-exports§
pub use error::Error;pub use extract::FileReader;pub use header::Architecture;pub use header::AutoNoYes;pub use header::CompressMethod;pub use header::EntryCounts;pub use header::HeaderAnsi;pub use header::HeaderOption;pub use header::HeaderString;pub use header::HeaderTail;pub use header::ImageAlphaFormat;pub use header::LanguageDetectionMethod;pub use header::PrivilegesRequired;pub use header::PrivilegesRequiredOverride;pub use header::SetupHeader;pub use header::UninstallLogMode;pub use header::WizardStyle;pub use header::YesNoAuto;pub use installer::Compression;pub use installer::EncryptionInfo;pub use installer::EncryptionMode;pub use installer::InnoInstaller;pub use overlay::OffsetTable;pub use overlay::OffsetTableSource;pub use overlay::SetupLdrFamily;pub use overlay::pe::LocatorMode as PeLocatorMode;pub use records::component::ComponentEntry;pub use records::component::ComponentFlag;pub use records::dataentry::DataChecksum;pub use records::dataentry::DataEntry;pub use records::dataentry::DataFlag;pub use records::dataentry::SignMode;pub use records::delete::DeleteEntry;pub use records::delete::DeleteTargetType;pub use records::directory::DirectoryEntry;pub use records::directory::DirectoryFlag;pub use records::file::FileEntry;pub use records::file::FileEntryType;pub use records::file::FileFlag;pub use records::file::FileVerification;pub use records::file::FileVerificationKind;pub use records::icon::CloseOnExit;pub use records::icon::IconEntry;pub use records::icon::IconFlag;pub use records::ini::IniEntry;pub use records::ini::IniFlag;pub use records::isssigkey::ISSigKeyEntry;pub use records::language::LanguageCodepage;pub use records::language::LanguageEntry;pub use records::message::MessageEntry;pub use records::permission::PermissionEntry;pub use records::registry::RegistryEntry;pub use records::registry::RegistryFlag;pub use records::registry::RegistryHive;pub use records::registry::RegistryValueType;pub use records::run::RunEntry;pub use records::run::RunFlag;pub use records::run::RunWait;pub use records::task::TaskEntry;pub use records::task::TaskFlag;pub use records::type_::SetupTypeKind;pub use records::type_::TypeEntry;pub use records::windows::Bitness;pub use version::Variant;pub use version::Version;pub use version::VersionFlags;pub use ::pascalscript;
Modules§
- analysis
- Higher-level views over the typed-record streams.
- decompress
- Decompression layer.
- error
- Error type for the
innospectcrate. - extract
- File-content extraction.
- header
- Parsed view of the
TSetupHeaderrecord. - installer
- High-level
InnoInstallerentry point. - overlay
- PE-overlay-locator pipeline.
- records
- Setup record parsing and iteration.
- version
- Inno Setup version marker parsing and the
Version/Variant/VersionFlagstypes.