Office Deployment Tool(ODT)で不要アプリを除外する XML は、<Product> の中に ExcludeApp を書けば作れます。結論からいうと、新規導入なら Product ID + Language + ExcludeApp の最小構成で十分ですが、既存端末の再構成では MatchInstalled と現在の除外一覧を意識しないと、入れたくないアプリが戻ったり、想定外の更新や失敗につながります。 (Microsoft Learn)
この記事では、Office Deployment Toolで不要アプリを除外するXML例をそのまま使える形で示しつつ、どの XML をどの場面で選ぶべきか、Outlook と OutlookForWindows の違い、OneDrive/Groove の扱い、Teams や Visio/Project でつまずきやすい点まで整理します。 (Microsoft Learn)
XMLを書く前に決めること
まず決めるのは、「どのライセンスの Office を入れるか」と「新規導入か、既存端末の変更か」です。ここが決まると、Product ID、Language、Version/Channel の書き方がほぼ自動で決まります。 (Microsoft Learn)
| 確認項目 | 新規導入 | 既存端末の再構成 |
|---|---|---|
| Product ID | 契約に合う ID を選ぶ | 既存と同じ製品 ID を使う |
| Language | ja-jp などを明示 | MatchInstalled を優先 |
| Version / Channel | 標準チャネルに合わせる | 版数維持なら Version="MatchInstalled" を使う |
| 除外対象 | 必要な ExcludeApp だけ書く | 以前から除外しているアプリも書き残す |
代表的な Product ID は次のとおりです。Product ID を誤るとライセンス認証できないため、ここだけは最初に確認してください。 (Microsoft Learn)
| 契約・製品 | Product ID 例 |
|---|---|
| Microsoft 365 Apps for enterprise / Office 365 E3・E5 / Microsoft 365 E3・E5 | O365ProPlusRetail |
| Microsoft 365 Apps for business / Business Standard / Business Premium | O365BusinessRetail |
| Teams なしの一部プラン | O365ProPlusEEANoTeamsRetail / O365BusinessEEANoTeamsRetail |
| Office LTSC 2021 / 2024 | ProPlus2021Volume / ProPlus2024Volume |
単体の Word、Excel、Outlook、Visio、Project 2021/2024 用の Product ID も別に用意されています。つまり、「スイートを入れて大量に除外する」以外の設計も選べます。 (Microsoft Learn)
以下の XML 例は SourcePath を省いた CDN 直インストール前提です。社内共有から配布したい場合だけ、<Add> に SourcePath="\\\\server\\share" を足してください。SourcePath を省くと、ODT はまず ODT と同じフォルダーを見て、なければ CDN を使います。 (Microsoft Learn)
Office Deployment Toolで不要アプリを除外するXML例
ODT の適用は setup.exe /configure config.xml が基本です。事前にローカルソースを作る運用なら setup.exe /download config.xml を併用します。 (Microsoft Learn)
新規インストールで Publisher だけ除外する最小構成
<Configuration>
<Add OfficeClientEdition="64" Channel="MonthlyEnterprise">
<Product ID="O365ProPlusRetail">
<Language ID="ja-jp" />
<ExcludeApp ID="Publisher" />
</Product>
</Add>
<Display Level="None" AcceptEULA="TRUE" />
</Configuration>
「Microsoft 365 Apps for enterprise を入れるが Publisher だけ不要」というケースなら、この形がいちばん分かりやすいです。Business Standard / Business Premium 系なら、Product ID を O365BusinessRetail に置き換えて使います。Display Level="None" は無人展開向き、AcceptEULA="TRUE" はライセンス条項の確認ダイアログを出さない設定です。 (Microsoft Learn)
Access・Publisher・Teams・新しい Outlook をまとめて外す
<Configuration>
<Add OfficeClientEdition="64" Channel="MonthlyEnterprise">
<Product ID="O365ProPlusRetail">
<Language ID="ja-jp" />
<ExcludeApp ID="Access" />
<ExcludeApp ID="Publisher" />
<ExcludeApp ID="Teams" />
<ExcludeApp ID="OutlookForWindows" />
</Product>
</Add>
<Display Level="None" AcceptEULA="TRUE" />
</Configuration>
部門端末向けに「Access は不要」「Teams は別管理」「新しい Outlook はまだ入れたくない」といった条件があるなら、このように ExcludeApp を並べます。ここでの OutlookForWindows は新しい Outlook アプリを指します。従来の Outlook も外したいなら、別途 ExcludeApp ID="Outlook" を追加します。 (Microsoft Learn)
既存インストールから Access を外し、言語と版数を崩したくない場合
<Configuration>
<!-- Channel は既存端末と同じ値に合わせる -->
<Add Channel="MonthlyEnterprise" Version="MatchInstalled">
<Product ID="O365ProPlusRetail">
<Language ID="MatchInstalled" TargetProduct="All" />
<ExcludeApp ID="Access" />
<ExcludeApp ID="Publisher" />
</Product>
</Add>
<Display Level="None" AcceptEULA="TRUE" />
</Configuration>
既存端末の再構成では、この書き方がいちばん事故を減らしやすいです。Version="MatchInstalled" で今の版数を保ち、Language ID="MatchInstalled" TargetProduct="All" で既存言語を引き継ぎます。重要なのは、以前から除外しているアプリも書き残すことです。この例で Publisher を残しているのはそのためです。なお Version="MatchInstalled" を使う場合は Channel が必須なので、MonthlyEnterprise の部分は実際の端末に合わせて変更してください。 (Microsoft Learn)
Visio や Project だけ追加したいなら、スイートに大量の除外を書かない
<Configuration>
<!-- 既存の Office と同じ Channel に合わせる -->
<Add Channel="MonthlyEnterprise" Version="MatchInstalled">
<Product ID="VisioProRetail">
<Language ID="MatchInstalled" TargetProduct="All" />
</Product>
</Add>
<Display Level="None" AcceptEULA="TRUE" />
</Configuration>
「Visio だけ後から足したい」「Project だけ追加したい」なら、Office スイートを選んで不要アプリを大量に外すより、Visio / Project を別 Product ID で入れるほうが保守しやすいです。Microsoft の Project / Visio 展開ガイドでも、Office Customization Tool では Office Suite を空にして対象製品だけを選ぶ方法が案内されています。Project の場合は ProjectProRetail などに置き換えます。 (Microsoft Learn)
よく使う ExcludeApp ID 一覧
よく使う ExcludeApp の ID をまとめると次のとおりです。 (Microsoft Learn)
| 除外したいもの | ID | 補足 |
|---|---|---|
| Access | Access | Access を入れない |
| Excel | Excel | 共有端末や専用端末向け |
| OneNote | OneNote | OneNote を不要にしたいとき |
| Outlook(従来版) | Outlook | classic Outlook |
| 新しい Outlook | OutlookForWindows | new Outlook アプリ |
| PowerPoint | PowerPoint | プレゼン用途が不要な端末向け |
| Publisher | Publisher | よく除外対象になる |
| Teams | Teams | Teams を別管理にしたいとき |
| Word | Word | 文書作成を許可しない端末向け |
| Skype for Business | Lync | ID は Lync を使う |
| OneDrive 系 | OneDrive / Groove | 文脈により使い分けが必要 |
特に混同しやすいのが Outlook と OutlookForWindows、そして OneDrive と Groove です。OutlookForWindows は新しい Outlook を指します。一方、OneDrive 系は Microsoft Learn の概要記事に ExcludeApp ID="OneDrive" の例がある一方で、構成オプションでは「OneDrive には Groove を使う」という注記があり、旧 OneDrive for Business 同期クライアント(Groove.exe)を扱う SharePoint のドキュメントでは ExcludeApp ID="Groove" が明示されています。XML を使い回す前に、「新しい OneDrive 本体を外したいのか」「旧 Groove.exe を外したいのか」を切り分けるのが安全です。 (Microsoft Learn)
どの運用に向いているか
運用ごとに、向く書き方は変わります。迷ったら次の基準で選ぶと外しにくいです。 (Microsoft Learn)
| やりたいこと | 向く方法 | 理由 |
|---|---|---|
| Microsoft 365 Apps の標準スイートから数個だけ外したい | スイートの Product ID + ExcludeApp | サブスクリプション版の基本形 |
| 既存端末から後追いで Access だけ外したい | 同じ Product ID + MatchInstalled | 版数・言語のズレを避けやすい |
| Visio / Project を後から追加したい | 単体 Product ID を追加 | 大量の除外を書くより保守しやすい |
| Word / Excel / Outlook 2021/2024 を単体で配りたい | 単体製品の Product ID を使う | そもそも ExcludeApp で引く設計にしなくてよい |
| Teams を最初から含めないプランを使っている | no-Teams の Product ID を確認する | XML を単純化しやすい |
ポイントは、「入れた後に引く」より「最初から別製品として入れる」ほうが管理しやすい場面があることです。Visio / Project や Office 2021/2024 の単体アプリは、その代表例です。 (Microsoft Learn)
失敗しやすいポイント
既存端末の再構成は MatchInstalled を軸にする
既存端末に ExcludeApp を再適用するとき、結果は言語一覧で変わります。構成ファイルに既存の全言語が含まれていれば、新しい ExcludeApp 設定が以前の設定を上書きします。全言語を含んでいなければ、既存設定と結合されます。つまり、既存端末に対して固定の ja-jp だけを書いた XML を軽く流すと、思った通りにならないことがあります。既存端末では Language ID="MatchInstalled" TargetProduct="All" を基本にし、版数も維持したいなら Version="MatchInstalled" を使うほうが安全です。なお MatchInstalled は既存のクイック実行製品がある場合にだけ使え、/download では使えません。 (Microsoft Learn)
「今回外したいアプリ」だけを書くと、前の除外が戻ることがある
既存端末の XML を差分ファイルのつもりで書くと失敗します。Microsoft の Teams 展開ガイドでは、既存インストールで他のアプリをすでに除外している場合、それらの ExcludeApp 行も configuration.xml に含めないと、そのアプリがインストールされると明記されています。既存端末向け XML は「今後の理想状態」を表すもの、と考えると分かりやすいです。 (Microsoft Learn)
ビット数変更は、アプリ除外と同時にやらない
既存端末で OfficeClientEdition を明示する場合、その値は現在のビット数と一致していなければ失敗します。意図的に 32 ビットから 64 ビットへ変えるなら MigrateArch="True" を使う別作業として扱うべきです。単に Access や Publisher を外したいだけなら、OfficeClientEdition は省略して既存構成に合わせるほうが安全です。 (Microsoft Learn)
Teams・Outlook・OneDrive は、名前が似ていても制御対象が違う
Outlook は従来版 Outlook、OutlookForWindows は新しい Outlook です。Teams も少し厄介で、Microsoft は一部の Online Repair で Teams がインストールされる場合があると案内しています。さらに、ユーザーに Office ポータルからの自己インストールを許している場合、ODT だけでは Teams 同梱を止められないケースがあり、必要なら Group Policy も併用します。アプリ名が似ているからといって同じ設定で制御できるわけではありません。 (Microsoft Learn)
Project / Visio と多言語運用は、OCT の出力を一度見直す
Office Customization Tool は XML 作成をかなり楽にしてくれますが、Project / Visio ではサポートされない言語を選べてしまう既知の問題があり、そのままだとインストール失敗につながることがあります。また、MatchOS や MatchInstalled を使う多言語運用では、ローカルソースに必要な言語パックが無いと失敗するため、Microsoft はフォールバック言語と AllowCdnFallback="True" の利用を勧めています。 (Microsoft Learn)
検証中は Level="Full"、本番で Level="None" に切り替える
Display Level="None" は無人展開では便利ですが、進行状況も完了画面もエラーメッセージも表示しません。検証フェーズでこれを使うと、失敗したときの切り分けが遅れます。パイロットでは Level="Full" にして挙動を確認し、本番展開で None に戻すほうが実務的です。なお setup.exe /configure の実行にはローカル管理者権限が必要です。 (Microsoft Learn)
迷ったらこの順で作る
- 使うライセンスに合う
Product IDを確定する。 - 新規導入か既存端末の再構成かを分ける。
- まずは Office Customization Tool でベース XML を作る。
- 既存端末なら
MatchInstalledと、現在も除外しておきたいアプリ一覧を反映する。 - パイロット端末 1 台で
setup.exe /configure config.xmlを実行し、結果を確認する。 - 問題がなければ
Display Level="None"にして全体展開する。
Microsoft も、手書き XML は可能だが、構成ファイルの作成と編集には Office Customization Tool の利用を推奨しています。XML をゼロから書くより、OCT で土台を作ってから ExcludeApp や MatchInstalled だけ調整するほうが、記述ミスを大きく減らせます。 (Microsoft Learn)
まとめ
Office Deployment Toolで不要アプリを除外するXML例はシンプルですが、実務の分かれ目は XML の長さではなく、Product ID を正しく選ぶこと、既存端末では MatchInstalled を使うこと、そして以前の除外設定を書き漏らさないことです。新規導入なら Product ID + Language + ExcludeApp の最小構成、既存端末の再構成なら Version="MatchInstalled" と Language ID="MatchInstalled" TargetProduct="All"、Visio / Project や単体アプリ追加なら別 Product ID を使う、という整理で考えると迷いません。次にやるべきことは、OCT でベース XML を作り、まず 1 台で検証してから全体展開に進むことです。 (Microsoft Learn)

コメント