開発者の環境変数 PATH に依存せず、MSVC ツールチェーンだけで完結する「自己完結型(Hermetic)」のビルド構成を実現する。具体的には、実行に必要な DLL(特に WebView2Loader.dll)をビルドツリーから自動検出し、実行バイナリと同じディレクトリに集約する。
build.rs の強化Rust のビルドスクリプトを拡張し、以下の処理を自動化:
target ディレクトリ全体をスキャンし、ターゲットアーキテクチャ(x64)に合致する WebView2Loader.dll を特定。target/debug および target/debug/deps へ物理的にコピー。bin/ ディレクトリ内の全 DLL も同様に集約。Cargo.toml において rusqlite と libsqlite3-sys の bundled フィーチャーを明示的に有効化。sqlite3.dll との ABI 衝突を根本から排除。prepare-resources.cjs において、バイナリディレクトリから sqlite3.dll を除外。graph TD
subgraph Build Space
Target[target/debug/build/...]
Bin[bin/*.dll]
end
subgraph Execution Space
Exe[telos-db.exe]
DLLs[*.dll]
end
BuildRS[src/backend/build.rs]
Target -- "Scan & Find (x64)" --> BuildRS
Bin -- "Copy All" --> BuildRS
BuildRS -- "Aggregate" --> DLLs
Exe -. "Load First" .-> DLLs
target/debug ディレクトリを削除した状態からのクリーンビルドで、WebView2Loader.dll が自動的に telos-db.exe の隣に配置されることを確認。PATH の最優先ディレクトリに MinGW 版 DLL が存在しても、アプリケーションは正しい(MSVC 版)DLL をロード可能となった。本対応により、Windows 環境における DLL 地獄(ABI 衝突)の問題が解消され、開発者ごとに異なる環境変数設定に左右されない、堅牢なビルド構成が完成した。