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