Skip to content

fix(release): ship scanner/ + automation/ in the portable ZIP#38

Merged
OpenSource-For-Freedom merged 2 commits into
mainfrom
ci/main-push-as-stable
Jun 7, 2026
Merged

fix(release): ship scanner/ + automation/ in the portable ZIP#38
OpenSource-For-Freedom merged 2 commits into
mainfrom
ci/main-push-as-stable

Conversation

@OpenSource-For-Freedom

Copy link
Copy Markdown
Owner

FARTS! PR #36 trimmed the ZIP to just WRAITH.exe + README.md on the assumption that the csproj Content includes embedded the Python scanner and the PowerShell automation scripts inside the single-file binary. They don't. CopyToOutputDirectory drops those trees ALONGSIDE the EXE in ./publish; the single-file bundler only ingests managed assemblies and native libs.

Result: portable ZIP users extracted, double-clicked WRAITH.exe, hit Scan, and every Python-backed scan failed with "Python scanner not found at \scanner\scanner.py" because BootstrapService .ResolveBaseDir() joins "scanner" to the EXE dir and the ZIP had none.

Stage step now copies ./publish/scanner and ./publish/automation into ./release before the Compress-Archive call, sourcing from the publish output so the csproj's existing Exclude pattern (test_*.py, pycache, *.pyc) automatically carries through — no duplicate filter to drift.

Header comment + ZIP inventory block updated to match.

Kept out (PR #36 intent preserved): START.bat, quick-scan.ps1, wraith.env.json template, LICENSE, repo CI/test files. The portable ZIP is now exactly the runtime payload — nothing more, nothing less.

Velopack installer path was never broken by PR #36 (it consumes ./publish-velopack which still includes the directories via the same csproj rule), so this fix is portable-ZIP-only.

PR #36 trimmed the ZIP to just WRAITH.exe + README.md on the assumption
that the csproj Content includes embedded the Python scanner and the
PowerShell automation scripts inside the single-file binary. They don't.
CopyToOutputDirectory drops those trees ALONGSIDE the EXE in ./publish;
the single-file bundler only ingests managed assemblies and native libs.

Result: portable ZIP users extracted, double-clicked WRAITH.exe, hit
Scan, and every Python-backed scan failed with "Python scanner not
found at <extract-dir>\scanner\scanner.py" because BootstrapService
.ResolveBaseDir() joins "scanner" to the EXE dir and the ZIP had none.

Stage step now copies ./publish/scanner and ./publish/automation into
./release before the Compress-Archive call, sourcing from the publish
output so the csproj's existing Exclude pattern (test_*.py, __pycache__,
*.pyc) automatically carries through — no duplicate filter to drift.

Header comment + ZIP inventory block updated to match.

Kept out (PR #36 intent preserved): START.bat, quick-scan.ps1,
wraith.env.json template, LICENSE, repo CI/test files. The portable
ZIP is now exactly the runtime payload — nothing more, nothing less.

Velopack installer path was never broken by PR #36 (it consumes
./publish-velopack which still includes the directories via the same
csproj rule), so this fix is portable-ZIP-only.
Copilot AI review requested due to automatic review settings June 7, 2026 16:12
@OpenSource-For-Freedom OpenSource-For-Freedom merged commit bf31362 into main Jun 7, 2026
6 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the portable release ZIP packaging so runtime-required scanner/ (Python) and automation/ (PowerShell) directories are shipped alongside WRAITH.exe, matching how the app resolves paths at runtime and preventing broken “portable ZIP” executions.

Changes:

  • Expands the documented ZIP inventory in .github/workflows/deploy.yml to include scanner/ and automation/.
  • Updates the “Stage release bundle” step to copy ./publish/scanner and ./publish/automation into ./release prior to Compress-Archive, sourcing from publish output so the .csproj excludes carry through.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +331 to +335
# Pull from ./publish so the same Exclude pattern that keeps
# test_*.py and __pycache__ out of csproj output keeps them out
# of the ZIP too — no duplicate filter to drift.
if (Test-Path ./publish/scanner) { Copy-Item -Recurse ./publish/scanner ./release/scanner }
if (Test-Path ./publish/automation) { Copy-Item -Recurse ./publish/automation ./release/automation }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants