Windowsアプリ配布方式の選定ガイド

· · Windows, 配布, MSI, MSIX, ClickOnce, xcopy, updater

配布方式の選択は「どれが簡単か」ではなく、OS にどこまで触るか更新責任を誰が持つかの選択です。

ざっくりした判断:

  • OS への登録が濃い → MSI
  • package identity と modern packaging → MSIX
  • per-user の簡単配布と自動更新 → ClickOnce
  • 置くだけ配布が最優先 → xcopy
  • 更新基盤を自社で設計運用する覚悟がある → 独自 updater

5つの方式は同じ土俵ではない

MSI / MSIX / ClickOnce / xcopy は主にどう入れるかの話。独自 updater は主にどう更新責任を持つかの話。2層に分けて考えます:

主な候補 決めること
初回導入 MSI / MSIX / ClickOnce / xcopy 配置場所、登録内容、権限、アンインストール
継続更新 MSIX / ClickOnce / 手動差し替え / 独自 updater 更新確認、配信元、署名検証、ロールバック

独自 updater は、既存の配布方式で足りない更新要件があるときに追加で選ぶものです。

一枚で見る判断表

状況 まず選ぶもの 理由
全ユーザー向け、サービスやCOM登録あり MSI Windows Installer の土俵が自然
Win10/11前提、clean install、頻繁更新 MSIX modern packaging と更新モデル
.NET社内業務アプリをper-userで簡単配布 ClickOnce built-in 更新が使いやすい
置くだけで動くツール、閉域、USB配布 xcopy インストールの概念を持ち込まない
商用製品で更新UXを自前で握りたい 独自 updater built-in 更新より自由度が高い
ドライバが必要 MSI 寄り driver package は別問題
in-process shell extension が必要 MSI 寄り MSIX と相性が悪い

各方式の詳細

MSI

  • 向いている案件: 全ユーザー向け業務アプリ、Windows サービス含む、COM 登録あり
  • 強み: アプリの導入状態を Windows の流儀で表現できる
  • 弱み: authoring が難しい、高頻度更新では重くなりがち

MSIX

  • 向いている案件: Win10/11前提、更新頻度高め、package identity が必要
  • 強み: 更新とアンインストールがきれい
  • 弱み: shell extension、ドライバ、古い Win32 前提は不向き

ClickOnce

  • 向いている案件: .NET 社内向け、per-user、標準ユーザーで導入
  • 強み: built-in 更新モデルが簡単
  • 弱み: OS へ深く触るタイプには不向き

xcopy

  • 向いている案件: 診断ツール、設定ツール、ログ収集、USB 配布
  • 強み: 失敗の仕方が分かりやすい。フォルダごと差し替えで済む
  • 弱み: スタートメニュー登録、サービス、自動更新がない

独自 updater

  • 向いている案件: 更新頻度が高い、チャネル配信、段階ロールアウト制御
  • 強み: 自由度が高い
  • 弱み: 署名検証、再試行、ロールバック、proxy 対応、updater 自身の更新まで責任が増える

観点別の比較

観点 MSI MSIX ClickOnce xcopy 独自 updater
per-user 導入
per-machine 導入 ×
built-in 更新 ×
サービスとの相性 × ×
ドライバとの相性 × × ×
shell extension × × ×
閉域・オフライン
実装・運用コスト ×

迷ったときに見る6つの質問

  1. そのアプリは current user だけでよいか、machine-wide か
  2. service / driver / shell extension / COM 登録はあるか
  3. package identity が必要な Windows 機能を使うか
  4. 標準ユーザーだけで導入したいか
  5. 更新頻度は月次か、週次か、もっと高いか
  6. 対象環境は閉域か、OS バージョンは揃っているか

まとめ

  • 初回導入をどう成立させるか継続更新を誰が責任を持って回すかを分けて決める
  • driver / shell extension / service があるなら、OS 統合の方式から決まる
  • 独自 updater は最後の切り札であり、最初の選択肢ではない
  • 閉域では賢さより単純さが勝つことが多い

迷ったら、まず per-user か per-machine かOS へ何を登録するか更新頻度はどのくらいかの3つを固定しましょう。

参考資料

関連する記事

同じタグを共有する最新の記事です。さらに近い話題で知識を深められます。

ClickOnce 入門:配布・更新・選定基準

ClickOnce の仕組みと向き不向きを実務目線で整理します。マニフェスト、自動更新、キャッシュ分離、署名、配布経路の注意点に加え、社内業務アプリで強い理由と MSI/MSIX が適するケースの見分け方が分かります。

記事を読む

自動アップデートのセキュリティ設計

Windows アプリの自動アップデートを単なる便利機能ではなく信頼境界として設計するための要点を整理します。HTTPS だけでは守れない理由、署名付き metadata、クライアント側検証、鍵分離、fail-closed と rollback まで一通り把握できます。

記事を読む

Windows管理者特権の必要/不要の境界

Windowsで管理者特権が必要になる場面を、UAC、保護領域、サービス、ドライバ、per-user/per-machine 配布の観点で整理し、無駄な昇格を減らす設計の見分け方と典型例、よくある誤解までを実務向けにまとめます。

記事を読む

Windowsシングルバイナリ化の限界と実践

Windows アプリを 1 EXE にしたいときの「配布物を 1 個にする」と「OS 依存を消す」の違いを、.NET、C++、WebView2、WinUI、サービス、ドライバまで段階別に整理し、技術選定と配布設計の判断軸が分かります。

記事を読む

関連トピック

このテーマと近いトピックページです。記事を起点に、関連するサービスや他の記事へ進めます。

このテーマがつながるサービス

この記事は次のサービスページにつながります。近い入口からご覧ください。

ブログ一覧に戻る