このページの本文へ

前へ 1 2 次へ

Windows Info第186回

Windows 10に標準搭載のUWPアプリについて調べた

2019年08月19日 10時00分更新

文● 塩田紳二 編集● ASCII編集部

  • この記事をはてなブックマークに追加
  • 本文印刷

 Windows 10には電卓などの標準搭載のアプリケーションが用意されている。これらの多くはUWP化されているが、スタートメニューの「Windowsアクセサリ」などにWin32アプリも置かれている。このうちUWP標準アプリは、Ver.1803(RS4)あたりから、アンインストールが可能なものが増えてきた。スタートメニューの上で右クリックすると、メニュー項目にアンインストールが表示される。基本的には、これで削除するのが安全だ。

PowerShellのコマンドからAppxのパッケージを削除可能だ。中にはMicrosoftストアからは回復ができないパッケージもあり、さすがに実機で実行する勇気はないので、Windowsサンドボックス内で試した

UWPアプリの一覧を調べる

 しかし、UWP標準アプリの中には、スタートメニューに表示されないものも少なくない。そこで、今回は標準搭載のUWPアプリについて調べた。

 PowerShellのAppx関連のコマンドについては、本連載で以前解説した(「Windows 10のUWPアプリのインストール状態をコマンドラインで調べる」)。

 今回はこの記事を読んでいただいたことを前提に、この記事で紹介したコマンドの使い方などは省略して話を進める。

 Windows10とともにインストールされるAPPXパッケージ(これをProvisioned Appx パッケージという)は、「Get-AppxProvisionedPackage」というコマンドで取得できる。

Get-AppxProvisionedPackage -online

get-appxprovisionedpackageコマンドレットでは、標準でインストールされるUWPアプリに関する情報が得られる

 これにより、得られたのが標準搭載のUWPアプリの一覧が下の表だ。

 なお、表にも記したようにここには削除しないほうがいいパッケージも当然あるので十分注意してほしい。原則GUIでアンインストールが可能なものは削除しても問題なく、あとからMicrosoftストアで再インストールが可能だ。

 このGet-AppxProvisionedPackageではインストール前の情報(インストールイメージ)を元に表示を行うものであり、「Microsoft.Dism.Commands.AppxPackageObject」という形式のオブジェクトを出力する。PowerShellでは、コマンドレットの出力オブジェクトの形式などを調べる場合には、「get-member」というコマンドレットをパイプの出力先に置く。

get-appxprovisionedpackageが出力するMicrosoft.Dism.Commands.AppxPackageObjectのプロパティなどは、get-memberコマンドレットで調べることができる

 これに対して現在、インストールされているAPPXパッケージに関しては、get-appxpackageというコマンドがある。特定のパッケージについての情報のみを出力するには、以下のようにして、パッケージ名を指定するが、このとき、ワイルドカード文字である「*」が使え、一部を省略させることができる。たとえば、BingWeather(天気アプリ)なら以下のようになる。

Get-AppxPackage -name "*Weather*"

特定の文字がパッケージ名に含まれるパッケージを探すには、ワイルドカード指定が使える

 ここで、オプションとして「-PackageTypeFilter Bundle,Main」を指定してみると、実はパッケージが2ヵ所にインストールされていることがわかる。

Get-AppxPackage -name "*Weather*" -PackageTypeFilter Bundle,Main

-PackageTypeFilterオプションを指定することで、Bundleパッケージなども調べることができる。似たような名前のインストールフォルダーがあるのは、バージョン違いか、Bundleパッケージによるもの

 このうち、片方はBundleパッケージと呼ばれるものだ。1つのパッケージに2つ以上のインストールパッケージが含まれていて、複数フォルダーにインストールされる。このうち、メイン以外のパッケージがBundleパッケージだ。この複数のパッケージは、NameプロパティとPackageNameプロパティは同一で、Bundleパッケージのほうは、IsBundleというプロパティがTrueになる。

 とりあえずパッケージを扱うレベルでは、Bundleは気にする必要はなく、-PackageTypeFilterもMainのみを指定しておけばよい。ただし、インストール先(InstallLocationプロパティ)を見るような場合には、Bundleパッケージのほうも気に掛ける必要がある。

1つのパッケージ内にアーキテクチャごとに
複数のパッケージが含まれるケースがある

 1つのパッケージに複数のパッケージが含まれるのは、プロセッサ種別(プロセッサーアーキテクチャー)ごとに機械語バイナリーが異なるため、別のパッケージとして分離する必要があり、Micrsoftストアでこれを配布するときに1つのパッケージにしなければならないからだ。

 現在のAPPXでは、 x86/x64/ARM/ARM64とCPUに依存しないNaturalという4つのカテゴリーがある。それぞれCPUとWindowsの組合せで決まる。

 ここでいうアーキテクチャーはCPUの物理的な種類というよりも、実行先の物理的なCPUと環境を意味する。x86とx64は物理的なCPUとしては同一でも、インストールされているWindowsが32bit版か、64bit版で区別される。

 インストール時、CPUアーキテクチャに依存しないNaturalアーキテクチャーが指定されたパッケージがBundleとして含まれていると、インストール先が複数に分かれる。Naturalというプロセッサアーキテクチャーは存在しないが、プログラムが複数のアーキテクチャーで共有可能なデータ(たとえば画像やテキストなど)を含む場合には、これらを仮想的な「Naturalアーキテクチャ」として扱い、実行先アーキテクチャにかかわらず、インストールする。こうすることで、共用するデータなどを複数のサブパッケージに含めなくて済むようにしている。

 さて、このGet-AppxPackageが出力するオブジェクトは、「Microsoft.Windows.Appx.PackageManager.Commands.AppxPackage」(これを以下AppxPackageオブジェクトと表記する)というものになる。

AppxPackageオブジェクトには、このようなプロパティがある

 その出力を見れば、インストール先や種別などを知ることができる。Appx関連のコマンドには、パッケージのアンインストールを行う「Remove-AppxPackage」というコマンドがあるのだが、これが実行可能なのは、AppxPackageオブジェクトの「NonRemovable」というプロパティがFalse(偽)になっているもののみで、True(真)となっているパッケージはコマンドからは削除できない。

Get-AppxPackage "*Weather*" | Remove-AppxPackage -AllUser

とすると、パッケージをアンインストール可能だが、利用には十分気をつけてほしい。

前へ 1 2 次へ

この連載の記事

注目ニュース

ASCII倶楽部

最新記事

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン