diff --git a/.gitignore b/.gitignore index 5f9471e..4a48c6d 100644 --- a/.gitignore +++ b/.gitignore @@ -290,8 +290,11 @@ __pycache__/ /QuickLook.Installer/C_QuickLookComponents.wxs /Build/* !/Build/Assets -!/Build/AppxManifest.* +!/Build/AppxManifest.xml !/Build/assetslayout.resfiles !/Build/priconfig.xml !/Build/micasetup.json -!/Build/micasetup.cmd +!/Build/openssl-sign.cnf +!/Build/sideload.crt +!/Build/sideload.key +!/Build/sideload.pfx \ No newline at end of file diff --git a/Build/AppxManifest.dev.xml b/Build/AppxManifest.dev.xml deleted file mode 100644 index ccb1168..0000000 --- a/Build/AppxManifest.dev.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - QuickLook - Paddy Xu - Bring macOS “Quick Look” feature to Windows - Assets\storelogo.png - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Build/AppxManifest.xml b/Build/AppxManifest.xml index c3d5e9d..3b5e7ec 100644 --- a/Build/AppxManifest.xml +++ b/Build/AppxManifest.xml @@ -3,10 +3,15 @@ xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10" xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"> + + + QuickLook - Paddy Xu + + + emako Bring macOS “Quick Look” feature to Windows Assets\storelogo.png @@ -19,7 +24,7 @@ - + diff --git a/Build/micasetup.cmd b/Build/micasetup.cmd deleted file mode 100644 index caa5c17..0000000 --- a/Build/micasetup.cmd +++ /dev/null @@ -1,4 +0,0 @@ -cd /d %~dp0 -@REM 7z a Package.7z .\Package\* -t7z -mx=5 -mf=BCJ2 -r -y -makemica micasetup.json -@pause diff --git a/Build/openssl-sign.cnf b/Build/openssl-sign.cnf new file mode 100644 index 0000000..9ee93c0 --- /dev/null +++ b/Build/openssl-sign.cnf @@ -0,0 +1,13 @@ +[req] +default_bits = 2048 +prompt = no +default_md = sha256 +distinguished_name = dn +x509_extensions = v3_req + +[dn] +CN = CE36AF3D-FF94-43EB-9908-7EC8FD1D29FB + +[v3_req] +keyUsage = critical, digitalSignature +extendedKeyUsage = codeSigning diff --git a/Build/sideload.crt b/Build/sideload.crt new file mode 100644 index 0000000..f338d55 --- /dev/null +++ b/Build/sideload.crt @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDMjCCAhqgAwIBAgIUBIWdItfat0Fw6npbHI2W7HE/0KYwDQYJKoZIhvcNAQEL +BQAwLzEtMCsGA1UEAwwkQ0UzNkFGM0QtRkY5NC00M0VCLTk5MDgtN0VDOEZEMUQy +OUZCMB4XDTI1MDUxMzE3NDgzNVoXDTI4MDUxMjE3NDgzNVowLzEtMCsGA1UEAwwk +Q0UzNkFGM0QtRkY5NC00M0VCLTk5MDgtN0VDOEZEMUQyOUZCMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnAtbhjH01YmWv1U98kMj3epdpuZLE04pGXOR +xfdBb1zX8Q75hy5SmIaHrsow7fTXfHsUzuJEmanllMbJGUpi46fLsb8Ijd4uQgXO +wSDfIXrm34Buzpk6EKwEWmRMyORmfPwy0A+XdTHydDhEXndy1eGPJ1ZZnldVI8Ho +ZF2MW35QBZDjlWZh3RppWNMksvlngrOX4PFfJ+DtOQUvNswbpyqVATMFBk9kShGM +XHuieibzDlzxGNKSn3tDvutLBW5hm7iLqEuAeM7dwSac4C+N5FKWnXJndkN3k8AN +nD0MHlErN1dLoJQqvAaCarZr8RSPhdanVOylMGkt97NLYZrLTQIDAQABo0YwRDAO +BgNVHQ8BAf8EBAMCB4AwEwYDVR0lBAwwCgYIKwYBBQUHAwMwHQYDVR0OBBYEFJEL +e4QaWs4H2djQ6nnnc/30sZ/nMA0GCSqGSIb3DQEBCwUAA4IBAQBYBXkl/vEsGUHI +qogCfb/DxFlsm059sxHAIhaNjuoTlgwzgj6KSPbKsfnYVMHZFqkg4AaTuRs9iqTL +TStM14OjG95gn+7fJ4zxqquEEytk9yb2xj9ZpLAvzZzUrw5qo1lmM7yPRso38l62 +9g1G1/MVP6pO03QWKzvSV+IlU3DIP3M2r74G8dexL5/Cut1LkOc/tn2ZYt3Ij95e +RM2vqxzK2pw6IAVG3wdNGAyN9K8BATRuAXFV6RXkeEBHFNV3wpyq4W+H6hpsrMJM +rMZUUqLa8BTUQAsZ1jmL+dRmj2rESeOaOO9jPks4J4c8+v8aJQBmZhvxRyjyMtdL +pWHSCCgm +-----END CERTIFICATE----- diff --git a/Build/sideload.key b/Build/sideload.key new file mode 100644 index 0000000..6272606 --- /dev/null +++ b/Build/sideload.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCcC1uGMfTViZa/ +VT3yQyPd6l2m5ksTTikZc5HF90FvXNfxDvmHLlKYhoeuyjDt9Nd8exTO4kSZqeWU +xskZSmLjp8uxvwiN3i5CBc7BIN8heubfgG7OmToQrARaZEzI5GZ8/DLQD5d1MfJ0 +OERed3LV4Y8nVlmeV1UjwehkXYxbflAFkOOVZmHdGmlY0ySy+WeCs5fg8V8n4O05 +BS82zBunKpUBMwUGT2RKEYxce6J6JvMOXPEY0pKfe0O+60sFbmGbuIuoS4B4zt3B +JpzgL43kUpadcmd2Q3eTwA2cPQweUSs3V0uglCq8BoJqtmvxFI+F1qdU7KUwaS33 +s0thmstNAgMBAAECggEABS51XWPhmt5E5K6Pw4XKNkS207jC68MFJ1oIkE0bsvcf +boWORe2vrW6OKSt/627dYZNJXMNI/tyUNIKooSUwr8QzGysE6DJlUSjrNXYszT+i +VJqUU1o614c2unT+fbnj01OhMPp2OjHXOK0OTCAQQ/IySYlFqYssgbxJxgdl2+XX +rDiSk5PvZ0Z8PUuG7EvNbRAnUmIQDVTd81My0kPk4M0w8Rg2p0sIN5klIDxTzC98 +5iUvS+53xch4f8jJOr8s7J/56R+tnIoqfVkIDI3Q4CUhq3s0DAC7GP4vpoynGXn0 +pLzHvOttFbqgcHkS2zrVOXKwl4Zym4p+kMCub6BCmwKBgQDcGzCvrMon4fIJrymG +lmGZMeN8acjD0MKDT8JPgHkwXTz61AbOC2EGoOpWNqrYGOCv6xSMPiub1un6Y5X2 +KIuAJm+bY+py0Ed+EzZjrFkQpGt6xQ3FY2aFvA5uS3esgcF+OtcUrXEEq0dK9bZ6 +HB9P90QuND72bvfx9wjLon0dvwKBgQC1fcRbLpqA2lSGglcRoioA/okMPyMk7jH3 +n3IHjnpjsBu1FPrWH8Tqtop4vrEVS1cxM7P7FXWwWPqUH/2XbCk1R3T9ZD+i1kHi +qvSqp4L0dfTk6ibZpywGXRnpQzT5kKJTrSSx9L7Ni00HcvCI1+p4XNdJZm7jNDSy +dGSPg1ox8wKBgB6TaF//ENYZfRX7TzlzCnvNglx2FX2eMmcrXULOBgfB7AasDYXx +7riNAgCX94OtcQj/DwusV0J+yGIQE3TujPJwZHChoJ/ybvwEjzmpZ3X4YTXcydzx +wfwx848+zJEaNVbjtZ0Zuul7IZw4JfEwluj04HPKrjRtleP2/THMkLThAoGBAJYh +BwB2OJBGCo2J3ARWJHDWHP/oamXuM58mYekmTs+PqhvM0wG1HesaPMlM1KdMvz+Q +CV21jrjlocJOBDPx4NSV24yQFKPaoH2j9OgF0SnvOTjzCFgbFSveb8SpN3UJ031s +SGJ8lijpBjsXNSm9kdMm2V96QFfpo33LEjQ077NJAoGARnnvnenmfwlu/5Oq2Ojs +WWzOxXTpiGXLnbUNUvQMvqXxGygCGoA18vVveLr6eKfojM8iKtGF91S9NsUkBEkd +VKOFnc9OQ5dtoBkN6XZBUCmJCzQZS20A3jq9oionsJlIWOgb/X3L1cS2SZ3ocgKS +lCCN2IGaKiGJCPJprpFW7fg= +-----END PRIVATE KEY----- diff --git a/Build/sideload.pfx b/Build/sideload.pfx new file mode 100644 index 0000000..f3f18c4 Binary files /dev/null and b/Build/sideload.pfx differ diff --git a/Scripts/pack-7z.ps1 b/Scripts/pack-7z.ps1 new file mode 100644 index 0000000..4e59ef3 --- /dev/null +++ b/Scripts/pack-7z.ps1 @@ -0,0 +1,10 @@ +$version = git describe --always --tags --exclude latest + +Set-Location ../Build + +Write-Output "This file makes QuickLook portable." >> .\Package\portable.lock + +Remove-Item .\QuickLook-$version.7z -ErrorAction SilentlyContinue +7z.exe a .\QuickLook-$version.7z .\Package\* -t7z -mx=9 -ms=on -m0=lzma2 -mf=BCJ2 -r -y + +Remove-Item .\Package\portable.lock diff --git a/Scripts/pack-all.ps1 b/Scripts/pack-all.ps1 new file mode 100644 index 0000000..38fc08a --- /dev/null +++ b/Scripts/pack-all.ps1 @@ -0,0 +1,6 @@ +# Please build the msi installation package in advance +powershell -file "$(SolutionDir)Scripts\pack-7z.ps1" +powershell -file "$(SolutionDir)Scripts\pack-setup.ps1" +powershell -file "$(SolutionDir)Scripts\pack-appx.ps1" +powershell -file "$(SolutionDir)Scripts\sign-appx.ps1" +Pause diff --git a/Scripts/pack-appx-dev.ps1 b/Scripts/pack-appx-dev.ps1 deleted file mode 100644 index 5f1db75..0000000 --- a/Scripts/pack-appx-dev.ps1 +++ /dev/null @@ -1,35 +0,0 @@ -$version = git describe --always --tags "--abbrev=0" --exclude latest - -if($version.Split('.').Length.Equals(3)) -{ - $version += ".0" -} - -function Update-Version($path) -{ - $xml = [xml](Get-Content $path) - $xml.Package.Identity.Version="$version" - $xml.Save("$path") -} - -if(-not (Test-Path env:CI)) -{ - # prapare folders - Remove-Item -Recurse ..\Build\Appx -ErrorAction SilentlyContinue - Copy-Item -Recurse ..\Build\Package ..\Build\Appx\Package - Copy-Item -Recurse ..\Build\Assets ..\Build\Appx\Assets - Copy-item ..\Build\AppxManifest.dev.xml ..\Build\Appx\AppxManifest.xml - - # set version to git version - Update-Version("..\Build\Appx\AppxManifest.xml") - - # generate resources - $priExe = 'C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\makepri.exe' - .$priExe new /pr ..\Build\Appx /cf ..\Build\priconfig.xml /of ..\Build\Appx\resources.pri - - # packing - $packExe = 'C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\makeappx.exe' - $folder = '..\Build\Appx\' - - .$packExe pack /l /o /d ..\Build\Appx /p ..\Build\QuickLook-$version.appx -} diff --git a/Scripts/pack-appx.ps1 b/Scripts/pack-appx.ps1 index 95b8d2b..298303e 100644 --- a/Scripts/pack-appx.ps1 +++ b/Scripts/pack-appx.ps1 @@ -24,11 +24,11 @@ if(-not (Test-Path env:CI)) Update-Version("..\Build\Appx\AppxManifest.xml") # generate resources - $priExe = 'C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x86\makepri.exe' + $priExe = 'C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x86\makepri.exe' .$priExe new /pr ..\Build\Appx /cf ..\Build\priconfig.xml /of ..\Build\Appx\resources.pri # packing - $packExe = 'C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x86\makeappx.exe' + $packExe = 'C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x86\makeappx.exe' $folder = '..\Build\Appx\' .$packExe pack /l /o /d ..\Build\Appx /p ..\Build\QuickLook-$version.appx diff --git a/Scripts/pack-setup.ps1 b/Scripts/pack-setup.ps1 index f40e503..a7abd13 100644 --- a/Scripts/pack-setup.ps1 +++ b/Scripts/pack-setup.ps1 @@ -1,16 +1,10 @@ +$version = git describe --always --tags --exclude latest + Set-Location ../Build -Remove-Item .\QuickLook.7z -ErrorAction SilentlyContinue -7z a QuickLook.7z .\Package\* -t7z -mx=5 -mf=BCJ2 -r -y +Remove-Item .\Package.7z -ErrorAction SilentlyContinue +7z a Package.7z .\Package\* -t7z -mx=9 -ms=on -m0=lzma2 -mf=BCJ2 -r -y makemica micasetup.json -Write-Output "This file makes QuickLook portable." >> .\Package\portable.lock -7z a QuickLook.7z .\Package\portable.lock -t7z -mx=5 -mf=BCJ2 -r -y - -$version = git describe --always --tags --exclude latest -Remove-Item .\QuickLook-$version.7z -ErrorAction SilentlyContinue -Rename-Item .\QuickLook.7z QuickLook-$version.7z -Remove-Item .\QuickLook-$version.exe -ErrorAction SilentlyContinue Rename-Item .\QuickLook.exe QuickLook-$version.exe - -pause +Remove-Item .\Package.7z -ErrorAction SilentlyContinue \ No newline at end of file diff --git a/Scripts/sign-appx.ps1 b/Scripts/sign-appx.ps1 index b86eb9b..a0e79d3 100644 --- a/Scripts/sign-appx.ps1 +++ b/Scripts/sign-appx.ps1 @@ -1,5 +1,22 @@ -$signExe = 'C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\signtool.exe' -$files = gci '..\Build\QuickLook-*.appx' | %{('"{0}"' -f $_.FullName)} +$opensslExe = 'C:\Program Files\Git\usr\bin\openssl.exe' +$signExe = 'C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x86\signtool.exe' $timestampUrl = 'http://time.certum.pl/' +$version = git describe --always --tags "--abbrev=0" --exclude latest -.$signExe sign /a /v /fd sha256 /t $timestampUrl $files +if($version.Split('.').Length.Equals(3)) +{ + $version += ".0" +} + +Set-Location ../Build + +if (-not (Test-Path sideload.key)) { + .$opensslExe genrsa -out "sideload.key" 2048 +} +if (-not (Test-Path sideload.pfx)) { + .$opensslExe req -new -x509 -days 825 -key "sideload.key" -out "sideload.crt" -config "openssl-sign.cnf" -subj "/CN=CE36AF3D-FF94-43EB-9908-7EC8FD1D29FB" + .$opensslExe pkcs12 -export -out "sideload.pfx" -inkey "sideload.key" -in "sideload.crt" -password pass:123456 +} + +.$signExe sign /fd sha256 /f "sideload.pfx" /p 123456 /td sha256 /tr $timestampUrl QuickLook-$version.appx +.$signExe verify /pa /v QuickLook-$version.appx