D365 CRM Solutions Unpacking Agent
Version: 1.5.6 | Author: Jadhav Shubhamm | License: MIT
VS Code Compatibility: ^1.90.0 | Publisher: codefox
A VS Code extension whose entire UI lives in a sidebar. It unpacks a Dynamics 365
/ Dataverse solution into source files with a self-managed SolutionPackager.exe
— either offline from a .zip you already have on disk, or online by
authenticating, exporting (downloading) the solution through the Dataverse
Web API, and unpacking it — without ever deleting existing files.
Install
Install from the Visual Studio Marketplace:
Or from the command line:
code --install-extension codefox.d365-solutions-unpacking-agent-vscode
Features
- Sidebar-first experience — the entire workflow lives in a dedicated
Activity Bar view; no extra windows or panels to manage.
- Offline unpack (no sign-in) — unpack a solution
.zip you already have on
disk using only SolutionPackager; no environment or authentication required.
- Guided, dependency-ordered layout — SolutionPackager first (the shared
engine), then Offline unpack, then the Online unpack group with
Authentication (1) and Download & Unpack (2).
- Secure interactive sign-in — MSAL browser sign-in (authorization code +
PKCE over a loopback redirect) with a session cached for up to 24 hours and
reused across all API calls.
- One-click solution export — list your environment's solutions and export
any of them as Managed or Unmanaged via the Dataverse Web API.
- Choose your download location — the exported
.zip is written to the
folder you select.
- Download-only mode — save the exported
.zip without installing or
running SolutionPackager. The unpack folder is required only when
Download & Unpack is selected, and is cleared when hidden.
- Read-only, synced environment — the Download & Unpack URL mirrors the
environment you signed in to; switching environments resets that form.
- At-a-glance status — each card mirrors its state onto a green/red side
border, and starting a run collapses the setup cards to keep the Activity log
in focus.
- Determinate progress & quick access — a progress bar tracks each run and an
Open folder action reveals the result when it finishes.
- Non-destructive unpacking — extraction runs with
/allowDelete:No, so
existing files on disk that aren't in the zip are always preserved.
- Self-managed tooling — automatically downloads and caches
SolutionPackager.exe from the Microsoft.CrmSdk.CoreTools NuGet package,
with in-sidebar version display, update checks, and one-click updates.
- Bring your own packager — point the extension at an existing
SolutionPackager.exe with a single setting override.
- Native VS Code theming & security — the webview follows your VS Code
theme and is locked down with a strict CSP + nonce, with no direct network or
filesystem access of its own.
What it does & how
The sidebar is ordered by dependency: SolutionPackager first (the shared
engine), then Offline unpack, then the Online unpack group.
- Set up SolutionPackager — the agent downloads and caches it automatically,
or you can point it at your own
SolutionPackager.exe. Both unpack paths use it.
- Offline unpack — pick a solution
.zip already on disk, choose
Managed/Unmanaged, and unpack it into a folder. No sign-in or
environment is required.
- Online · Authenticate — interactive browser sign-in (MSAL, authorization
code + PKCE over a loopback redirect). The session is cached for up to 24
hours and reused for all API calls. It ends on manual sign-out, when the 24h
limit is reached, or when Azure AD expires the refresh token (environment timeout).
- Online · Export & Download — calls the Dataverse
ExportSolution action
for the selected solution as managed or unmanaged and writes the
returned .zip to the folder you choose. Choose Download only to stop here
(the unpack folder is then hidden and cleared).
- Online · Unpack (optional) — when Download & Unpack is selected, runs:
SolutionPackager.exe /action:Extract /zipfile:<downloaded.zip> /folder:"<extract folder>" \
/packagetype:<Managed|Unmanaged> /allowWrite:Yes /allowDelete:No /errorlevel:Info /nologo
/allowDelete:No guarantees that files already on disk but not present in the
zip are preserved. The same command powers Offline unpack.
How SolutionPackager is used
By default, the agent downloads Microsoft.CrmSdk.CoreTools from NuGet, extracts
SolutionPackager.exe and its dependencies, and runs it directly. On Windows,
the managed executable is stored under:
%APPDATA%\Code\User\globalStorage\codefox.d365-solutions-unpacking-agent-vscode\coretools\<version>\SolutionPackager.exe
This is VS Code user storage, not Program Files, so the normal managed setup
does not require an administrator installation.
If downloading or starting the managed copy is blocked by machine policy:
- Download
Microsoft.CrmSdk.CoreTools
from NuGet. The downloaded .nupkg may stay in your Downloads folder.
- Rename the downloaded
.nupkg to .zip, or open it with a ZIP tool.
- Extract the complete archive. Microsoft Learn documents the executable under
<extracted-folder>/contents/bin/coretools; some package versions expose the
folder as content/bin/coretools instead.
- Open the extension's SolutionPackager card, choose Select custom EXE,
and select the extracted
SolutionPackager.exe.
The extracted folder may also remain in Downloads, or it can be moved to any
readable location such as C:\Tools\D365\CoreTools, a user-profile folder, or a
network path accessible to VS Code. Select the actual EXE file, not the .nupkg
or containing folder. Keep the complete extracted coretools folder because
SolutionPackager.exe requires the adjacent SDK files. You may delete the
original .nupkg or .zip after the extracted folder is in its permanent location.
When a custom EXE is selected, the agent validates:
- the file is named
SolutionPackager.exe and is readable;
- it has a Windows executable signature and identifies itself as SolutionPackager;
Microsoft.Crm.Sdk.Proxy.dll and Microsoft.Xrm.Sdk.dll are beside the EXE.
If Windows blocks files downloaded from the internet, open Properties for the
downloaded archive, select Unblock, and extract it again. See the official
Microsoft SolutionPackager instructions.
Use Use managed copy in the same card to remove the override and return to
the agent-managed version.
Self-managed SolutionPackager
The agent downloads the latest Microsoft.CrmSdk.CoreTools NuGet package
from nuget.org and caches SolutionPackager.exe (plus its dependencies) in the
extension's global storage. The sidebar shows the active version and lets you
Check for updates and Download / Update at any time.
To use your own copy instead, choose Select custom EXE in the sidebar or set
d365UnpackingAgent.solutionPackager.pathOverride to an absolute EXE path.
Updates
1.5.x
- Offline unpack — unpack a local solution
.zip with only SolutionPackager;
no sign-in, environment, or solution needed.
- Reorganized, dependency-ordered sidebar — SolutionPackager and Offline
unpack first, then an Online unpack group with Authentication (1) and
Download & Unpack (2).
- Read-only environment URL in Download & Unpack, mirroring the signed-in
environment; switching environments resets that form.
- Green/red status borders per card, and the setup cards collapse when a run
starts so the Activity log stays in focus.
- Determinate progress bar during runs and an Open folder action on
completion.
- Download only now clears the unpack folder field while it is hidden.
Support
🦊 CodeFox — Driving AI-Powered Delivery Excellence
© 2026 All rights reserved. MIT License.