Update the build scripts

This commit is contained in:
ema
2025-05-14 02:18:01 +08:00
parent 97f8232767
commit b28fcbb398
14 changed files with 116 additions and 112 deletions

7
.gitignore vendored
View File

@@ -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

View File

@@ -1,53 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
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">
<Identity Name="21090PaddyXu.QuickLook" Version="0.0.0.0"
Publisher='E=xupaddy@gmail.com, CN="Open Source Developer, Pengfei Xu", O=Open Source Developer, C=FI' />
<Properties>
<DisplayName>QuickLook</DisplayName>
<PublisherDisplayName>Paddy Xu</PublisherDisplayName>
<Description>Bring macOS &#8220;Quick Look&#8221; feature to Windows</Description>
<Logo>Assets\storelogo.png</Logo>
</Properties>
<Resources>
<Resource Language="en-us" />
<Resource uap:Scale="100" />
<Resource uap:Scale="125" />
<Resource uap:Scale="150" />
<Resource uap:Scale="200" />
<Resource uap:Scale="400" />
</Resources>
<Dependencies>
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.14316.0" MaxVersionTested="10.0.15063.0" />
</Dependencies>
<Capabilities>
<rescap:Capability Name="runFullTrust" />
</Capabilities>
<Applications>
<Application Id="Main" Executable="Package\QuickLook.exe" EntryPoint="Windows.FullTrustApplication">
<Extensions>
<desktop:Extension Category="windows.startupTask" Executable="Package\QuickLook.exe"
EntryPoint="Windows.FullTrustApplication">
<desktop:StartupTask TaskId="QuickLookTask" Enabled="true" DisplayName="QuickLook" />
</desktop:Extension>
</Extensions>
<uap:VisualElements DisplayName="QuickLook"
Description="Bring macOS &#8220;Quick Look&#8221; feature to Windows"
BackgroundColor="transparent"
Square150x150Logo="Assets\Square150x150Logo.png"
Square44x44Logo="Assets\Square44x44Logo.png">
<uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png"
Square310x310Logo="Assets\LargeTile.png"
Square71x71Logo="Assets\SmallTile.png">
<uap:ShowNameOnTiles>
<uap:ShowOn Tile="square150x150Logo" />
<uap:ShowOn Tile="wide310x150Logo" />
<uap:ShowOn Tile="square310x310Logo" />
</uap:ShowNameOnTiles>
</uap:DefaultTile>
</uap:VisualElements>
</Application>
</Applications>
</Package>

View File

@@ -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">
<!-- Invalid package identity name: QL-Win.QuickLook (expected: 21090PaddyXu.QuickLook) -->
<!-- Invalid package family name: QL-Win.QuickLook_wgqddy12gm212 (expected: 21090PaddyXu.QuickLook_egxr34yet59cg) -->
<!-- Invalid package publisher name: CN=F4F538EC-55CB-41B8-9531-25CC140D0339 (expected: CN=CE36AF3D-FF94-43EB-9908-7EC8FD1D29FB) -->
<Identity Name="21090PaddyXu.QuickLook" Version="0.0.0.0" Publisher="CN=CE36AF3D-FF94-43EB-9908-7EC8FD1D29FB" />
<Properties>
<DisplayName>QuickLook</DisplayName>
<PublisherDisplayName>Paddy Xu</PublisherDisplayName>
<!-- We can not set the name to QL-Win, see the following error message -->
<!-- Package acceptance validation error: The PublisherDisplayName element in the app manifest of QuickLook-4.0.1.0.appx is QL-Win, which doesn't match your publisher display name: emako. -->
<PublisherDisplayName>emako</PublisherDisplayName>
<Description>Bring macOS &#8220;Quick Look&#8221; feature to Windows</Description>
<Logo>Assets\storelogo.png</Logo>
</Properties>
@@ -19,7 +24,7 @@
<Resource uap:Scale="400" />
</Resources>
<Dependencies>
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.14316.0" MaxVersionTested="10.0.15063.0" />
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.14316.0" MaxVersionTested="10.0.26100.0" />
</Dependencies>
<Capabilities>
<rescap:Capability Name="runFullTrust" />

View File

@@ -1,4 +0,0 @@
cd /d %~dp0
@REM 7z a Package.7z .\Package\* -t7z -mx=5 -mf=BCJ2 -r -y
makemica micasetup.json
@pause

13
Build/openssl-sign.cnf Normal file
View File

@@ -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

20
Build/sideload.crt Normal file
View File

@@ -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-----

28
Build/sideload.key Normal file
View File

@@ -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-----

BIN
Build/sideload.pfx Normal file

Binary file not shown.

10
Scripts/pack-7z.ps1 Normal file
View File

@@ -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

6
Scripts/pack-all.ps1 Normal file
View File

@@ -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

View File

@@ -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
}

View File

@@ -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

View File

@@ -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

View File

@@ -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