How to See What's Inside a Power Platform Solution Zip File
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 folder | What it is |
|---|---|
solution.xml | The solution's description: its unique name, version, publisher, and Managed (1 for managed, 0 for unmanaged) |
customizations.xml | The components' settings, such as connection references and the app's data sources |
CanvasApps/…msapp | The canvas app itself |
Workflows/…json | One JSON file per cloud flow (Export a solution) |
environmentvariabledefinitions/<name>/environmentvariabledefinition.xml | An environment variable: its name, description, type and, if it has one, its default value |
environmentvariabledefinitions/<name>/environmentvariablevalues.json | That variable's current value in the environment you exported from, when it's included |
[Content_Types].xml | The 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
- macOS / Linux
- Windows (PowerShell)
unzip -l exported/CareerDevelopmentPlan_1_0_0_0_managed.zip
Add-Type -AssemblyName System.IO.Compression.FileSystem
$zip = [System.IO.Compression.ZipFile]::OpenRead((Resolve-Path exported/CareerDevelopmentPlan_1_0_0_0_managed.zip))
$zip.Entries.FullName
$zip.Dispose()
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.
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):
$ 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:
- macOS / Linux
- Windows (PowerShell)
unzip -p exported/CareerDevelopmentPlan_1_0_0_0_managed.zip solution.xml | grep -E "<(UniqueName|Version|Managed)>"
Add-Type -AssemblyName System.IO.Compression.FileSystem
$zip = [System.IO.Compression.ZipFile]::OpenRead((Resolve-Path exported/CareerDevelopmentPlan_1_0_0_0_managed.zip))
$reader = [System.IO.StreamReader]::new($zip.GetEntry('solution.xml').Open())
[xml]$solution = $reader.ReadToEnd()
$reader.Dispose()
$zip.Dispose()
$solution.ImportExportXml.SolutionManifest | Select-Object 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.
<UniqueName>CareerDevelopmentPlan</UniqueName>
<Version>1.0.0.0</Version>
<Managed>1</Managed>
<UniqueName>Dewiride</UniqueName>
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:
- macOS / Linux
- Windows (PowerShell)
unzip -l exported/CareerDevelopmentPlan_1_0_0_0.zip | grep environmentvariablevalues
Add-Type -AssemblyName System.IO.Compression.FileSystem
$zip = [System.IO.Compression.ZipFile]::OpenRead((Resolve-Path exported/CareerDevelopmentPlan_1_0_0_0.zip))
($zip.Entries | Where-Object FullName -like '*environmentvariablevalues.json').FullName
$zip.Dispose()
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:
$ unzip -l release/CareerDevelopmentPlan_1_0_0_0.zip | grep -c environmentvariablevalues
0
Common Mistakes
| Mistake | What happens | Do this instead |
|---|---|---|
| Judging a zip by its file name | A renamed file can say _managed and not be | Read Managed in solution.xml |
| Sharing a zip without looking inside | Your environment's values go with it | Check for environmentvariablevalues.json first |
| Editing files inside the zip by hand | The solution may not import | Change the solution in Power Apps, or use the Solution Packager |
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
unzip: command not found | The Linux system has no unzip | Install it with your package manager, or use PowerShell 7 |
PowerShell says it can't find type System.IO.Compression.ZipFile | Windows PowerShell 5.1 without Add-Type | Run the Add-Type line first |
grep prints nothing | Nothing matches, which is the answer | For 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
- Environment variables for Power Platform overview: where values are stored in the zip.
- SolutionPackager tool: unpacking a solution into its files.
- Export a solution (Power Automate): flows in the
Workflowsfolder.
