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.
§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 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.