https://github.com/deltaga/appxbackup.module
Windows Application Package Backup & Restoration Toolkit
https://github.com/deltaga/appxbackup.module
application application-backup appx backup microsoft-store microsoft-store-app msix windows windows-10 windows-11 windows-server-2019 windows-store windows-store-app
Last synced: 4 months ago
JSON representation
Windows Application Package Backup & Restoration Toolkit
- Host: GitHub
- URL: https://github.com/deltaga/appxbackup.module
- Owner: DeltaGa
- License: mit
- Created: 2026-01-15T22:39:01.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-01-18T01:50:25.000Z (4 months ago)
- Last Synced: 2026-01-18T13:51:35.647Z (4 months ago)
- Topics: application, application-backup, appx, backup, microsoft-store, microsoft-store-app, msix, windows, windows-10, windows-11, windows-server-2019, windows-store, windows-store-app
- Language: PowerShell
- Homepage:
- Size: 128 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# AppxBackup PowerShell Module v2.0.1
## Windows Application Package Backup & Restoration Toolkit
**Version:** 2.0.1
**Release Date:** January 15, 2026
**PowerShell:** 5.1+ (7.5+ Recommended)
---
## Table of Contents
- [Overview](#overview)
- [System Requirements](#system-requirements)
- [Installation](#installation)
- [Workflow Example](#workflow-example)
- [Available Commands](#available-commands)
- [Usage Examples](#usage-examples)
- [Troubleshooting](#troubleshooting)
- [Limitations](#limitations)
- [Module Architecture](#module-architecture)
- [Support](#support)
- [Changelog](#changelog)
- [Citations](#citations)
---
## Overview
AppxBackup is a **complete 2026 rewrite** of the 2016 original APPX backup script, transformed into a production-grade PowerShell module. This toolkit provides **end-to-end** Windows Store/MSIX application backup and restoration.
### Key Capabilities
**Complete Backup-to-Installation Pipeline** - One-command backup, one-command restore
**Automatic Certificate Management** - Self-signed cert creation and system trust
**Native Windows SDK Integration** - MakeAppx and SignTool automation with tool-specific optimization
**Modern MSIX Support** - Full support for MSIX + legacy APPX formats
**Externalized Configuration** - Configuration values in JSON for easy customization
---
## System Requirements
### Minimum Requirements
- **PowerShell:** 5.1+
- **OS:** Windows 10 1809 / Windows Server 2019
- **Windows SDK:** 10.0.26100.0+ (includes MakeAppx, SignTool)
- **Disk Space:** 100 MB temporary storage
- **Memory:** 512 MB available RAM
### Recommended Configuration
- **PowerShell:** 7.5+
- **OS:** Windows 11 24H2 / Windows Server 2022
- **Windows SDK:** 10.0.26100.0+ (includes MakeAppx, SignTool)
- **Disk Space:** 1 GB+ for large packages
- **Memory:** 2 GB+ available RAM
### Administrator Privileges
Required for:
- Installing certificates to LocalMachine store
- Accessing WindowsApps folder on some systems
Not required for:
- Basic backup operations (CurrentUser cert store)
- Package creation
- Most module functions
---
## Installation
### Quick Start (Developer Mode)
```powershell
# 1. Clone or extract the module
cd "C:\Path\To\AppxBackup.Module"
# 2. Import the module
.\Import-AppxBackup.ps1
# 3. Verify installation
Get-Command -Module AppxBackup
```
### Production Installation
```powershell
# Install to PowerShell Modules directory
$modulePath = "$env:USERPROFILE\Documents\PowerShell\Modules\AppxBackup"
Copy-Item -Path ".\AppxBackup.Module" -Destination $modulePath -Recurse -Force
# Import globally
Import-Module AppxBackup -Force
# Verify
Get-Module AppxBackup
```
---
## Workflow Example
### Scenario: Backup and Restore WorkMate App
#### Step 1: Backup the Application
```powershell
# Find the installed app
$app = Get-AppxPackage -Name "*WorkMate*"
# Create complete backup (package + certificate)
Backup-AppxPackage -PackagePath $app.InstallLocation -OutputPath "D:\Backups"
```
**Output:**
```
=== Backup-AppxPackage v2.0 ===
Package: 2242AppsTeam.WorkMate v7.5.4.0
[Stage 1/6] Validating inputs... ✓
[Stage 2/6] Creating package... ✓ (6.4s, 47.95 MB)
[Stage 3/6] Creating certificate... ✓
[Stage 4/6] Installing certificate to Trusted Root... ✓
[Stage 5/6] Signing package... ✓
✓ Certificate installed successfully - package is ready to install
To install the package, run:
Install-AppxBackup -PackagePath 'D:\Backups\WorkMate_7.5.4.0_x64.appx'
```
**Files Created:**
```
D:\Backups\
├── 2242AppsTeam.WorkMate_7.5.4.0_x64__v313ts49xh8we.appx (47.95 MB, signed)
└── 2242AppsTeam.WorkMate_7.5.4.0_x64__v313ts49xh8we.cer (certificate)
```
#### Step 2: Install on Another Machine
```powershell
# Single command - auto-detects certificate
Install-AppxBackup -PackagePath "D:\Backups\WorkMate_7.5.4.0_x64.appx"
```
**Output:**
```
=== APPX Package Installation Script ===
[1/3] Package Analysis
Package: WorkMate_7.5.4.0_x64.appx
Certificate: Auto-detected (WorkMate_7.5.4.0_x64.cer)
[2/3] Certificate Installation
Target Store: Cert:\LocalMachine\Root
Status: Installed successfully
Thumbprint: 439F89C615A7468BF196D8951BBA4640C10D7D3F
[3/3] Package Installation
Installing package...
Status: Installed successfully
Name: 2242AppsTeam.WorkMate
Version: 7.5.4.0
=== Installation Complete ===
```
---
## Available Commands
### Public Functions
| Function | Description |
|----------|-------------|
| **`Backup-AppxPackage`** | Complete backup with cert creation and signing |
| **`Install-AppxBackup`** | Installation with auto-cert handling and dependency orchestration |
| **`New-AppxBackupCertificate`** | Create self-signed certificates (4096-bit RSA) |
| **`Get-AppxBackupInfo`** | Analyze backup packages without installing |
| **`Export-AppxDependencies`** | Extract and document package dependencies |
| **`Test-AppxPackageIntegrity`** | Validate package structure and signatures |
| **`Test-AppxBackupCompatibility`** | Check system compatibility before restore |
| **`Get-AppxToolPath`** | Locate Windows SDK tools (MakeAppx, SignTool) |
### Private Functions (Internal)
- `Get-AppxConfiguration` - Configuration loader from JSON files
- `Get-AppxDefault` - Configuration value accessor with hierarchical fallback
- `Invoke-ProcessSafely` - Robust external process execution with timeout
- `Get-AppxManifestData` - XML manifest parsing with namespace handling
- `New-AppxPackageInternal` - Core packaging logic with multi-tier fallback
- `Test-AppxToolAvailability` - SDK tool validation and caching
- `Resolve-AppxDependencies` - Recursive dependency graph analysis
- `ConvertTo-SecureFilePath` - Path validation and sanitization
- `Write-AppxLog` - Structured logging with level filtering
- `New-AppxBackupZipArchive` - ZIP archive creation for dependency packages
- `New-AppxBackupManifest` - Installation manifest generation
- `New-AppxDependencyCertificate` - Dependency-specific certificate creation
---
## Usage Examples
### Basic Operations
#### 1. Simple Backup
```powershell
$app = Get-AppxPackage -Name "Microsoft.WindowsCalculator"
Backup-AppxPackage -PackagePath $app.InstallLocation -OutputPath "C:\Backups"
```
#### 2. Backup with Custom Certificate
```powershell
Backup-AppxPackage -PackagePath $app.InstallLocation `
-OutputPath "C:\Backups" `
-CertificateSubject "CN=MyCompany Code Signing" `
-CertificatePassword (ConvertTo-SecureString "MyPassword" -AsPlainText -Force)
```
#### 3. Skip Certificate (Use Existing)
```powershell
Backup-AppxPackage -PackagePath $app.InstallLocation `
-OutputPath "C:\Backups" `
-NoCertificate
```
### Dependency Operations
#### 4. Backup with Dependencies (ZIP Archive)
```powershell
# Creates .appxpack file with main package and all dependencies
Backup-AppxPackage -PackagePath $app.InstallLocation `
-OutputPath "C:\Backups" `
-IncludeDependencies
```
#### 5. Dependency Analysis Only (No Backup)
```powershell
# Creates PackageName_Dependencies.json without creating backup
Backup-AppxPackage -PackagePath $app.InstallLocation `
-OutputPath "C:\Backups" `
-DependencyReportOnly
```
### Batch Operations
#### 6. Backup All Apps from a Publisher
```powershell
Get-AppxPackage -Publisher "*Microsoft*" |
ForEach-Object {
Backup-AppxPackage -PackagePath $_.InstallLocation `
-OutputPath "D:\Backups\Microsoft" `
-Verbose
}
```
### Installation Operations
#### 7. Install Standalone Package
```powershell
Install-AppxBackup -PackagePath "C:\Backups\MyApp.appx"
```
#### 8. Install ZIP Archive with Dependencies
```powershell
Install-AppxBackup -PackagePath "C:\Backups\MyApp.appxpack"
```
#### 9. Install for Current User Only (No Admin)
```powershell
Install-AppxBackup -PackagePath "C:\Backups\MyApp.appx" `
-CertStoreLocation CurrentUser
```
#### 10. Force Reinstall
```powershell
Install-AppxBackup -PackagePath "C:\Backups\MyApp.appx" -Force
```
#### 11. Skip Certificate (Already Trusted)
```powershell
Install-AppxBackup -PackagePath "C:\Backups\MyApp.appx" -SkipCertificate
```
#### 12. Allow Unsigned Packages (Developer Mode)
```powershell
Install-AppxBackup -PackagePath "C:\Backups\MyApp.appx" -AllowUnsigned
```
---
## Troubleshooting
### Common Errors and Solutions
#### Error: 0x800B0109 (Certificate Not Trusted)
**Cause:** Certificate not in Trusted Root store
**Solution:**
```powershell
# Run as Administrator
Import-Certificate -FilePath "path\to\cert.cer" `
-CertStoreLocation "Cert:\LocalMachine\Root"
```
#### Error: 0x80073CF9 (Already Installed)
**Cause:** Package already installed
**Solution:**
```powershell
Install-AppxBackup -PackagePath "package.appx" -Force
```
#### Error: MakeAppx Not Found
**Cause:** Windows SDK not installed
**Solution:**
1. Install Windows SDK from Microsoft
#### Error: Access Denied (WindowsApps)
**Cause:** Insufficient permissions
**Solution:**
- Module automatically uses multi-tier copy fallback
- Robocopy → Copy-Item → .NET APIs
- No manual intervention needed
---
## Limitations
### Dependency Repackaging Behavior
The `-IncludeDependencies` parameter repackages applications with their framework dependencies into a single `.appxpack` archive. Some applications cannot be successfully repackaged and restored. If a repackaged application fails to install, the application cannot be used from the backup. Reinstall from the Microsoft Store.
---
## Module Architecture
```
AppxBackup.Module/
├── AppxBackup.psd1 # Module manifest
├── AppxBackup.psm1 # Module loader
├── Import-AppxBackup.ps1 # Quick import helper
│
├── Config/ # Externalized configuration
│ ├── ModuleDefaults.json # Core module constants
│ ├── MimeTypes.json # MIME type mappings
│ ├── ToolConfiguration.json # Tool-specific settings
│ ├── WindowsReservedNames.json # Reserved filenames
│ ├── PackageConfiguration.json # Package-related constants
│ └── ZipPackagingConfiguration.json # ZIP archive settings
│
├── Public/ # Exported functions
│ ├── Backup-AppxPackage.ps1 # Main backup function
│ ├── Install-AppxBackup.ps1 # Package installer (Restore-AppxPackage alias)
│ ├── New-AppxBackupCertificate.ps1 # Certificate creation
│ ├── Get-AppxBackupInfo.ps1 # Package analysis
│ ├── Export-AppxDependencies.ps1 # Dependency export
│ ├── Test-AppxPackageIntegrity.ps1 # Integrity validation
│ ├── Test-AppxBackupCompatibility.ps1 # Compatibility check
│ └── Get-AppxToolPath.ps1 # Tool locator
│
├── Private/ # Internal functions
│ ├── Get-AppxConfiguration.ps1 # Configuration loader
│ ├── Get-AppxDefault.ps1 # Configuration value accessor
│ ├── Invoke-ProcessSafely.ps1 # Process execution
│ ├── Get-AppxManifestData.ps1 # Manifest parsing
│ ├── New-AppxPackageInternal.ps1 # Core packaging logic
│ ├── Test-AppxToolAvailability.ps1 # Tool validation
│ ├── Resolve-AppxDependencies.ps1 # Dependency resolution
│ ├── ConvertTo-SecureFilePath.ps1 # Path sanitization
│ ├── Write-AppxLog.ps1 # Logging system
│ ├── New-AppxBackupZipArchive.ps1 # ZIP archive creation
│ ├── New-AppxBackupManifest.ps1 # Installation manifest generation
│ └── New-AppxDependencyCertificate.ps1 # Dependency certificate creation
│
└── Examples/ # Usage examples
└── UsageExamples.md
```
---
### Configuration System
All hardcoded values are externalized to JSON configuration files in the `Config/` directory:
- **ModuleDefaults.json** - Path limits, timeouts, buffer sizes, disk space thresholds, etc.
- **MimeTypes.json** - Comprehensive MIME type database for Content_Types.xml generation
- **ToolConfiguration.json** - Tool-specific timeouts, async wait times, exit code interpretation
- **WindowsReservedNames.json** - Windows reserved filenames for validation
- **PackageConfiguration.json** - Package extensions, signature files, compression levels, namespaces
---
## Support
### Getting Help
- **Documentation:** Enter `help Command` (e. g. `help Backup-AppxPackage`)
- **Examples:** See `/Examples/UsageExamples.md`
- **Issues:** Check logs in `$env:TEMP\AppxBackup_*.log`
### Reporting Issues
When reporting issues, include:
1. PowerShell version (`$PSVersionTable`)
2. Windows version (`Get-ComputerInfo | Select OSName, OSVersion`)
3. Error message and stack trace
4. Log file from `$env:TEMP\AppxBackup_*.log`
---
## Changelog
### Version 2.0.1 (January 20, 2026)
#### Dependency Packaging
- Replaced bundle system with ZIP archives (.appxpack) containing packages, certificates, and metadata
- Metadata-driven installation orchestration with ordered dependency resolution
#### Configuration System
- Introduced external JSON-based configuration system for module extensibility
#### Manifest Parsing
- Rewrote Get-AppxManifestData with multi-tier fallback strategies for namespace resolution
- Handles malformed and non-standard manifests without hard dependency on Microsoft schemas
#### Certificate Management
- Automatic installation to Trusted Root store immediately after creation
- Privilege escalation fallback with intelligent warnings
- Individual certificates for each dependency in ZIP archives
#### SDK Tool Validation
- Test-AppxToolAvailability now returns tool path string instead of boolean
- Mandatory validation in Backup-AppxPackage with installation diagnostics and PATH analysis
#### Process Execution
- Unified process safety with tool-specific timeouts
- Output buffer limit per stream to prevent memory exhaustion
#### Installation
- Extended Install-AppxBackup to support ZIP archives with nested package handling
- Improved progress reporting with separate extraction, validation, and installation stages
#### Future Changes (Planned)
- Extend Get-AppxBackupInfo to analyze .appxpack files with full metadata extraction
- Extend Test-AppxPackageIntegrity to validate .appxpack archive structure and signatures
- Extend Test-AppxBackupCompatibility to assess system compatibility for .appxpack installation
---
## Citations
### Original Repository
[**mjmeans/Appx-Backup**](https://github.com/mjmeans/Appx-Backup): PowerShell script to backup an installed Windows Store App to an installable Appx file. (2016). *GitHub*.
---
© 2026 DeltaGa. All rights reserved.