Skip to main content

How to See What's Inside a Power Platform Solution Zip File

· 7 min read
Jagdish Kumawat
Founder @ Dewiride

An exported solution is an ordinary zip file. Listing what's inside shows what you're about to share: its version, whether it's managed, and anything that shouldn't travel with it, such as your environment variables' values. This guide does it in a terminal on macOS, Linux and Windows.

What a Solution Zip Holds​

These are the files you'll meet in a solution that has a canvas app, environment variables or a cloud flow:

File or folderWhat it is
solution.xmlThe solution's description: its unique name, version, publisher, and Managed (1 for managed, 0 for unmanaged)
customizations.xmlThe components' settings, such as connection references and the app's data sources
CanvasApps/…msappThe canvas app itself
Workflows/…jsonOne JSON file per cloud flow (Export a solution)
environmentvariabledefinitions/<name>/environmentvariabledefinition.xmlAn environment variable: its name, description, type and, if it has one, its default value
environmentvariabledefinitions/<name>/environmentvariablevalues.jsonThat variable's current value in the environment you exported from, when it's included
[Content_Types].xmlThe zip format's list of file types

Microsoft's environment variables article confirms the last two: values are separated into separate JSON files within the exported solution.zip file (Environment variables overview).

Prerequisites​

  • An exported solution zip. How to Export a Solution in Power Apps makes one. The examples use the Career Development Plan series' exports, in a folder called exported.
  • A terminal. macOS and most Linux systems include unzip. On Windows, use PowerShell, which reads zips with .NET.

Step 1: List the Files​

Terminal
unzip -l exported/CareerDevelopmentPlan_1_0_0_0_managed.zip

unzip -l lists each file with its size; the PowerShell lines list the names. Add-Type loads the zip classes, which Windows PowerShell 5.1 needs and PowerShell 7 already has. Dispose() closes the file again.

Output
Archive: exported/CareerDevelopmentPlan_1_0_0_0_managed.zip
Length Date Time Name
--------- ---------- ----- ----
4891 10-29-2026 05:31 customizations.xml
4488 10-29-2026 05:31 solution.xml
14684 10-29-2026 05:31 CanvasApps/dewiride_careerdevelopmentplan_c64b8_BackgroundImageUri
131656 10-29-2026 05:31 CanvasApps/dewiride_careerdevelopmentplan_c64b8_DocumentUri.msapp
7288 10-29-2026 05:31 CanvasApps/dewiride_careerdevelopmentplan_c64b8_AdditionalUris0_identity.json
170 10-29-2026 05:31 environmentvariabledefinitions/dewiride_RoleCompetenciesList/environmentvariablevalues.json
870 10-29-2026 05:31 environmentvariabledefinitions/dewiride_RoleCompetenciesList/environmentvariabledefinition.xml
197 10-29-2026 05:31 environmentvariabledefinitions/dewiride_CareerDevelopmentPlanSite/environmentvariablevalues.json
785 10-29-2026 05:31 environmentvariabledefinitions/dewiride_CareerDevelopmentPlanSite/environmentvariabledefinition.xml
170 10-29-2026 05:31 environmentvariabledefinitions/dewiride_CompetencyResponsesList/environmentvariablevalues.json
891 10-29-2026 05:31 environmentvariabledefinitions/dewiride_CompetencyResponsesList/environmentvariabledefinition.xml
456 10-29-2026 05:31 [Content_Types].xml
--------- -------
166546 12 files

This solution has one canvas app and three environment variables, each with its value. A solution with a cloud flow looks like this instead (the GUID in the file name is masked):

Output
$ unzip -l exported/CareerDevelopmentPlanSetup_1_0_0_0_managed.zip
Archive: exported/CareerDevelopmentPlanSetup_1_0_0_0_managed.zip
Length Date Time Name
--------- ---------- ----- ----
2445 10-29-2026 05:35 customizations.xml
4463 10-29-2026 05:35 solution.xml
22976 10-29-2026 05:35 Workflows/CreateCareerDevelopmentPlanLists-00000000-0000-0000-0000-000000000000.json
258 10-29-2026 05:35 [Content_Types].xml
--------- -------
30142 4 files

Step 2: Read the Version and the Package Type​

solution.xml says which solution, which version, and managed or not:

Terminal
unzip -p exported/CareerDevelopmentPlan_1_0_0_0_managed.zip solution.xml | grep -E "<(UniqueName|Version|Managed)>"

unzip -p prints a file from the zip without extracting it, and grep keeps the three lines you want. In PowerShell, [xml] reads the file as XML, so you can ask for the three values by name.

Output (macOS)
<UniqueName>CareerDevelopmentPlan</UniqueName>
<Version>1.0.0.0</Version>
<Managed>1</Managed>
<UniqueName>Dewiride</UniqueName>
Output (PowerShell)
UniqueName Version Managed
---------- ------- -------
CareerDevelopmentPlan 1.0.0.0 1

Managed 1 is a managed solution. The second UniqueName in the macOS output is the publisher's.

Step 3: Check for Environment Variable Values​

If you're sharing a solution with another organization, it shouldn't carry your values (How to Keep Environment Variable Values Out of an Exported Solution). Look for value files:

Terminal
unzip -l exported/CareerDevelopmentPlan_1_0_0_0.zip | grep environmentvariablevalues
Output
170 10-29-2026 05:33 environmentvariabledefinitions/dewiride_RoleCompetenciesList/environmentvariablevalues.json
197 10-29-2026 05:33 environmentvariabledefinitions/dewiride_CareerDevelopmentPlanSite/environmentvariablevalues.json
170 10-29-2026 05:33 environmentvariabledefinitions/dewiride_CompetencyResponsesList/environmentvariablevalues.json

Three files: this export carries all three values. A zip without them prints nothing, or 0 if you count them instead, with grep -c or PowerShell's .Count:

Output
$ unzip -l release/CareerDevelopmentPlan_1_0_0_0.zip | grep -c environmentvariablevalues
0

Common Mistakes​

MistakeWhat happensDo this instead
Judging a zip by its file nameA renamed file can say _managed and not beRead Managed in solution.xml
Sharing a zip without looking insideYour environment's values go with itCheck for environmentvariablevalues.json first
Editing files inside the zip by handThe solution may not importChange the solution in Power Apps, or use the Solution Packager

Troubleshooting​

SymptomLikely causeFix
unzip: command not foundThe Linux system has no unzipInstall it with your package manager, or use PowerShell 7
PowerShell says it can't find type System.IO.Compression.ZipFileWindows PowerShell 5.1 without Add-TypeRun the Add-Type line first
grep prints nothingNothing matches, which is the answerFor value files, that means there are none

FAQ​

Can I just open the zip in Finder or File Explorer?​

Yes, to look. The terminal commands are quicker to repeat for every release and show the same files.

Is there anything private in the other files?​

customizations.xml describes the app's data sources, so it can contain the addresses the app was built with. Read it before you share a solution outside your organization.

Conclusion​

unzip -l or PowerShell's ZipFile lists a solution's files, solution.xml tells you its version and whether it's managed, and any environmentvariablevalues.json is an environment variable value travelling with it. Look before you share.

Additional Resources​

Stay Updated

Subscribe to our newsletter for the latest tutorials, tech insights, and developer news.

By subscribing, you agree to our privacy policy. Unsubscribe at any time.