Package Scripts
July 30, 2026 ยท View on GitHub
Canonical release packaging entry points for ALIS.
For a tagged public source release, generate
effective-component-manifest.json from the clean public tag before signing:
python scripts/ue/check/governance/generate_component_manifest.py `
--tag <tag> `
--output <release-dir>/effective-component-manifest.json
sign_release.ps1 then includes that root-level manifest in the signed
SHA256SUMS.txt.
Focused signing proof:
.\scripts\ue\package\tests\test_component_manifest_signing.ps1
Scripts
package_release.ps1
Packages a Win64 release build through RunUAT BuildCookRun.
Defaults:
- reads
UE_PATHfromscripts/config/ue_path.conf - uses
Shipping - uses
-nodebuginfoso staged.pdbfiles do not bloat the distributable package - uses
-skipencryptionfor public release packaging - uses
1700 MiBsplit threshold for GitHub-safe archive transport - writes a
package_summary.txtinto the output directory - can sign the exact output directory after archive creation with
-SignRelease - with
-SignRelease, movesWindows/and summary files underdebug/so the release root is upload-ready
Examples:
.\scripts\ue\package\package_release.ps1 -EngineRoot <ue-path>
.\scripts\ue\package\package_release.ps1 `
-EngineRoot <ue-path> `
-CreateReleaseArchive `
-SignRelease `
-SplitSizeMB 1700
Key parameters:
-EngineRootoptional override for packaging with a source engine without changingscripts/config/ue_path.conf-OutputDirexplicit archive directory-SkipBuildskips the build step but still cooks/packages-IncludeStagedDebugFileskeeps.pdbfiles in the packaged output-EncryptContentopt-in override for encrypted containers-CreateReleaseArchivecreates a zip, optionally split into parts- when a created zip already fits under the requested split threshold, the script keeps a normal
.zip -SplitSizeMBarchive split size in MiB, default1700-SignReleaserunssign_release.ps1against the exact output directory after archive creation-GpgPath,-GpgHome,-SigningKeyFingerprint, and-SkipSignVerifyare forwarded tosign_release.ps1when-SignReleaseis set
package_release.bat
Windows wrapper for package_release.ps1.
Example:
scripts\ue\package\package_release.bat -EngineRoot <ue-path> -CreateReleaseArchive
sign_release.ps1
Generates SHA256SUMS.txt and SHA256SUMS.txt.asc for a packaged release directory.
Defaults:
- discovers
gpg.exefrom PATH or common Windows install locations - reuses the ALIS site trust fingerprint
3B9885F0C2D8D927C27FAB58F61A530034CFB5E7 - signs the root-level release assets in a packaged output directory
- exports the public half of the selected signing key as
ALIS_PUBLIC_KEY.asc - includes the exported key in
SHA256SUMS.txtso every distribution mirror carries the same key asset - excludes
SHA256SUMS.txtandSHA256SUMS.txt.ascfrom the manifest; the signature signs the manifest, and the manifest never hashes itself - writes
INSTALL.txtinto the release directory before hashing so the helper file is covered by the signed manifest - copies
VERIFY_RELEASE.ps1andVERIFY_RELEASE.batinto the release directory before hashing so advanced users have a self-contained verifier next to the archives - verifies the detached signature after signing
- writes
sign_release_summary.txtinto the release directory
Examples:
.\scripts\ue\package\sign_release.ps1 `
-ReleaseDir <temp-dir>\ALIS_release_20260310_154307
.\scripts\ue\package\sign_release.ps1 `
-ReleaseDir <build-dir> `
-GpgPath "gpg"
Key parameters:
-ReleaseDirpackaged release output directory that contains the archive parts-GpgPathoptional explicit path togpg.exe-GpgHomeoptional explicit signing keyring directory; it is mandatory when-SigningKeyFingerprintdiffers from the canonical ALIS key- an explicit GPG home must already exist, must be owned by the calling operation, and is rejected if it resolves to the default user GPG directory or user profile
- the signing script never deletes an explicit GPG home because it contains caller-owned secret-key material; a throwaway test harness must clean only the disposable home it created
-SigningKeyFingerprintoverride only if the ALIS public trust identity changes-SkipVerifyskips the post-signgpg --verifystep
sign_release.bat
Windows wrapper for sign_release.ps1.
Example:
scripts\ue\package\sign_release.bat -ReleaseDir <build-dir>
verify_release.ps1
Verifies SHA256SUMS.txt.asc and all archive hashes using the ALIS public key
bundled with the release.
Defaults:
- uses explicit
-PublicKeyPathfirst, then bundledALIS_PUBLIC_KEY.asc - falls back to
https://fall.is/assets/security/public-key.asconly for older releases without a bundled key - checks fingerprint
3B9885F0C2D8D927C27FAB58F61A530034CFB5E7 - passes a temporary GPG home explicitly to all public-key operations, so it does not initialize or modify the user's main keyring
- verifies both the detached signature and every asset hash listed in
SHA256SUMS.txt - writes
verify_release_summary.txtinto the release directory - when copied into a release directory, it can infer that directory automatically without
-ReleaseDir
Examples:
.\scripts\ue\package\verify_release.ps1 `
-ReleaseDir <temp-dir>\ALIS_release_20260310_154307
.\scripts\ue\package\verify_release.ps1 `
-ReleaseDir <build-dir> `
-PublicKeyPath <site-root>\assets\security\public-key.asc `
-GpgPath "gpg"
Key parameters:
-ReleaseDirpackaged release output directory that contains archive parts and the hash/signature files-PublicKeyPathoptional local ALIS public key file-BundledPublicKeyNameoverride only for a legacy/nonstandard release asset name-PublicKeyUrloverride only if the site public key URL changes-ExpectedFingerprintoverride only if the ALIS trust identity changes-TempGpgHomeoptional explicit temporary verification keyring directory-KeepTempKeyringkeeps the temporary verification keyring for debugging
verify_release.bat
Windows wrapper for verify_release.ps1.
Example:
scripts\ue\package\verify_release.bat -ReleaseDir <build-dir>
Notes
- For the current ALIS target, source-engine packaging is the verified path.
Source/Alis.Target.csforces modular Shipping, so the packaged build contains many DLLs.- Public release packaging defaults to
-skipencryption; encrypted startup containers currently fail in modular Shipping withFailed to find requested encryption key 00000000000000000000000000000000. - Current ALIS zip headroom under GitHub's 2 GiB limit is only about
256 MiB, so split archives are the default safe GitHub transport path. - Each newly signed release is locally verifiable from its mirrored files. The site trust page remains the authoritative out-of-band fingerprint confirmation.
- Normal users do not need to run
verify_release.ps1; it exists for advanced authenticity checks. - For Windows advanced users, the preferred release-side entry point is
VERIFY_RELEASE.batinside the packaged release folder.