Skip to content

bug-fix(search): bundle Everything SDK DLL - #20

Closed
EriaWalker wants to merge 1 commit into
HakuSystems:mainfrom
EriaWalker:main
Closed

bug-fix(search): bundle Everything SDK DLL#20
EriaWalker wants to merge 1 commit into
HakuSystems:mainfrom
EriaWalker:main

Conversation

@EriaWalker

@EriaWalker EriaWalker commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Bundle the Everything SDK DLL

Summary

This change bundles the x64 Everything64.dll with the Windows application.
The application uses the bundled DLL before it starts Everything search.
The application does not download an SDK DLL at runtime.

Cause

The old code downloaded Everything-SDK.zip from a mutable URL.
The code compared the downloaded DLL with an old fixed SHA-256 value.
Voidtools changed the DLL in the archive.
The hash check then rejected the official DLL.
Current Installation is Invalid.

Changes

  • Add the pinned x64 DLL to ThirdParty/EverythingSdk.
  • Copy the DLL to the build and publish output root.
  • Validate the pinned DLL with SHA-256 81B5BE18126ACD2C2B913F8F4A821E476B18393CDD3DEBD03387C50AFD8DB88F.
  • Stop the runtime download path when the bundled DLL is missing.
  • Add a test that confirms the missing-DLL path does not download a file.

Code Changes

  1. EasyExtractCrossPlatform.csproj now treats Everything64.dll as publish content.
  2. The project copies the DLL to the executable directory for build and publish output.
  3. EverythingSdkBootstrapper now uses the bundled DLL before it starts Everything search.
  4. The bootstrapper no longer uses the AppData SDK cache or calls the download path.
  5. The bootstrapper throws a clear missing-file error when the bundled DLL is absent.
  6. The SHA-256 value for Everything64.dll now matches the bundled DLL.
  7. The tests now check the bundled DLL path and the no-download failure path.
  8. .gitignore allows Git to track this one third-party DLL.

Verification

  • dotnet test EasyExtractUnitypackageRework/EasyExtractCrossPlatform.Tests/EasyExtractCrossPlatform.Tests.csproj --configuration Release --no-build
  • Result: 202 tests passed.
  • dotnet publish EasyExtractUnitypackageRework/EasyExtractCrossPlatform/EasyExtractCrossPlatform.csproj --configuration Release --runtime win-x64 --self-contained
  • The publish output and the Velopack .nupkg include Everything64.dll with the pinned hash.

Notes

The DLL comes from the Voidtools Everything SDK archive verified on 2026-08-22.
The DLL size is 89.2 KB.

Copilot AI lite review requested due to automatic review settings August 21, 2026 22:23

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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@EriaWalker EriaWalker changed the title fix(search): bundle pinned Everything SDK DLL bug-fix(search): bundle Everything SDK DLL Aug 21, 2026
@HakuSystems

Copy link
Copy Markdown
Owner

Merged and shipped in V2.10.3. GitHub shows this as closed rather than merged because it went in as a squash on main (614a9b8) alongside three follow-ups, but the change is yours and the commit credits you.

Thanks for finding this one. I verified it independently before merging: pulled Everything-SDK.zip from voidtools and the current Everything64.dll hashes to 81B5BE18... at 91,304 bytes, which matches both your constant and the DLL you committed byte for byte. The old C7AB8B47... really is dead.

Three things I added on top:

  • fix(packaging) e5014b4 - the Content item had no condition, so the linux-x64 and osx-arm64 publish jobs were shipping a Windows native library. It is now scoped to non-Linux, non-macOS runtime identifiers.
  • test(search) fa49430 - a guard test that hashes the bundled DLL from the build output through the bootstrapper's own validation. The pin and the file both live in this repo now, so nothing stopped them from drifting apart silently. Verified it bites by flipping one byte.
  • refactor(search) 92ba2af - removed the download machinery your comment left in place. The retry ladder, the staged-file promotion, the temp sweep and the static HttpClient were all unreachable, and unreachable code that fetches a native library and loads it into the process is worth deleting rather than annotating.

One note for #21: it branches off this work, and EverythingSdkBootstrapper.cs and its tests changed a lot on main since. You will want to rebase before we look at it. I left review comments there.

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.

3 participants