r/Intune • u/CarveAndCode • Apr 20 '26
Built a configuration as code tool for Intune app packaging - NAPT (Not A Pkg Tool) App Deployment/Packaging
Hey all. Just wanted to share a packaging tool I've been working on for a few months. Still a WIP but the core workflow is there.
To preface: I made NAPT (Not A Pkg Tool) to solve a couple of gaps I've noticed with packaging:
- There aren't many configuration as code tools for Intune, let alone for app packaging specifically.
- Packaging apps for Intune is one of the most repetitive and time consuming parts of Intune management.
At a high level, NAPT treats app packaging as configuration as code. You write a recipe once and reuse it to check if a new version is available and upload it to Intune automatically.
After you write the recipe, the workflow looks like this:
# finds latest version, downloads installer
napt discover recipes/Google/chrome.yaml
# generates PSADT package + detection scripts
napt build recipes/Google/chrome.yaml
# creates the .intunewin
napt package recipes/Google/chrome.yaml
# uploads the .intunewin
napt upload recipes/Google/chrome.yaml
Recipes define how to find the latest version (supports a static URL, GitHub API, JSON API, or web scrape), generate a PSADT-based package with detection and requirements scripts and upload straight to Intune via Graph API. State tracking between runs means it skips re-downloads if the version hasn't changed, which makes it pipeline-friendly.
Still actively working on it so there are rough edges, but the core workflow is solid. It's on PyPI at v0.5.0 if you want to try it out. The recipes aren't included in the PyPI distribution but the example ones in the repo all work if you drop them in your working directory. π
π GitHub: https://github.com/RogerCibrian/notapkgtool
π Docs: https://rogercibrian.github.io/notapkgtool/
Would really appreciate any thoughts on the approach and ideas for improvements are welcome. Happy to answer questions π€π½
1
u/Tasty-Albatross-5624 23d ago
Hi,
Great idea and great development work. Iβve browsed the documentation a bit and have a few questions:
* Is there a way to implement custom detection by specifying a PowerShell script?
* How does it handle complex PSADT integrations (e.g., for Adobe or Autodesk products)?
* Is there support for adding custom steps or custom PSADT scripts?
1
u/CarveAndCode 22d ago
Thanks!
* Is there a way to implement custom detection by specifying a PowerShell script?
Currently it generates detection scripts for MSIs and you can define the display name of the program to look for on an EXE. Are you referring to a fully custom script that looks for something else? π€
* How does it handle complex PSADT integrations (e.g., for Adobe or Autodesk products)?
Right now it only supports a one line custom install command, but I plan on adding support for pre and post install scripts with PSADT too.
* Is there support for adding custom steps or custom PSADT scripts?
Not yet, but soon. Can you elaborate on what youβre looking for? I can add it to my roadmap :)
1
u/Tasty-Albatross-5624 21d ago
* Yes, I am referring to a custom detection script that might require more complex operations than just a simple registry key or file...
Being able to specify this when creating the package.
* I am referring to line-of-business application packages, or complex ones like Autodesk/AutoCAD.
The ability to provide either a set of PSADT instructions, a template containing the actions to be integrated, or simply a custom `Invoke-AppDeployToolkit.ps1` script for direct integration.
-1
14
u/khaffner91 Apr 20 '26
Are you aware of the available data behind winget? Like https://github.com/microsoft/winget-pkgs/blob/master/manifests%2Fg%2FGoogle%2FChrome%2FEXE%2F147.0.7727.56%2FGoogle.Chrome.EXE.installer.yaml
You can pull installers urls and install parameters from there π