BC NuGet Installer Part 2: NAVX Format and Version Selection

Опубликовано: 02 Август 2026
на канале: Stefan Maron
109
4

This is part 2 of building a NuGet installer extension for Microsoft Dynamics 365 Business Central. The stream continues from a working proof-of-concept — browsing NuGet feeds, pulling down .app packages, and installing them from within BC — and focuses on refactoring the download/install code, adding version selection, and parsing the NavxManifest.xml inside .app packages.

Key topics include: AL permission sets for Extension Management, extracting .app files from NuGet zip packages using DataCompression, building an AppDetail table with version and dependency data from the NuGet v3 registration API, reading NavxManifest.xml with XmlBuffer and XPath, and hitting the NAVX proprietary binary format that prevents treating .app files as plain zip archives. My brother Christian joins as a pair-programming partner for live code review throughout.

The session ends with a mystery: .app files start with the magic bytes NAVX, making them a Microsoft proprietary container rather than a standard zip. Stripping the header or using the AL compiler toolchain appears to be the path forward for reading package details before installation.

Streaming all kinds of coding for Microsoft Dynamics 365 Business Central.
Join me to just hang out or tell me what I am doing wrong ;)

Join me live and let's build this together.

📝 Blog post: https://stefanmaron.com/posts/nuget-i...

====== Content of this Video ======
0:00 - Introduction and setup
1:08 - Recap of previous stream
2:16 - Overview of current extension
3:59 - Demonstrating new get feed functionality
6:31 - Discussion on API versioning
8:00 - Planning next steps
10:29 - Examining permission sets
13:44 - Exploring app package contents
18:41 - Refactoring code for downloading apps
25:42 - Adding version selection feature
31:34 - Implementing app details and dependencies
41:26 - Debugging download and installation process
52:22 - Extracting app manifest information
1:04:05 - Handling XML parsing
1:17:52 - Troubleshooting package extraction issues
1:52:24 - Discussing ID ranges and conflicts
2:04:00 - Investigating file format issues
2:15:27 - Conclusion and next steps

About Me:
https://stefanmaron.com/

Music by:
   / @streambeatsbyharrisheller  
https://open.spotify.com/artist/6GTRL...