The Store's unpackaged EXE path would require Authenticode-signing the installer and every PE file inside it. MSIX submissions are re-signed by the Store instead, so this route needs no code-signing certificate. build-msix.ps1 mirrors build-installer.ps1 and consumes the same per-architecture build artifacts, leaving the installer, portable archives and WinSparkle appcast untouched. One template generates the manifest for both architectures, carrying the identity reserved in Partner Center. check_windows_msix.py recomputes the package family name from the publisher DN, so a mistyped identity fails CI rather than a submission, and it parses the script rather than running it because root CI is Linux. Qualified logo assets are indexed into resources.pri; without the altform-unplated variants the shell draws the taskbar icon on an accent-coloured plate. PlatformDetector.isPackagedInstall gates the in-app updater and the Liberapay tile, which the read-only package directory and Store commerce policy respectively rule out. Gating at runtime keeps one Windows build feeding both the installer and the Store package.
35 lines
1.2 KiB
Bash
35 lines
1.2 KiB
Bash
#!/usr/bin/env bash
|
|
# Workflow and script regression guards.
|
|
#
|
|
# Single source of truth for the guard roster, shared by the "Verify workflow
|
|
# and script guards" step in .github/workflows/ci.yml and section 4 of
|
|
# scripts/ci_checks.sh. The checkers are named explicitly because a few of them
|
|
# belong to other jobs (check_bun_audit.py needs Bun, check_codegen.py runs via
|
|
# codegen.sh), but their regression tests are discovered by glob so a newly
|
|
# added scripts/test_*.py is picked up automatically instead of having to be
|
|
# remembered in two places.
|
|
set -euo pipefail
|
|
shopt -s nullglob
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
cd "$ROOT_DIR"
|
|
|
|
for checker in \
|
|
scripts/check_build_workflow.py \
|
|
scripts/check_apple_spm_locks.py \
|
|
scripts/check_tvos_test_wiring.py \
|
|
scripts/check_shrinker_rules.py \
|
|
scripts/verify_runtime_inputs.py \
|
|
scripts/check_workflow_security.py \
|
|
scripts/check_workflow_action_pins.py \
|
|
scripts/check_container_image_pins.py \
|
|
scripts/check_update_packages_workflow.py \
|
|
scripts/check_windows_installer.py \
|
|
scripts/check_windows_msix.py; do
|
|
python3 "$checker"
|
|
done
|
|
|
|
for guard_test in scripts/test_*.py; do
|
|
python3 "$guard_test"
|
|
done
|