Files
navi/packaging/msix
NavisandCursor e416327fbf Add Microsoft Store multi-arch MSIX packaging for EvilFox 4.2.8.1 (x64+Arm64).
Stage Partner Center folder with listing assets and Arm64 binary; MakeAppx not present so README includes pack/bundle commands.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-02 14:06:24 +03:00
..

MSIX packaging for EvilFox (Microsoft Store)

EvilFox ships as a full-trust Win32 + WebView2 app. Prefer MSIX over a PWA: system proxy and protocol cores cannot be delivered as a Store PWA alone.

Multi-arch (x64 + Arm64)

  • Device family: Windows.Desktop (Win10 19041+ / Win11; MaxVersionTested 10.0.26100.0).
  • Architectures: x64 and arm64 only (no x86 / AArch32).
  • Pack script writes final artifacts to dist\microsoft-store\:
    • EvilFox_<ver>_x64.msix
    • EvilFox_<ver>_arm64.msix
    • EvilFox_<ver>.msixbundle (when MakeAppx can bundle both)
    • README.txt (Partner Center upload notes, RU+EN)
    • listing\ (store.csv + screenshots) — filled by the submission prep step

If MakeAppx is missing, the script still stages under packaging/msix/_staging_<arch> and prints exact makeappx commands in README.txt.

Prerequisites

  1. Build Windows x64: build.batdist\navis-release\windows\EvilFox.exe

  2. Cross-build Arm64 (CGO_ENABLED=0). Important: goversioninfo -64 produces an amd64 cmd/vpnapp/resource.syso — temporarily rename it aside for the arm64 link, then restore:

    set GOOS=windows
    set GOARCH=arm64
    set CGO_ENABLED=0
    move cmd\vpnapp\resource.syso cmd\vpnapp\resource.syso.amd64.bak
    go build -ldflags="-H windowsgui -s -w" -trimpath -o dist\navis-release\windows\arm64\EvilFox.exe ./cmd/vpnapp
    move cmd\vpnapp\resource.syso.amd64.bak cmd\vpnapp\resource.syso
    
  3. Windows SDK with MakeAppx.exe (and SignTool.exe for sideload signing)

  4. Optional: code-signing certificate whose Subject CN matches Identity/@Publisher

Pack

From the repo root (PowerShell):

.\scripts\pack-msix.ps1
.\scripts\pack-msix.ps1 -Arch x64 -Version 4.2.8.1
.\scripts\pack-msix.ps1 -Arch arm64 -ExePath dist\navis-release\windows\arm64\EvilFox.exe
.\scripts\pack-msix.ps1 -Arch all -OutDir dist\microsoft-store
.\scripts\pack-msix.ps1 -Publisher "CN=Your Store Publisher" -Name "EvilFox.EvilFox"
.\scripts\pack-msix.ps1 -CertPath ".\certs\evilfox-msix.pfx" -CertPassword "..."

Parameters: -Arch x64|arm64|all, -OutDir, -Version, -Name, -Publisher.

Store submission

  1. Create the app in Partner Center.
  2. Copy Package/Identity Name and Publisher into AppxManifest.xml (or pass -Name / -Publisher).
  3. Upload .msixbundle if available, else both .msix files. Partner Center can re-sign with the Store cert.
  4. Device family: Windows 10/11 Desktop only. Arm64 covers Windows on ARM.
  5. Declare runFullTrust and network capabilities; answer Store questions about VPN/proxy use.
  6. Privacy policy URL on evilfox.win required.
  7. Sign in to Visual Studio / Partner Center with the same Store developer account if using VS packaging / Store association.
  8. Do not enable in-app self-update for Store builds — EvilFox detects MSIX package identity and hides the updater (Store updates only).

Optional: place arch-specific wintun.dll under assets/wintun/<arch>/. Without it, packaging still succeeds; TUN/VPN mode needs the dll next to the exe (proxy mode works without it).

Sideload test

Add-AppxPackage -Path .\dist\microsoft-store\EvilFox_4.2.8.1_x64.msix

Unsigned packages need a trusted cert or developer mode / sideloading enabled.

Remnawave notes

EvilFox can pull configs from a Remnawave panel:

  1. Public subscription: paste https://<panel>/api/sub/<shortUuid> (or use panel URL + short UUID in the Remnawave block).
  2. Optional API token (panel → API Tokens) enables authenticated lookups:
    • GET /api/subscriptions/by-short-uuid/{short} / …/raw
    • GET /api/users/by-short-uuid/{short}subscriptionUrl
  3. Optional Caddy X-Api-Key if the panel sits behind Caddy token auth.

Tokens are stored only in local configs/config.json (mode 0600) — never commit them.