This repository contains implementation examples for packaging and launching Searchify in different languages.
The goal of each example is the same: deliver installer-style behavior with minimal user setup.
- CSharp-Example
- .NET Framework example using embedded resources and installer-style extraction/launch flow.
- Python-Example
- Python launcher with optional one-file EXE packaging using PyInstaller.
Searchify must run elevated (Administrator/UAC) at least once.
Admin privileges are required for setup operations such as:
- Registry access and registration steps.
- Writing to protected or system-managed paths where needed by setup.
- Installing the required certificate.
The %appdata%\GlobalSearchOptimizer path is an output location to verify, not the reason elevation is required.
After running either example:
- Confirm
%appdata%\GlobalSearchOptimizerexists. - Confirm
Searchify.exeexists in that folder. - Confirm
config.jsonexists in that folder. - Confirm Searchify starts successfully.
Path: CSharp-Example/
- Finds an embedded
Searchify_*.zipresource dynamically. - Extracts the ZIP into a temporary folder.
- Executes the Searchify installer from that extracted location.
The project requests elevation through app.manifest (requireAdministrator).
- Visual Studio with .NET Framework tools
- .NET Framework 4.7.2 targeting pack
- NuGet package restore enabled
- Open
CSharp-Example/Searchify-Example.sln. - Restore NuGet packages.
- Build in Debug or Release.
- Add your ZIP file (for example
Searchify_50.zip) to the project. - Ensure the name matches
Searchify_*.zip. - Set Build Action to Embedded Resource.
- Rebuild.
- The example uses Fody + Costura (
FodyWeavers.xml) for packaging. - Default config values are defined in
CSharp-Example/Program.cs.
Path: Python-Example/
- Locates the newest
Searchify_*.zipfrom runtime locations. - Supports embedded ZIP data (PyInstaller one-file) or local ZIP beside the EXE/script.
- Extracts to a temporary directory.
- Ensures elevated execution via UAC when needed.
- Runs
Searchify.exeonce. - Cleans up extracted temporary files.
py -3 .\Python-Example\searchify_launcher.py.\Python-Example\build_exe.batThe build script:
- Detects the newest
Searchify_*.zip. - Installs PyInstaller if missing.
- Builds
dist\SearchifyLauncher.exeas one file. - Embeds ZIP data into the executable.
pip install pyinstaller
pyinstaller --noconfirm --clean --onefile --name SearchifyLauncher --add-data "Searchify_48.zip;." Python-Example\searchify_launcher.py- Place your ZIP in
Python-Example/. - Name it
Searchify_*.zip(for exampleSearchify_50.zip). - Rebuild (or run directly).
- UAC prompt does not appear:
- Start the launcher manually as Administrator.
- Files are not in
%appdata%\GlobalSearchOptimizer:- Verify the first run actually completed with elevation.
- Build issues in C# example:
- Ensure NuGet restore completed and .NET Framework 4.7.2 targeting pack is installed.
- Build issues in Python example:
- Verify Python 3 and PyInstaller availability.
You can still find original focused documentation here:
These step-by-step guides are also available as PDF.