diff --git a/installer/MSIX/Images/logo.png b/installer/MSIX/Images/logo.png
new file mode 100644
index 0000000000..8495aaf09d
Binary files /dev/null and b/installer/MSIX/Images/logo.png differ
diff --git a/installer/MSIX/Images/logo150.png b/installer/MSIX/Images/logo150.png
new file mode 100644
index 0000000000..3186a72996
Binary files /dev/null and b/installer/MSIX/Images/logo150.png differ
diff --git a/installer/MSIX/Images/logo44.png b/installer/MSIX/Images/logo44.png
new file mode 100644
index 0000000000..cbc9822292
Binary files /dev/null and b/installer/MSIX/Images/logo44.png differ
diff --git a/installer/MSIX/PackagingLayout.xml b/installer/MSIX/PackagingLayout.xml
new file mode 100644
index 0000000000..2eeacd55a3
--- /dev/null
+++ b/installer/MSIX/PackagingLayout.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/installer/MSIX/appxmanifest.xml b/installer/MSIX/appxmanifest.xml
new file mode 100644
index 0000000000..9ce25cf178
--- /dev/null
+++ b/installer/MSIX/appxmanifest.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+ PowerToys
+ Microsoft Corporation
+ Windows system utilities to maximize productivity
+ Images\logo.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/installer/MSIX/reinstall.ps1 b/installer/MSIX/reinstall.ps1
new file mode 100644
index 0000000000..3399316139
--- /dev/null
+++ b/installer/MSIX/reinstall.ps1
@@ -0,0 +1,5 @@
+$name='PowerToys'
+Get-AppxPackage -Name $name | select -ExpandProperty "PackageFullName" | Remove-AppxPackage
+makeappx build /v /overwrite /f PackagingLayout.xml /id "x64" /op bin\
+signtool sign /debug /a /fd SHA256 /f PowerToysTestKey.pfx /p 12345 bin\x64.msix
+Add-AppxPackage .\bin\x64.msix
diff --git a/installer/PowerToysSetupCustomActions/PowerToysSetupCustomActions.vcxproj b/installer/PowerToysSetupCustomActions/PowerToysSetupCustomActions.vcxproj
index fe20fba44d..1c5fc403a3 100644
--- a/installer/PowerToysSetupCustomActions/PowerToysSetupCustomActions.vcxproj
+++ b/installer/PowerToysSetupCustomActions/PowerToysSetupCustomActions.vcxproj
@@ -90,6 +90,10 @@
MachineX64
HighestAvailable
+
+ cd $(SolutionDir)MSIX && makeappx build /overwrite /f PackagingLayout.xml /id x64 /op bin\ && signtool sign /a /fd SHA256 /f PowerToysTestKey.pfx /p 12345 bin\x64.msix
+ $(SolutionDir)MSIX\bin\x64.msix
+
diff --git a/installer/README.md b/installer/README.md
index 86436094e2..4717da66ce 100644
--- a/installer/README.md
+++ b/installer/README.md
@@ -5,3 +5,17 @@
* Install the [WiX Toolset build tools](https://wixtoolset.org/releases/) in the development machine.
* Open `powertoys.sln`, select the "Release" and "x64" configurations and build the `PowerToysSetup` project.
* The resulting installer will be built to `PowerToysSetup\bin\Release\PowerToysSetup.msi`.
+
+## Building and installing self-signed PowerToys MSIX package
+* Make sure you've built correct `powertoys.sln` configuration
+* Add `PowerToysTestKey.pfx` to the [TRCA store](https://docs.microsoft.com/en-us/windows-hardware/drivers/install/trusted-root-certification-authorities-certificate-store)
+* Execute `reinstall.ps1` from the devenv powershell:
+## Removing all current PowerToys installations
+```ps
+$name='PowerToys'
+Get-AppxPackage -Name $name | select -ExpandProperty "PackageFullName" | Remove-AppxPackage
+gwmi win32_product -filter "Name = '$name'" -namespace root/cimv2 | foreach {
+ if ($_.uninstall().returnvalue -eq 0) { write-host "Successfully uninstalled $name " }
+ else { write-warning "Failed to uninstall $name." }
+}
+```
diff --git a/src/common/common.vcxproj b/src/common/common.vcxproj
index afe34d470a..a8e8eeff9b 100644
--- a/src/common/common.vcxproj
+++ b/src/common/common.vcxproj
@@ -112,6 +112,7 @@
+
@@ -133,6 +134,7 @@
+
diff --git a/src/common/common.vcxproj.filters b/src/common/common.vcxproj.filters
index 3b1073ec18..41b1e41710 100644
--- a/src/common/common.vcxproj.filters
+++ b/src/common/common.vcxproj.filters
@@ -78,6 +78,9 @@
Header Files
+
+ Header Files
+
@@ -126,5 +129,8 @@
Source Files
+
+ Source Files
+
\ No newline at end of file
diff --git a/src/common/winstore.cpp b/src/common/winstore.cpp
new file mode 100644
index 0000000000..275fc8adc9
--- /dev/null
+++ b/src/common/winstore.cpp
@@ -0,0 +1,11 @@
+#include "pch.h"
+#include "winstore.h"
+
+#include
+
+bool running_as_packaged()
+{
+ UINT32 length = 0;
+ const auto rc = GetPackageFamilyName(GetCurrentProcess(), &length, nullptr);
+ return rc != APPMODEL_ERROR_NO_PACKAGE;
+}
diff --git a/src/common/winstore.h b/src/common/winstore.h
new file mode 100644
index 0000000000..88916ee10d
--- /dev/null
+++ b/src/common/winstore.h
@@ -0,0 +1,3 @@
+#pragma once
+
+bool running_as_packaged();
\ No newline at end of file