知識マップ: Windowsアプリの1ファイル配布 - シングルバイナリとOS依存の限界

記事「Windowsアプリの1ファイル配布 - シングルバイナリとOS依存の限界」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

Windowsアプリは配布物を1個のEXEへ寄せること自体はかなり可能で、.NETのself-containedやsingle-file・Native AOT、C/C++の静的リンク(/MT)が使えるが、OSバージョンやアーキテクチャ、システムDLL、セキュリティモデルへの依存は残り、対象Windowsへの依存をゼロにはできない。self-containedとframework-dependentは排他的な選択肢で、Native AOTは実質single-fileとして動く代わりに組み込みCOMなどが使えなくなる。WebView2はEvergreenかFixed Versionかでランタイムの提供方法を選ぶ必要があり、WinUI 3はpackaged(MSIX)かunpackagedかでPublishSingleFileの可否が変わる。Shell拡張やドライバーは登録・署名の設計が本題になるため、無理に1EXEへ圧縮するよりapp-local配布のほうが保守しやすいことが多い。

Windowsアプリのシングルバイナリ化の知識マップ配布物を1個にすることとOSへの依存を消すことが別の軸であること、.NETとC/C++それぞれの単一ファイル化手段、WebView2やWinUI 3のようなホスト統合が配布方式そのものを制約することを示す図前提とする両立しない両立しない前提とする前提とする両立しない前提とする利用する利用する両立しない利用する前提とするで構成できるで構成できる両立しない利用する前提とする用いるのは非推奨推奨される対応前提とする利用する前提とするシングルバイナリ化(1ファイル配布)対象Windowsへの依存self-contained発行framework-dependent発行(.NET)Native AOTbuilt-in COM interopsingle-file発行(.NET)CRTの静的リンク(/MT)CRTの動的リンク(/MD)Visual C++ 再頒布可能パッケージUCRT(Universal C Runtime)MSIXパッケージング(packaged)WinUI 3 / Windows App SDKMicrosoft Edge WebView2WebView2 RuntimeEvergreen配布モード(WebView2)Fixed Versionランタイムシェル拡張(エクスプローラー拡張)COM(コンポーネントオブジェクトモデル)ドライバー署名ドライバーパッケージapp-local配布(アプリ隣接配布)

概念間の関係(全22件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

シングルバイナリ化(1ファイル配布)
アプリの配布物を実行ファイル1個にまとめて配ることを指す、Windowsアプリの配布方式。
対象Windowsへの依存
OSバージョン・CPUアーキテクチャ・システムDLL・セキュリティモデルなど、アプリが実行時に前提とする対象Windows側の要素への依存。
self-contained発行
アプリの実行に必要な.NETランタイム一式も一緒に配布する発行形式。
Native AOT
.NETアプリを単一のネイティブバイナリへ事前コンパイルする発行方式。非対応リストにC++/CLIが明記されている。
single-file発行(.NET)
発行時に配布物を1個の実行ファイルへまとめる.NETの発行オプション。
CRTの静的リンク(/MT)
MSVCでUCRT・VC++ランタイムをDLLとしてではなく実行ファイルへ静的にリンクするコンパイラオプション。
CRTの動的リンク(/MD)
MSVCでUCRT・VC++ランタイムを対象機のDLLとして参照するコンパイラオプション。
MSIXパッケージング(packaged)
package identityを持たせてアプリを配布するWindowsのパッケージング形式。
WinUI 3 / Windows App SDK
パッケージング方式(packaged/unpackaged)とランタイム方式(framework-dependent/self-contained)の組み合わせで配布要件が決まる、Windowsデスクトップアプリ向けのUIフレームワーク。
Microsoft Edge WebView2
Chromiumベースのランタイムを使ってWindowsアプリにWeb描画エンジンを埋め込む仕組み。WebBrowserコントロールの完全な差し替え部品ではない。
WebView2 Runtime
WebView2アプリの実行に必要な、Chromiumベースの描画エンジンを提供するランタイム。
Evergreen配布モード(WebView2)
Microsoftが自動更新する共有のWebView2 Runtime1本を全アプリで利用させる配布モード。
シェル拡張(エクスプローラー拡張)
右クリックメニューやアイコン表示など、エクスプローラーへ組み込まれる部品。
ドライバー署名
INFファイルによるインストール定義と署名を含めて成立する、Windowsドライバーの配布・インストールに必要な一連の要件。
ドライバーパッケージ
デバイスドライバーをシステムへ導入するためのパッケージで、通常のアプリ配布方式とは別問題として扱われる。
app-local配布(アプリ隣接配布)
DLLをEXEと同じフォルダーに置き、そのアプリからだけ読み込ませる配布形態。

機械可読データ

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。