initial commit
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
# Windowsビルドと未検証項目
|
||||
|
||||
Windows向けコードと試験を用意したが、Windows SDK・MSVC・Windows版Qtを利用できる環境は今回提供されていない。以下は実装したビルド経路であり、実行済みの手順や動作保証ではない。Windows 11でのコンパイル、実行、隔離攻撃試験、クリーン環境への配置が必要である。
|
||||
|
||||
環境を新規作成する場合、[MicrosoftのWindows 11 Enterprise評価版](https://www.microsoft.com/en-us/evalcenter/evaluate-windows-11-enterprise)は利用登録後の90日評価を案内している(2026-09-19確認)。利用可能なISO・利用条件・必要なアカウントを確認してから専用VMへ導入する。旧Developer VMの英語URLは確認時点で[開発環境案内](https://learn.microsoft.com/en-us/windows/dev-environment/)へ転送され、既成VMの現行配布元としては確認できなかった。Windows VMはまだ作成していない。
|
||||
|
||||
## 必要なもの
|
||||
|
||||
- Windows 11 x64、対応するMSVC x64コンパイラとWindows SDK。`dumpbin`を実行できるDeveloper PowerShellを使用する。
|
||||
- 同じツールチェーン向けのQt 6.11.2。Core、Gui、Network、Qml、Quick、QuickControls2、WebEngineQuick、Xml、LinguistTools、Test、QuickTestと`windeployqt`が必要。Qtの日本語翻訳資源(qtbase_ja.qm、qtdeclarative_ja.qm、または配置ツールが統合したqt_ja.qm)も配置する。
|
||||
- libzip 1.11以上、toml++ 3.4以上、qpdf 12.4.1のCMakeパッケージ。libzip/libqpdfとその依存DLLは同じアーキテクチャ・ランタイムで用意する。
|
||||
- CMake 3.24以上、Ninja、Python 3.12以上。
|
||||
- ビルドしたアプリに対応する公式Microsoft Visual C++ Redistributable。開発機のCRT DLLを自動で収集・再配布する構成にはしていない。
|
||||
|
||||
PDFiumはLinux版と同じ固定コミットのWindows x64成果物を取得する。V8とXFAは無効で、`bin/pdfium.dll`と`lib/pdfium.dll.lib`を使う。取得元とハッシュは [lock](../cmake/pdfium.lock.json) に固定した。
|
||||
|
||||
このWindows providerには、Linuxで検証した[第2候補の描画修正](PDFIUM-CANDIDATE.md)をまだ組み込んでいない。以下は元のproviderでビルド経路を確認する手順であり、修正版の完成手順ではない。Windows用PDFiumへの同修正の適用・ビルド・色とパターンの回帰試験も残っている。Linux用の共有ライブラリーと固定lockをWindowsへ流用しない。
|
||||
|
||||
## 構成・試験・配置
|
||||
|
||||
以下のQtと依存ライブラリの場所を実際の配置先へ置き換える。
|
||||
|
||||
```powershell
|
||||
$env:CMAKE_PREFIX_PATH = "C:/Qt/6.11.2/msvc2022_64;C:/docview-dependencies"
|
||||
python cmake/fetch_pdfium.py --platform windows-x64 --destination .deps/pdfium-windows
|
||||
cmake -S . -B build-win -G Ninja -DCMAKE_BUILD_TYPE=Release -DDOCVIEW_PDFIUM_ROOT="$PWD/.deps/pdfium-windows"
|
||||
cmake --build build-win --parallel 6
|
||||
ctest --test-dir build-win --output-on-failure --output-junit tests.xml
|
||||
cmake --install build-win --prefix "$PWD/build-win/install"
|
||||
& ./build-win/install/bin/docview.exe ./tests/fixtures/pdf/navigation.pdf
|
||||
```
|
||||
|
||||
実機ではQtが使用するGPU・表示環境とChromium sandboxを有効にする。保護を無効にする引数や環境変数で試験を通さない。基礎試験資料は同梱し、追加生成手順は [README](../README.md) に記載した。
|
||||
|
||||
ワーカーのリンク後、`dumpbin`とCMakeのPE依存解析を使い、必要なDLLを実行ファイルの隣へ収集する。未解決依存、異なる内容の同名DLL、大小文字だけが異なる名前はビルド失敗とする。Windows API-setとOSのDLLは収集対象から除外する。特殊な再配布DLLを追加する場合のみ、`DOCVIEW_EXTRA_WORKER_RUNTIME_DLLS`に再配布可否を確認した絶対パスを指定する。
|
||||
|
||||
各`*.exe.runtime.json`は、ワーカー本体と有限個のDLLの名前・サイズ・SHA-256を記録する。起動時には全て照合して個別の一時領域へコピーし、そのコピーにだけAppContainerアクセス権を設定する。DLL更新時に古いDLLとの衝突が出る場合は、依存構成を確認して新しいビルドディレクトリーを用意する。既存の異なるDLLを無条件に上書きしない。
|
||||
|
||||
`cmake --install`はワーカーの一覧とハッシュを再検証し、GUI用Qtプラグイン・QML・WebEngine資源を`windeployqt`で配置する。`--nopatchqt`でQt DLLの変更を止め、明示した`qt.conf`で配置先を指定する。配置後もワーカー依存のハッシュを検証する。これはインストーラー作成、署名、アンインストール、ライセンス告知を完了する処理ではない。[QtのWindows配布手順](https://doc.qt.io/qt-6/windows-deployment.html)
|
||||
|
||||
## Windows固有の試験
|
||||
|
||||
`windows_pipe`は非同期通信、上限、切断と取消、`windows_resources`はhardlink/reparse・名前変更・原子的公開、`windows_worker`は本番LPAC内の要求順序、不正応答、異常終了、原本・兄弟ファイル・設定・通信・子プロセス・余分な継承ハンドル・自身のprofile書込拒否を試す。追加試験用ワーカーは製品installの対象に含めない。GUI試験の履歴と資源は明示した一時保存先を使用する。
|
||||
|
||||
これらはWindowsではまだ実行していない。Linuxでのmanifest生成・コピー試験は合成MZファイルを使うため、PE依存解析やLPACの成立を証明しない。Windowsのフォント代替、profile回収、WebEngine renderer監視、Known Folders、IME、表示倍率、配布については [隔離の実装と残作業](windows-sandbox-port.md) と [受入対応表](VALIDATION.md) を参照する。
|
||||
Reference in New Issue
Block a user