Automates the entire workflow for packaging Windows applications and deploying them to Microsoft Intune
Project description
NAPT - Not a Pkg Tool
Automated Windows application packaging and deployment to Microsoft Intune using PSAppDeployToolkit
Overview
NAPT is a Python-based CLI tool that automates the entire workflow for packaging Windows applications and deploying them to Microsoft Intune. It runs on Windows, Linux, and macOS, though packaging (.intunewin creation) requires Windows.
📚 Full Documentation | Quick Start | User Guide | Developer Reference
Why NAPT?
Packaging applications for Microsoft Intune with PSAppDeployToolkit (PSADT) typically involves a manual, time-consuming process:
-
Manually check for new versions - Check vendor sites/APIs for updates. Easy to miss versions or waste time when nothing changed.
-
Create PSADT deployment - Copy template, manually edit
Invoke-AppDeployToolkit.ps1with variables, configure install/uninstall logic. Error-prone and repetitive. -
Create detection and requirements scripts - Write PowerShell detection and requirements logic, test thoroughly, maintain version checks. Must update for each new version.
-
Package as .intunewin - Run IntuneWinAppUtil.exe manually, manage paths, handle errors. Tedious and error-prone.
-
Upload to Intune - Upload package via portal, fill metadata, configure app info and requirements manually.
-
Configure deployment - Set up rollout assignments manually for each version.
This manual workflow is repetitive, difficult to automate in CI/CD pipelines, lacks version tracking, and requires re-doing most of the work for every update. NAPT automates this entire workflow with YAML-based recipes and automatic version tracking.
Key Features
- ✅ Automatic version tracking - Automatic discovery from MSI, EXE, URLs, or APIs with caching to skip unnecessary downloads
- ✅ YAML-based recipes - Define app packaging once with layered configuration (Organization → Vendor → Recipe)
- ✅ Automated PSADT packaging - Generate Intune-ready packages with detection and requirements scripts, no manual template editing
- ✅ Cross-platform workflow - Run on Windows, Linux, and macOS (packaging requires Windows)
- ✅ Direct Intune upload - Upload to Microsoft Intune via the Graph API, no portal required
Cross-Platform Support
| Feature | Windows | Linux/macOS |
|---|---|---|
| Discovery & Download | ✅ | ✅ |
| PSADT Package Building | ✅ | ✅ |
| Intune Packaging | ✅ | ⚫ Windows Only |
| Intune Upload | ✅ | ✅ |
See the Cross-Platform Support section for platform-specific workflows.
Getting Started
See the Quick Start Guide for installation and setup.
Creating Recipes
Recipes are YAML configuration files that define how to discover, download, and package applications.
Example recipes:
- chrome.yaml - url_download strategy with MSI version extraction
- git.yaml - api_github strategy for GitHub Releases
- 7zip-x64-msi.yaml - web_scrape strategy for vendor download pages
Note: The recipes/ and defaults/ directories in this repository are
working examples used for development and testing.
They are not included in the pip package.
Run napt init to create your own workspace with a starter org.yaml.
NAPT supports multiple discovery strategies (url_download, web_scrape, api_github, api_json) - see the Discovery Strategies guide for detailed configuration and more examples.
Contributing
Ideas and feedback are welcome! See Contributing for guidelines.
License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Author
Roger Cibrian
Acknowledgments
- Draws inspiration from AutoPkg for macOS application packaging automation
- Uses PSAppDeployToolkit (PSADT) for Windows application packaging
- Uses IntuneWinAppUtil for creating .intunewin packages
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file napt-0.5.0.tar.gz.
File metadata
- Download URL: napt-0.5.0.tar.gz
- Upload date:
- Size: 106.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
327e0d65b70b4d63e914c49d2cff3dfac949e4ebd7e6094cc6450c33aef9aedc
|
|
| MD5 |
3d545b95084484b5ebe097c6467dc9fa
|
|
| BLAKE2b-256 |
2ec5f799fb97a1b3c3c6da06ec7fd0ea91a309649675a2a2ba7023fd25f6b345
|
Provenance
The following attestation bundles were made for napt-0.5.0.tar.gz:
Publisher:
publish.yml on RogerCibrian/notapkgtool
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
napt-0.5.0.tar.gz -
Subject digest:
327e0d65b70b4d63e914c49d2cff3dfac949e4ebd7e6094cc6450c33aef9aedc - Sigstore transparency entry: 1241087767
- Sigstore integration time:
-
Permalink:
RogerCibrian/notapkgtool@018ed4ed04f39dfc3d3a169ace149f1a91aaff05 -
Branch / Tag:
refs/tags/0.5.0 - Owner: https://github.com/RogerCibrian
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@018ed4ed04f39dfc3d3a169ace149f1a91aaff05 -
Trigger Event:
release
-
Statement type:
File details
Details for the file napt-0.5.0-py3-none-any.whl.
File metadata
- Download URL: napt-0.5.0-py3-none-any.whl
- Upload date:
- Size: 147.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a6e42c9c8ad0bab26ad5649b21896f843ae326a4031cec35393ad0dcf4828dcd
|
|
| MD5 |
73672153af3f15d3465f6ac1b1bfa55d
|
|
| BLAKE2b-256 |
f16338fdd29fd9f2bd3577c643963ee236cb769c10cbb701bf5d42267d17def7
|
Provenance
The following attestation bundles were made for napt-0.5.0-py3-none-any.whl:
Publisher:
publish.yml on RogerCibrian/notapkgtool
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
napt-0.5.0-py3-none-any.whl -
Subject digest:
a6e42c9c8ad0bab26ad5649b21896f843ae326a4031cec35393ad0dcf4828dcd - Sigstore transparency entry: 1241087806
- Sigstore integration time:
-
Permalink:
RogerCibrian/notapkgtool@018ed4ed04f39dfc3d3a169ace149f1a91aaff05 -
Branch / Tag:
refs/tags/0.5.0 - Owner: https://github.com/RogerCibrian
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@018ed4ed04f39dfc3d3a169ace149f1a91aaff05 -
Trigger Event:
release
-
Statement type: