installer-intel 🧠⚙️
installer-intel is a Windows-first CLI tool that statically analyzes EXE and MSI installers and produces a machine-readable install plan for endpoint management and packaging workflows.
Think: package intelligence for Intune, SCCM, Jamf, RMM, and Client Platform Engineering teams.
✨ Why installer-intel exists
Packaging software on Windows is still more art than science:
- Silent install flags are undocumented or inconsistent\
- Installer technologies vary wildly (Inno, NSIS, InstallShield, Burn, etc.)
- Detection rules are often copied, guessed, or discovered via trial-and-error
- Testing installers directly is slow and risky on production machines
installer-intel focuses on the analysis phase first:
Understand what an installer is likely to do --- before you ever run it.
🧩 What it does (v0.1)
Given an .msi or .exe, installer-intel outputs a structured
install plan containing:
Installer Intelligence
- Installer type detection (MSI, Inno Setup, NSIS, InstallShield, Burn, Squirrel, etc.)
- Confidence-scored classification with supporting evidence
Command Inference
- Probable silent install command(s), ranked by confidence
- Probable uninstall command(s)
- Evidence explaining why each command was suggested
Detection Guidance
- MSI product code--based detection (when available)
- Follow-up guidance for improving detection accuracy
- Designed to integrate cleanly into Intune / SCCM detection logic
Automation-Friendly Output
- JSON output suitable for pipelines and tooling
- Human-readable CLI summary for engineers
⚠️ Safety-first by design
This version performs static analysis only.
No installers are executed.
📦 Example
installer-intel analyze .\setup.exe --out installplan.json
CLI summary:
Type: Inno Setup (confidence 0.92)
Install candidates:
setup.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP- (0.88)
setup.exe /SILENT /SUPPRESSMSGBOXES /NORESTART /SP- (0.62)
Uninstall candidates:
unins000.exe /VERYSILENT (0.55)
Generated installplan.json (excerpt):
{
"installer_type": "Inno Setup",
"confidence": 0.92,
"install_candidates": [
{
"command": "setup.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-",
"confidence": 0.88
}
]
}
🚀 Installation (development)
This project uses uv for fast, reproducible Python environments.
pip install uv
uv venv
uv sync
uv run installer-intel --help
🖥️ Supported Inputs
File Type Status Notes
MSI ✅ Metadata parsed via Windows Installer APIs EXE ✅ Heuristic detection via string & signature analysis MSIX/AppX 🔍 Detection hints only (wrapper detection)
🧠 How detection works
installer-intel combines:
- Static string extraction (ASCII + UTF-16LE)
- Known installer signature patterns
- Heuristic confidence scoring
- Evidence tracking (matched strings, metadata clues)
This keeps analysis fast, safe, and explainable.
⚠️ Current limitations
- Windows-first (intentional --- this targets Windows endpoints)
- EXE analysis is heuristic-based (not guaranteed)
- No execution or sandbox tracing in v0.1
- Detection rules improve significantly with runtime tracing (planned)
🛣️ Roadmap
Planned enhancements:
- MSI parsing via Windows Installer COM (ProductCode, UpgradeCode, Version) ✅
- install4j / Java-based installer detection
- Partial-read scanning for very large EXEs
- ProcMon-backed trace mode (
installer-intel analyze setup.exe --trace procmon) to capture & summarize filesystem, registry, service, and persistence changes into an auditable report -
--format yaml -
--summary-only - Optional
trace-installmode (opt-in, sandboxed)
👤 Who this is for
- Client Platform Engineers
- Endpoint / EUC Engineers
- Intune / SCCM / Jamf admins
- Security teams validating installer behavior
- Anyone tired of guessing silent install flags
📄 License
MIT License
🔍 Philosophy
installer-intel is intentionally conservative.
It prefers: - explainability over magic - confidence scoring over certainty - safety over speed
If it can't be confident, it tells you why.
That's how real platform tooling should behave.
Metadata
Release files for installer-intel 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| installer_intel-0.1.0.tar.gz | 24.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| installer_intel-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 35.6 kB
Release files / installer_intel-0.1.0.tar.gz
| Download URL | installer_intel-0.1.0.tar.gz |
|---|---|
| Size | 24.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
644437eef10e24a17014b93d762b8df1ec1d00cf65388ea20d65604c3afae684
|
|
BLAKE2b-256 checksum How to use checksums |
09ad7cd94dc3d1796e4fae00d6d25cc01ce825bfac8651465ebb837fd41b3765
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / installer_intel-0.1.0-py3-none-any.whl
| Download URL | installer_intel-0.1.0-py3-none-any.whl |
|---|---|
| Size | 11.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
74ec25c0c90029647f71a43bf2ac1a15108416344e06119b3b3135490fccda94
|
|
BLAKE2b-256 checksum How to use checksums |
9c733c6fca58659057d65807f9eee7866ff3e42b3164836630f82bba9045e5ad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for installer-intel 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.