DAC と PRI リソースについて

English Follow (Added at 2-Feb).

以前に Desktop App Converter で変換したアプリで、スケーリング対応アセットを使用する方法を解説しました。先週頃(1/23の週)に DAC アプリが、バージョン 1.0.6 にアップデートされました。ドキュメント上は、Icon Extraction とクリーン アップの向上、バグ対応とだけ記載されていますが、使ってみて大きな変更点と言えるのが、提供されるアイコンなどのリソースの扱い方が変更されたことです。具体的には、次のような変更が行われています。

  • アイコンの種類が大幅に増えたこと
    AppLargeTile.scale-xxx.png, AppList..scale-xxx.png,
    AppMedTile.scale-xxx.png, AppSmallTile.scale-xxx.png,
    AppWideTile.scale-xxx.png,
    AppStoreLogo.scale-xxx.png, AppList.targetsize-xxx.png,
    scale は、100、125、150、200、400 の 5 種類で
    targetsize は、16、24、32、48、256 で通常と altform-unplated の 2 種類のために 10 種類になっています。エントリー ポイントの実行ファイル (EXE) にアイコン リソースが含まれていると、アイコン リソースから自動生成されます。
  • スケーリング対応による AppxManifest.xml への影響
    Resource 要素の uap:Scale に 100、125、150、200、400 を定義。
    各種のアセット名は、スケーリング対応(ファイル名に scale-xxx や targetsize-xxx を含まない)。
    uap:DefaultTile 要素が追加されました。
    uap:ShowNameOnTiles 要素が追加されました。
  • -MakeAppx オプションを指定した場合に、 PRI を自動生成。
    resources.pri、resources.scale-100.pri、
    resources.scale-125.pri、resources.scale-150.pri、
    resources.scale-200.pri の 5種類が パッケージ ルートに追加されます。
    -MakeAppx オプションを指定しない場合でも、スケーリング対応アセットになっているので、Appx の作成時には PRI を作成する必要があります。

-MakeAppx オプションを指定しない場合

-MakeAppx オプションを指定しない場合は、次の2種類の対応が考えられます。

  • スケーリング対応アセットを使用しない。
  • PRI リソースを自分で作成する。

スケーリング対応アセットを使用しない場合は、使用されるアセットに応じて AppxManifest.xml を書き換えます。つまり、存在するファイルに書き換えることで、今までと同じようにするということになります。

PRI リソースを自分で作成するには、幾つかの作業を行う必要があります。大まかには、次のような作業が必要になります。

  1. PRI 設定ファイルの作成
  2. MakePri.exe ユーティリティを使って、PRI ファイルを作成します。
  3. パッケージ レイアウトに作成した PRI リソースを配置します。
  4. MakeAppx.exe ユーティリティに「/l」(エル)オプションを指定して、Appxを作成します。
    /lオプションが無いと、AppxManifest.xml に指定したファイル名が存在しないというエラーになります。

PRI ファイルを簡単に作成するには、-MakeAppx オプションの動作と同じにすることが考えられます。この作業のためには、次の手順に従って PriConfig.xml と layout.resfiles の 2 つのファイルを用意しておきます。

  1. [スタート メニュー]-[Desktop App Converter] を起動します。
  2. タスク マネージャーを起動します。
  3. タスク マネージャーで「DACTileLauncher.exe」のコンテキスト メニューから[ファイルの場所を開く]をクリックします。
  4. 「icon_extract」フォルダを開き、 PriConfig.xml と layout.resfiles を作業用のフォルダにコピーしておきます。
    コピーした PriConfig.xml と layout.resfiles は、どこかに原本として保管してください。DAC で変換した場合に、何度も使用するからです。
    PriConfig.xml と layout.resfiles の場所は、DesktopAppConverter.ps1 のスクリプトに記述されています。

作業フォルダですが、次のような構造になっていると仮定します。

  • C:\DAC  作業用のルート フォルダ
  • C:\DAC\VLC  DACに指定したパッケージ名のフォルダで、次のサブ フォルダが作成されています。
    PackgeFiles  DAC が出力した Appx レイアウトのフォルダ
    logs  DAC が出力したログ用のフォルダ

「C:\DAC\VLC」フォルダに、PriConfig.xml と layout.resfiles をコピーします。PriConfig.xml の layout.resfiles の指定を「..\layout.resfiles」のように書き換えます。この理由は、root 属性に指定されている「\」が Appx レイアウトのルートを意味していることから、layout.resfiles を配置したパスに指定するためです。

この作業ができたら、コマンド プロンプトを開いて、「C:\DAC\VLC」フォルダをカレント フォルダにして、次の MakePri.exe コマンドを入力します。

MakePri.exe new /pr .\PackageFiles /cf .\PriConfig.xml /o

このコマンドで「C:\DAC\VLC」フォルダに、resources.pri、resources.scale-100.pri、resources.scale-125.pri、resources.scale-150.pri、resources.scale-200.pri の 5 つの PRI ファイルが作成されます。この 5 つの PRI ファイルを PackageFiles フォルダへコピーします。

