From 42a844bc8d739f82f335af81a48acab6a082bb4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E7=94=B5=E8=8A=BD=E8=A1=A3?= Date: Sat, 9 May 2026 03:11:53 -0400 Subject: [PATCH] Add Windows app manifest metadata --- .github/workflows/ci.yml | 3 ++ README.md | 1 + packaging/windows/ely_app.exe.manifest | 31 ++++++++++++++++ scripts/verify_windows_app_manifest.sh | 49 ++++++++++++++++++++++++++ 4 files changed, 84 insertions(+) create mode 100644 packaging/windows/ely_app.exe.manifest create mode 100755 scripts/verify_windows_app_manifest.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index eb6f030..520d4ab 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -53,6 +53,9 @@ jobs: - name: Verify Linux desktop metadata run: scripts/verify_linux_desktop_metadata.sh + - name: Verify Windows app manifest metadata + run: scripts/verify_windows_app_manifest.sh + - name: Build macOS app bundle run: scripts/create_macos_app_bundle.sh diff --git a/README.md b/README.md index 185acf8..434faf2 100644 --- a/README.md +++ b/README.md @@ -18,5 +18,6 @@ cargo check -p ely_servo_host --features servo-engine --all-targets cargo clippy -p ely_servo_host --features servo-engine --all-targets -- -D warnings cargo test -p ely_servo_host --features servo-engine --test software_host scripts/verify_prd_site_rendering.sh +scripts/verify_windows_app_manifest.sh cargo run -p ely_app ``` diff --git a/packaging/windows/ely_app.exe.manifest b/packaging/windows/ely_app.exe.manifest new file mode 100644 index 0000000..dad10b9 --- /dev/null +++ b/packaging/windows/ely_app.exe.manifest @@ -0,0 +1,31 @@ + + + + ELY Browser by Elydora + + + + + + + + + + + + + + + PerMonitorV2, unaware + true + UTF-8 + + + diff --git a/scripts/verify_windows_app_manifest.sh b/scripts/verify_windows_app_manifest.sh new file mode 100755 index 0000000..38725cd --- /dev/null +++ b/scripts/verify_windows_app_manifest.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash +set -euo pipefail + +manifest_path="${1:-packaging/windows/ely_app.exe.manifest}" +expected_file_name="ely_app.exe.manifest" + +if [[ ! -f "${manifest_path}" ]]; then + echo "${manifest_path}: Windows app manifest is missing" + exit 1 +fi + +if [[ "$(basename "${manifest_path}")" != "${expected_file_name}" ]]; then + echo "${manifest_path}: Windows app manifest filename expected '${expected_file_name}'" + exit 1 +fi + +xmllint --noout "${manifest_path}" + +xml_value() { + local xpath="$1" + xmllint --xpath "string(${xpath})" "${manifest_path}" +} + +assert_value() { + local label="$1" + local xpath="$2" + local expected="$3" + local actual + actual="$(xml_value "${xpath}")" + if [[ "${actual}" != "${expected}" ]]; then + echo "${manifest_path}: ${label} expected '${expected}', got '${actual}'" + exit 1 + fi +} + +assert_value "manifestVersion" "/*[local-name()='assembly']/@manifestVersion" "1.0" +assert_value "assemblyIdentity type" "/*[local-name()='assembly']/*[local-name()='assemblyIdentity']/@type" "win32" +assert_value "assemblyIdentity name" "/*[local-name()='assembly']/*[local-name()='assemblyIdentity']/@name" "Elydora.ELYBrowser" +assert_value "assemblyIdentity version" "/*[local-name()='assembly']/*[local-name()='assemblyIdentity']/@version" "0.1.0.0" +assert_value "assemblyIdentity processorArchitecture" "/*[local-name()='assembly']/*[local-name()='assemblyIdentity']/@processorArchitecture" "amd64" +assert_value "description" "/*[local-name()='assembly']/*[local-name()='description']" "ELY Browser by Elydora" +assert_value "requestedExecutionLevel level" "//*[local-name()='requestedExecutionLevel']/@level" "asInvoker" +assert_value "requestedExecutionLevel uiAccess" "//*[local-name()='requestedExecutionLevel']/@uiAccess" "false" +assert_value "Windows 10/11 supportedOS" "//*[local-name()='supportedOS']/@Id" "{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" +assert_value "dpiAwareness" "//*[local-name()='dpiAwareness']" "PerMonitorV2, unaware" +assert_value "longPathAware" "//*[local-name()='longPathAware']" "true" +assert_value "activeCodePage" "//*[local-name()='activeCodePage']" "UTF-8" + +echo "${manifest_path}: Windows app manifest metadata ok"