前回は、UWPアプリのパッケージである、Appxに関する基礎的な情報を得る方法を紹介したが、今回は具体的にUWPアプリについて調べていくことにしよう。
取り上げるのは「メッセージング」アプリとするが、もちろん、各自の好みで調べていただいて構わない。また、今後のバージョンアップなどで、インストール先フォルダー名などが変わる可能性もある。できるだけバージョンには依存しないように記述しているが、パスを含むコマンドは変更に対応する必要がある。
まずは、インストール先を調べる。Powershell(管理者)で以下のコマンドを実行してみる
(get-appxpackage "*messaging*").installlocation
とすると、インストール先は、
C:\Program Files\WindowsApps\Microsoft.Messaging_4.1901.10241.1000_x64__8wekyb3d8bbwe
であることがわかる。しかし、実際にインストール先フォルダーを調べると名前のよく似た複数のフォルダーがある。
インストール先フォルダーとは、途中部分が違うのみで、先頭と最後の部分が同じだ。これらは、分離されたリソースのフォルダーだ。このうち、「language-ja」という文字列が名前一部にあるフォルダーが日本語関係のリソースを含むフォルダーで、アプリケーションの日本語名はここにある。
アプリケーションの中では、自分自身の日本語表示名は自分のリソースなので簡単に得られ、スタートメニューにタイルを登録したときに表示される日本語名も、アプリ自身がWindowsに通知して表示させている。ときどき「ms-resource:……」という名前のアプリを見かけるが、これは、名前の取り出しに失敗してリソースを指定するURIが表示されているものだ。この場合、UWPアプリが正しく動作できない状態にある。アプリをリセットするか、再インストールすることで、正しく名前を表示できるようになる。
日本語リソースを取り出す
さて、この日本語リソースフォルダーを調べてみよう。
フォルダー内には、4つのファイルがあるが、リソースは、「resources.pri」というファイルに格納されいる。これは、文字列などのリソースをバイナリ化したpri形式なのでこのままでは読めない。幸い、Windows SDKに付属のMakepri.exeというコマンドでpri形式をxml形式に変換することができる。
ただし、そのためには、UWPアプリのインストール先フォルダーにあるresource.priファイルも必要になる(蛇足ながらWindows SDKのインストールも必要である)。具体的には、以下のコマンドで、xml化したリソースが得られる。
makepri.exe dump /if リソースフォルダ\resources.pri /es インストール先\resources.pri /of 出力パス
メッセージングの場合、以下の長いコマンドを使う。
makepri.exe dump /if .\Microsoft.Messaging_4.1901.10241.1000_neutral_split.language-ja_8wekyb3d8bbwe\resources.pri /es .\Microsoft.Messaging_4.1901.10241.1000_x64__8wekyb3d8bbwe\resources.pri /of c:\temp\Microsoft.Messaging.xml
これで、c:\tempにMicrosoft.Messaging.xmlというファイルができる。このあと、ほかのUWPアプリについても調べたいので、このさい、日本語リソースが取り出せるものは、全部取り出してXMLファイルにしておこう。そのためには、C:\temp\appxpriなどのxmlを保存先フォルダーを予め作成しておき、以下のコマンドをPowershell(要管理者権限)で実行する。
Get-AppxPackage -PackageTypeFilter main | foreach { makepri.exe dump /es (Get-ChildItem "$($_.packageFullName)\resources.pri") /if (Get-ChildItem "$($_.name)*-ja*\resources.pri") /of "c:\temp\$($_.name).xml" }
なんのことはない、get-AppxPackageで出力されるAppxパッケージオブジェクトの名前から日本語リソースフォルダーとインストール先フォルダー名を作り、そこにあるresources.priに対して、makepri.exeを実行しているだけだ。
中には日本語リソースフォルダーのないアプリもあるので、途中エラーのようなメッセージが出るが、makepri.exeがエラーでヘルプメッセージを出力しているだけなので問題ない。なお、C:\Program Files\WindowsApps\は、書き込み禁止なので、xmlファイルの保存先(/of)は、必ず書き込み可能なフォルダーを指定しておくこと。
この連載の記事
-
第466回
PC
PowerToysの最近の新機能には、複数アプリを指定位置に起動する「ワークスペース」や新規作成のカスタマイズがある -
第465回
PC
WindowsのPowerShellからBluetoothデバイスを調べる -
第464回
PC
Windows 10のサポート切れまで1年を切った さてWindows 10マシンをどうする? -
第463回
PC
Windows Terminal Preview版でSixelグラフィックスを実際に表示させてみる -
第462回
PC
Windows Terminal Preview版でSixelグラフィックスを扱う -
第461回
PC
Copilot+ PCを買ってみたが、「今焦って買う必要はない」のかもしれない -
第460回
PC
Windowsでsftpを使う -
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた -
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ - この連載の一覧へ