PRI ファイルのコピーができれば、MakeAppx.exe ユーティリティを使って Appx を作成します。

MakeAppx.exe pack /d .\PackageFiles /p VLC.appx /l

MakePri.exe ユーティリティを使う時の注意点としては、次のような点があります。

  • アイコン アセットのファイル名を変更した時には、Resources.pri を作り直す必要があります。
  • Resources.pri を作り直す時は、Appx レイアウト フォルダにコピーした PRI ファイルを削除しておきます。
    MakePri.exe ユーティリティの規定の動作が PRI リソースのマージになっているためです。マージ動作では、変更されていないリソースがあると重複のエラーが発生します。

逆を言えば、アイコン アセットのファイル名を変更しないで、ファイルだけを置き換える場合は、Resources.pri を作り直す必要がないことになります。

-MakeAppx オプションを指定する場合

簡単なのは、PackageFiles\Assets フォルダ内のファイル名を同じにして、ファイルを入れ替えて、本番用のアイコン アセットにすることです。このようにした場合は、MakeAppx.exe ユーティリティに「/l」(エル)オプションを指定して、Appxを作成するだけで済みます。もちろん、ファイル名などを変更する場合は、-MakeAppx オプションを指定しない場合で説明したように、MakePri.exe ユーティリティを使って Resources.pri を作成し直す必要があります。


English Version

Subject: About DAC and PRI Resources

Desktop App Converter updated at last week as 30-Jan. So DAC version became v1.0.6. This version include new features.

  • Auto generate the Icon Assets from Icon resource of executable file.
    AppLargeTile.scale-xxx.png, AppList..scale-xxx.png,
    AppMedTile.scale-xxx.png, AppSmallTile.scale-xxx.png,
    AppWideTile.scale-xxx.png,
    AppStoreLogo.scale-xxx.png, AppList.targetsize-xxx.png,
    Kind of scale is 100,  125, 150, 200 and 400.
    Kind of targetsize is 16, 24, 32, 48, 256. So two type is targetsize-xxx and taregetsize-xxx_altform-unplated.
  • Support scaling assets in AppxManifest.xml.
    Add uap:Scale, 100 and 125 and 150 and 500, in Resources element.
    Add uap:DefaultTile.
    Add uap:ShowNameOnTiles element.
  • Auto generate PRI resources with -MakeAppx option.
    Appx package include resources.pri, resources.scale-100.pri, resources.scale-125.pri, resources.scale-150.pri, resources.scale-200.pri.
    If not use -MakeAppx option, you must create PRI resources. Because the assets became scaling assets.

No -MakeAppx option

You chosen one from follow selection.

  • Not use scaling assets.
  • You create PRI resources.

When chosen not use scaling assets, you must modify AppxManifest.xml as existing assets file name. So it's same way as previous DAC version.

When chosen "create PRI resources", work sequence is follow.

  1. Create PRI configuration file.
  2.  Create PRI resources with MakePri.exe.
  3. locate PRI resources in Appx Package layout.
  4. Create appx package by using MakeAppx.exe with /l option.
    If not use /l option, MakeAppx.exe report error as no exist assets file name.

I think how to easy create PRI resources. So it's same way as DAC v1.0.6. This way is following steps.

  1.  Launch [Desktop App Converter] in Start menu.
  2. Launch Task Manager.
  3. Select DACTileLauncher.exe on Task Manager, then open context menu and select "Open file location".
  4. Open icon_extract folder in Windows Explorer, copy PriConfig.xml and layout.resfiles to your work folder.
    This two files, when create appx packge, you modify it.

I think that work folder structure is follow.

  • C:\DAC             :root folder of work folder.
  • C:\DAC\VLC   :it's DAC's output folder.
    PackgeFiles      :Appx layout folder.
    logs                    :DAC's log files folder.

You copy PriConfig.xml and layout.resfiles to C:\DAC\VLC folder. So modify PriConfig.xml from "layout.refiles" to "..\layout.resfiles". Because "\" of root element mean Appx Layout root folder, need to become relative path of layout.resfiles.

Then open command prompt, set current folder to C':\DAC\VLC, input follow a command.

MakePri.exe new /pr .\PackageFiles /cf .\PriConfig.xml /o

This command output is "resources.pri" and "resources.scale-100.pri" and "resources.scale-125.pri" and "resources.scale-150.pri" and "resources.scale-200.pri". You must copy this 5 files to PackageFiles folder.

After copied 5 pri files, create appx package with MakeAppx.exe.

MakeAppx.exe pack /d .\PackageFiles /p VLV.appx /l

Notice using MakePRI.

  • When change assets file name, you must re-create PRI resources.
  • When re-create PRI resources, you must delete exist PRI files. Because MakePri default  is merge mode. The merge mode report error as duplicate resources.

Of course, no change assets file name and replace assets files, not need to re-create PRI resources.

I added English version at 2-Feb.