<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>荒井省三のBlog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/shozoa/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/shozoa/feed.xml</link>
    <description />
    <lastBuildDate>Fri, 25 Jan 2019 20:54:25 GMT</lastBuildDate>
    <language>ja</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>アナウンス</title>
      <link>https://docs.microsoft.com/archive/blogs/shozoa/announce</link>
      <pubDate>Sat, 26 Jan 2019 05:54:25 GMT</pubDate>
      <dc:creator><![CDATA[shozoa]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/shozoa/?p=2775</guid>
      <description><![CDATA[ご無沙汰しております。
本ブログですが、Closeになる予定となっております。公開している記事が必要な方は、保存などをお願いします。
]]></description>
      <content:encoded><![CDATA[ご無沙汰しております。
本ブログですが、Closeになる予定となっております。公開している記事が必要な方は、保存などをお願いします。
]]></content:encoded>
    </item>
    <item>
      <title>デスクトップ ブリッジと VC ランタイムについて</title>
      <link>https://docs.microsoft.com/archive/blogs/shozoa/about-crt-on-desktop-bridge</link>
      <pubDate>Fri, 10 Nov 2017 14:34:28 GMT</pubDate>
      <dc:creator><![CDATA[shozoa]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/shozoa/?p=2766</guid>
      <description><![CDATA[Windows 10 Fall Creators Update がリリースされて、Visual Studio 2017 も Fall Creators Update 対応の 15.4...]]></description>
      <content:encoded><![CDATA[<p>Windows 10 Fall Creators Update がリリースされて、Visual Studio 2017 も Fall Creators Update 対応の 15.4 がリリースされています。今回は、Visual C++ のランタイムと デスクトップ ブリッジの関係を整理します。Visual C++ ランタイムとデスクトップ ブリッジの関係は、<a href="https://docs.microsoft.com/ja-jp/windows/uwp/porting/desktop-to-uwp-prepare" target="_blank">アプリのパッケージ化の準備</a>というドキュメントにも記載がありますが、要点だけに焦点を当てます。Visual C++ 11(Visual Studio 2012) から Visual Studio 2017(VC14) とデスクトップ ブリッジの関係を示します。</p><strong>
</strong><table style="width: 397px;height: 106px" border="1" cellspacing="0" cellpadding="20">
<tbody>
<tr>
<td valign="top">VS バージョン</td>
<td valign="top">VC バージョン</td>
<td valign="top">備考</td>
</tr>

<tr>
<td valign="top">2012</td>
<td valign="top">VC11</td>
<td valign="top"><a href="https://www.microsoft.com/en-us/download/details.aspx?id=53340&amp;WT.mc_id=DX_MVP4025064" target="_blank">ダウンロード センター</a></td>
</tr>

<tr>
<td valign="top">2013</td>
<td valign="top">VC12</td>
<td valign="top"><a href="https://www.microsoft.com/en-us/download/details.aspx?id=53176" target="_blank">ダウンロード センター</a></td>
</tr>

<tr>
<td valign="top">2015</td>
<td valign="top"><strong>VC14</strong></td>
<td valign="top"><a href="https://www.microsoft.com/en-us/download/details.aspx?id=53175" target="_blank">ダウンロード センター</a></td>
</tr>

<tr>
<td valign="top">2017</td><td valign="top"><font color="#333333"><strong>VC14</strong></font></td>
<td valign="top">VS に含まれます</td>
</tr>

</tbody>
</table>
<p><br>Visual C++ のメジャー バージョン 14 は、Visual Studio 2015 と Visual Studio 2017 に採用されているものになります。Visual Studio 2017 の VC++ では、言語機能の拡張なども行われていますのでマイナー バージョンなどは Visual Studio 2015 と異なることになります。ここに記載している以外の Visual C++ や他のコンパイラの場合は、C ランタイムをスタティック リンクしている場合が、デスクトップ ブリッジで動かすのに簡単な方法になります。スタティック リンクできていない場合は、実行ファイルと同じ場所にランタイム DLL などを配置して、ランタイムをロードできるようにする方法などでもデスクトップ ブリッジで使えるようになります。</p><p>VC14 以降とそれ以前は、VC ランタイムの扱いが大幅に変更されています。それは、VC14 以降で VC ランタイムが再設計されていまして、Windows 10 に含まれるようになったことから、<strong><font color="#ff0000">ユニバーサル C ランタイム(UCRT)</font></strong>と呼ばれおり、VC ランタイム自体のスタティック リンクができなくなったことです。このため、Windows 7 や Windows 8.1 にバイナリを配布する場合は、VC ランタイムの再配布モジュールをインストールする必要があります。配布対象の Windows 10 に VC14のランタイムが含まれていない場合は、Windows Update 経由で導入するか、再配布モジュールでインストールします。<br><strong><font color="#ff0000">※VC14でスタティック リンクできないのは、VC ランタイムだけである点にご注意ください。自分で開発したライブラリについては、スタティック リンクすることができます。</font></strong></p><p>前述の表に記述した VCバージョンは、デスクトップ ブリッジで使用する場合にダイナミック リンクで使用するのが簡単になります。ダイナミック リンクを使用する場合は、備考欄のダウンロード リンクより、デスクトップ ブリッジ用のランタイムをダウンロードしておく必要があります。<br>Visual Studio 2017 の場合は、「%ProgramFiles(x86)\Microsoft SDKs\Windows Kits\ExtensionSDKs\Microsoft.VCLibs.Desktop\14.0\Appx」フォルダにランタイムの Appx パッケージがあります。</p><p>これらのランタイム パッケージを使用するには、「<a href="https://blogs.msdn.microsoft.com/vcblog/2016/07/07/using-visual-c-runtime-in-centennial-project/" target="_blank">Using Visual C++ Runtime in Centennial project</a>」の記事に記載されていますが、AppxManifest.xml の 「Dependencies」要素に次のように記載します。<br>VC11 の場合<br><pre>&lt;PackageDependency Name=”Microsoft.VCLibs.110.00.UWPDesktop” MinVersion=”11.0.61135.0″ Publisher=”CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US” /&gt;
</pre>
<br>VC12 の場合<br>
<pre>&lt;PackageDependency Name=”Microsoft.VCLibs.120.00.UWPDesktop” MinVersion=”12.0.40653.0″ Publisher=”CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US” /&gt;
</pre>
<br>Visual Studio 2015(VC14) の場合<br>
<pre>&lt;PackageDependency Name=”Microsoft.VCLibs.140.00.UWPDesktop” MinVersion=”14.0.23810.0″ Publisher=”CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US” /&gt;
</pre>
<br>Visual Studio 2017(VC14) の場合<br>
<pre>&lt;PackageDependency Name=”Microsoft.VCLibs.140.00.UWPDesktop” MinVersion=”14.0.25426.0″ Publisher=”CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US” /&gt;
</pre><p>
<br>記載したバージョン番号は、ダウンロードなどして入手したランタイム内に存在する SDKManifest.xml と Appx 内の AppxManifes.xml で確認したものになります。 デバッグ用のランタイムを指定する場合は、「Name属性」と「MinVersion属性」を変更する必要があります。このランタイムは、最小バージョンが指定されていますので、Visual Studio 2015 で開発したものも、最新の VC14 ランタイムで動作する可能性がありますので、十分な動作確認を行ってください。<br>逆に、Visual Studio 2017 で開発したバイナリは、Visual Studio 2015 のランタイムしかない場合は動かないとお考えください。これは、ランタイムのバージョン番号は、上位互換が基本となるからです。</p><p>VCのランタイムは、開発した Appx パッケージのテスト時は手作業(Add-AppxPackage)でインストールする必要はありますが、ストアで公開できた場合は、アプリのインストール時に自動的にインストールされるものになります。</p><p>Desktop App Converter は、バージョン 2.1.1.0がリリースされており、ベースイメージも Fall Caretors Update向けがリリースされていますので、Fall Creators Updateでも問題なくアプリ パッケージの開発を行うことができるようになっています。</p><p>最後に、Windows SDK を基準に考えた場合の、VC ランタイムというか、バージョンについて説明します。Windows 10 SDK に対応しているのは、Visual Studio 2015 / 2017 の VC14 になります。一方で、Windows 8.1 SDK には Visual Studio 2012以降のバージョンが対応しています。このことは、<strong><font color="#333333">Windows 10 SDK を使用する場合は、ユニバーサル C ランタイムを使う</font></strong>ということを意味します。つまり、</p><ul><li>Windows 8.1 SDK：このSDKまでは、従来の VC ランタイムをベースにしています。</li><li>Windows 10 SDK：ユニバーサル C ランタイム(UCRT) をベースにしています。</li></ul><p>ということを意味します。このことは、Windows 8.1 SDK を使って Windows 10 で追加された API を使用する場合は、LoadLibrary関数を使って工夫する必要があることを意味しています。</p>]]></content:encoded>
    </item>
    <item>
      <title>KB4025342 と DAC について</title>
      <link>https://docs.microsoft.com/archive/blogs/shozoa/about-kb4025342-and-dac</link>
      <pubDate>Mon, 04 Sep 2017 16:42:20 GMT</pubDate>
      <dc:creator><![CDATA[shozoa]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/shozoa/?p=2755</guid>
      <description><![CDATA[大分、更新が滞っておりました。2017年7月に KB4025342 がリリースされてから、Desktop App Converter...]]></description>
      <content:encoded><![CDATA[<p>大分、更新が滞っておりました。2017年7月に KB4025342 がリリースされてから、Desktop App Converter で変換を行うと「E_STARTING_ISOLATED_ENV_FAILED(time out)」というエラーが発生します。KB4025342 をアンインストールすると、変換が問題なく終了することから、パッチか Windows コンテナのイメージの互換性がなくなったかのどちらかと思われます。この問題に関する<a href="https://blogs.msdn.microsoft.com/appconsult/2017/08/04/desktop-app-converter-fails-on-windows-10-15063-483-and-later-how-to-solve-it/" target="_blank">ブログ エントリ</a>がありました。</p><p>このエントリによると、<a href="https://www.microsoft.com/en-us/download/details.aspx?id=55325" target="_blank">ダウンロード センター</a>より <strong>BaseImage-15063-UPDATE.wim</strong> をダウンロードして、ベース イメージを入れ替えて下さいとあります。入れ替えるためには、以下の2種類のコマンドを使用します。</p><ul><li>ベース イメージの削除：「DesktopAppConverter –Cleanup ExpandedImage」</li><li>ベース イメージのインストール：「DesktopAppConverter –Setup –BaseImage “フルパス\BaseImage-15063-UPDATE.wim”」</li></ul><p>この問題は、Windows 10 ビルド <strong>15063.486</strong> 以降では、ベース イメージがビルド <strong>15063.483</strong> 以降を要求するためです。 削除する前のベース イメージは 15063.0 になっています。ベース イメージを入れ替えれば、Desktop App Converter による変換は成功しますが、もう 1 つ問題が発生します。それは、Desktop App Converter が出力するフォルダに関するアクセス権限(ACL)によって、「PackageFiles\AppxManifest.xml」を使って「Add-AppxPackage -Register AppxManifest.xml」コマンドでインストールしたアプリを起動しようとすると、「<font color="#ff0000"><strong>パラメータが間違っています</strong></font>」というエラーが発生することです。これは、アクセス権限の問題ですので、解決方法は次の2種類のどれかになります。</p><ul><li>出力先のフォルダをカレントにして「icacls * /t /reset」コマンドでアクセス権限をリセットする。</li><li>Windows エクスプローラーを使って、出力先のフォルダのアクセス権限を修正する。</li></ul><p>アクセス権限を変更するのは、サインインしたユーザーに対してフル コントロールを与えるということです。Desktop App Converter は管理者権限で実行し、出力先フォルダがカレント ユーザーに対する権限を継承しないために、アクセス権の変更が必要になったということです。もちろん、Appx パッケージを作成してインストールする場合は、この問題の影響はございません。</p>]]></content:encoded>
    </item>
    <item>
      <title>Desktop Bridge と Windows 10 S について</title>
      <link>https://docs.microsoft.com/archive/blogs/shozoa/about-desktop-bridge-and-windows-10-s</link>
      <pubDate>Mon, 12 Jun 2017 15:58:29 GMT</pubDate>
      <dc:creator><![CDATA[shozoa]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/shozoa/?p=2745</guid>
      <description><![CDATA[2017年5月2日に Windows 10 S と Surface Laptop が発表されました。 当初は日本語の FAQ のストア アプリの説明に「Desktop Bridge...]]></description>
      <content:encoded><![CDATA[2017年5月2日に <a target="_blank" href="https://www.microsoft.com/ja-jp/windows/windows-10-s">Windows 10 S</a> と <a target="_blank" href="https://www.microsoft.com/ja-jp/windows/featured-devices/surface-laptop">Surface Laptop</a> が発表されました。 当初は日本語の <a target="_blank" href="https://support.microsoft.com/ja-jp/help/4020089/windows-10-s-faq">FAQ</a> のストア アプリの説明に「Desktop Bridge 対応のアプリも含む」と記載されていました。この記述は、英語版の FAQ に記載がなっかたことが理由かどうかは知りませんが、現在は「Windows ストア アプリ」とだけ記載されています。また、Build 2017 では、現在の Linux SubSystem を使った SUSE や Fedora なども <a target="_blank" href="https://blogs.msdn.microsoft.com/commandline/2017/05/11/new-distros-coming-to-bashwsl-via-windows-store/">Windows ストアから配信される</a>と発表がありました。Winodws 10 S でコマンドラインの扱いがどうなるかについては、コマンドライン チームが <a target="_blank" href="https://blogs.msdn.microsoft.com/commandline/2017/05/18/will-linux-distros-run-on-windows-10-s/">Windows 10 S では動作しない</a>と明言しています。具体的には、以下のようなものは動作しないことが確認できています。
<ul>
 	<li>コマンド ライン(cmd.exe)</li>
 	<li>PowerShell (powershell.exe)</li>
 	<li>レジストリ エディタ(regedit.exe)</li>
 	<li>etc</li>
</ul>
つまり、OS に影響を与える可能性のあるプログラムが動作しないようにロック ダウンされているのが、Windows 10 S という OS になります。Windows ストア から配信される Desktop Bridge 対応のアプリで考えると、インストールはできるけど動作に制限を受けることが考えられます。なぜなら、UWP アプリと違って完全信頼(fullTrust) で配布されているので、システムへ影響を与える動作が可能なためです。これらの状況を考えると、Desktop Bridge 対応のアプリで Windows 10 S をサポートしようとすると、事前のテストが不可欠になります。事前のテストをしようにも、 Windows 10 S はサイド ローディングを許可していないので、ストアで公開するまで Windows 10 S を搭載した実機でのテストをすることができません。このような場合を想定した<strong><span style="color: #ff0000"><a target="_blank" href="https://docs.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-test-windows-s">テスト方法</a></span></strong>が、Windows デベロッパー センターで公開されています。

公開されているテスト方法は、ダウンロード センターから Device Guard Policy をダウンロードして、目的に応じたポリシーをインストールした Windows 10 Pro 環境（<span style="color: #ff0000"><strong>仮想マシンが望ましい</strong></span>）を用意して、Windows 10 S のアプリ実行環境と同様な環境でテストします。Device Guard Policy には、次の 3 種類があります。
<ul>
 	<li>SiPolicy_Audit.p7b
製品モードと同じで、イベント ログの CodeIntegrityに詳細なログを記録します。
追記:動作を制限するのではなく、ログに動作が記録されます。ログを使って、改善の検討をします。</li>
 	<li>SiPolicy_Enforced.p7b
製品モードで、Windows ストアから配信されるアプリのみをインストールできます。</li>
 	<li>SiPolicy_DevMode_Enforced.p7b
製品モードに加えて、同梱している証明書に対してだけ サイド ローディングを許可します。
AppxTestRootAgency.pfx の発行者は、「CN=Appx Test Root Agency」になっています。</li>
</ul>
Device Guard Policy のインストールには、目的とするポリシー ファイルを「C:\Windows\System32\CodeIntegrity」フォルダへコピーして、コピーしたファイル名を「SiPolicy.p7b」にリネームして、OS を再起動します。OS を再起動後に動作を確認すれば、アプリ自体は Windows 10 S と同様の制約環境で確認することができるようになります。
Device Guard Policy を解除するには、コピーしたポリシー ファイルを削除してから OS を再起動します。このようにすることで、Windows 10 S と同様のテスト環境を作成することができます。この環境は、色々と制限が多い環境のため仮想マシンなどに作成することをお勧めします。

Windows 10 S について私がよく聞かれる質問としては、FAQ にもありますが、「ドライバーはどうなりますか？」というものがあります。この質問の答えとしては、「Windows Update 経由でインストールできるものだけです」というものです。併せて、「USB や CD/DVD-ROM からの Autorunがどうなりますか？」という質問も受けますが、これは「制限されたプログラムに該当するので実行することができません」という答えになります。]]></content:encoded>
    </item>
    <item>
      <title>DAC と PRI リソースについて</title>
      <link>https://docs.microsoft.com/archive/blogs/shozoa/about-dac-and-pri</link>
      <pubDate>Tue, 31 Jan 2017 15:11:07 GMT</pubDate>
      <dc:creator><![CDATA[shozoa]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/shozoa/?p=2715</guid>
      <description><![CDATA[English Follow (Added at 2-Feb).

以前に Desktop App Converter...]]></description>
      <content:encoded><![CDATA[English Follow (Added at 2-Feb).

以前に Desktop App Converter で変換したアプリで、<a target="_blank" href="https://blogs.msdn.microsoft.com/shozoa/2016/11/14/about-scale-assets-on-apps/">スケーリング対応アセットを使用する方法</a>を解説しました。先週頃(1/23の週)に DAC アプリが、バージョン 1.0.6 にアップデートされました。<a target="_blank" href="https://msdn.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-run-desktop-app-converter">ドキュメント</a>上は、Icon Extraction とクリーン アップの向上、バグ対応とだけ記載されていますが、使ってみて大きな変更点と言えるのが、提供されるアイコンなどのリソースの扱い方が変更されたことです。具体的には、次のような変更が行われています。
<ul>
 	<li>アイコンの種類が大幅に増えたこと
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) にアイコン リソースが含まれていると、アイコン リソースから自動生成されます。</li>
 	<li>スケーリング対応による AppxManifest.xml への影響
Resource 要素の uap:Scale に 100、125、150、200、400 を定義。
各種のアセット名は、スケーリング対応(ファイル名に scale-xxx や targetsize-xxx を含まない)。
uap:DefaultTile 要素が追加されました。
uap:ShowNameOnTiles 要素が追加されました。</li>
 	<li>-MakeAppx オプションを指定した場合に、 PRI を自動生成。
resources.pri、resources.scale-100.pri、
resources.scale-125.pri、resources.scale-150.pri、
resources.scale-200.pri の 5種類が パッケージ ルートに追加されます。
-MakeAppx オプションを指定しない場合でも、スケーリング対応アセットになっているので、Appx の作成時には PRI を作成する必要があります。</li>
</ul>
<h3>-MakeAppx オプションを指定しない場合</h3>
-MakeAppx オプションを指定しない場合は、次の2種類の対応が考えられます。
<ul>
 	<li>スケーリング対応アセットを使用しない。</li>
 	<li>PRI リソースを自分で作成する。</li>
</ul>
スケーリング対応アセットを使用しない場合は、使用されるアセットに応じて AppxManifest.xml を書き換えます。つまり、存在するファイルに書き換えることで、今までと同じようにするということになります。

PRI リソースを自分で作成するには、幾つかの作業を行う必要があります。大まかには、次のような作業が必要になります。
<ol>
 	<li>PRI 設定ファイルの作成</li>
 	<li>MakePri.exe ユーティリティを使って、PRI ファイルを作成します。</li>
 	<li>パッケージ レイアウトに作成した PRI リソースを配置します。</li>
 	<li>MakeAppx.exe ユーティリティに「/l」(エル)オプションを指定して、Appxを作成します。
/lオプションが無いと、AppxManifest.xml に指定したファイル名が存在しないというエラーになります。</li>
</ol>
PRI ファイルを簡単に作成するには、-MakeAppx オプションの動作と同じにすることが考えられます。この作業のためには、次の手順に従って PriConfig.xml と layout.resfiles の 2 つのファイルを用意しておきます。
<ol>
 	<li>［スタート メニュー]-[Desktop App Converter] を起動します。</li>
 	<li>タスク マネージャーを起動します。</li>
 	<li>タスク マネージャーで「DACTileLauncher.exe」のコンテキスト メニューから[ファイルの場所を開く]をクリックします。</li>
 	<li>「icon_extract」フォルダを開き、 PriConfig.xml と layout.resfiles を作業用のフォルダにコピーしておきます。
コピーした PriConfig.xml と layout.resfiles は、どこかに原本として保管してください。DAC で変換した場合に、何度も使用するからです。
PriConfig.xml と layout.resfiles の場所は、DesktopAppConverter.ps1 のスクリプトに記述されています。</li>
</ol>
作業フォルダですが、次のような構造になっていると仮定します。
<ul>
 	<li>C:\DAC  作業用のルート フォルダ</li>
 	<li>C:\DAC\VLC  DACに指定したパッケージ名のフォルダで、次のサブ フォルダが作成されています。
PackgeFiles  DAC が出力した Appx レイアウトのフォルダ
logs  DAC が出力したログ用のフォルダ</li>
</ul>
「C:\DAC\VLC」フォルダに、PriConfig.xml と layout.resfiles をコピーします。PriConfig.xml の layout.resfiles の指定を「..\layout.resfiles」のように書き換えます。この理由は、root 属性に指定されている「\」が Appx レイアウトのルートを意味していることから、layout.resfiles を配置したパスに指定するためです。

この作業ができたら、コマンド プロンプトを開いて、「C:\DAC\VLC」フォルダをカレント フォルダにして、次の MakePri.exe コマンドを入力します。

<strong>MakePri.exe new /pr .\PackageFiles /cf .\PriConfig.xml /o</strong>

このコマンドで「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 を作成します。

<strong>MakeAppx.exe pack /d .\PackageFiles /p VLC.appx /l</strong>

MakePri.exe ユーティリティを使う時の注意点としては、次のような点があります。
<ul>
 	<li>アイコン アセットのファイル名を変更した時には、Resources.pri を作り直す必要があります。</li>
 	<li>Resources.pri を作り直す時は、Appx レイアウト フォルダにコピーした PRI ファイルを削除しておきます。
MakePri.exe ユーティリティの規定の動作が PRI リソースのマージになっているためです。マージ動作では、変更されていないリソースがあると重複のエラーが発生します。</li>
</ul>
逆を言えば、アイコン アセットのファイル名を変更しないで、ファイルだけを置き換える場合は、Resources.pri を作り直す必要がないことになります。
<h3>-MakeAppx オプションを指定する場合</h3>
簡単なのは、PackageFiles\Assets フォルダ内のファイル名を同じにして、ファイルを入れ替えて、本番用のアイコン アセットにすることです。このようにした場合は、MakeAppx.exe ユーティリティに「/l」(エル)オプションを指定して、Appxを作成するだけで済みます。もちろん、ファイル名などを変更する場合は、-MakeAppx オプションを指定しない場合で説明したように、MakePri.exe ユーティリティを使って Resources.pri を作成し直す必要があります。

<hr />

<strong>English Version</strong>
<h1>Subject: About DAC and PRI Resources</h1>
Desktop App Converter updated at last week as 30-Jan. So DAC version became v1.0.6. This version include new features.
<ul>
 	<li>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.</li>
 	<li>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.</li>
 	<li>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.</li>
</ul>
<h3>No -MakeAppx option</h3>
You chosen one from follow selection.
<ul>
 	<li>Not use scaling assets.</li>
 	<li>You create PRI resources.</li>
</ul>
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.
<ol>
 	<li>Create PRI configuration file.</li>
 	<li> Create PRI resources with MakePri.exe.</li>
 	<li>locate PRI resources in Appx Package layout.</li>
 	<li>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.</li>
</ol>
I think how to easy create PRI resources. So it's same way as DAC v1.0.6. This way is following steps.
<ol>
 	<li> Launch [Desktop App Converter] in Start menu.</li>
 	<li>Launch Task Manager.</li>
 	<li>Select DACTileLauncher.exe on Task Manager, then open context menu and select "Open file location".</li>
 	<li>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.</li>
</ol>
I think that work folder structure is follow.
<ul>
 	<li>C:\DAC             :root folder of work folder.</li>
 	<li>C:\DAC\VLC   :it's DAC's output folder.
PackgeFiles      :Appx layout folder.
logs                    :DAC's log files folder.</li>
</ul>
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.

<strong>MakePri.exe new /pr .\PackageFiles /cf .\PriConfig.xml /o</strong>

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.

<strong>MakeAppx.exe pack /d .\PackageFiles /p VLV.appx /l</strong>

Notice using MakePRI.
<ul>
 	<li>When change assets file name, you must re-create PRI resources.</li>
 	<li>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.</li>
</ul>
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.]]></content:encoded>
    </item>
    <item>
      <title>DAC で バッチ ファイルを使うには</title>
      <link>https://docs.microsoft.com/archive/blogs/shozoa/how-to-use-bat-file-in-dac</link>
      <pubDate>Tue, 06 Dec 2016 15:41:10 GMT</pubDate>
      <dc:creator><![CDATA[shozoa]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/shozoa/?p=2695</guid>
      <description><![CDATA[今回は、Desktop App Converter(DAC) に指定するインストーラをバッチ...]]></description>
      <content:encoded><![CDATA[<p>今回は、Desktop App Converter(DAC) に指定するインストーラをバッチ ファイルにする方法を説明します。以前から、試して見ようと考えていましたが、なかなか作業ができていなかったものになります。最初に、変換するためのインストーラとして、以下のようなフォルダ構造があると仮定します。</p> <ul> <li>C:\Work\BAT フォルダ ： 変換の作業フォルダー  <li>C:\Work\BAT\Input フォルダ ： インストーラなどを配置するフォルダ<br>MyApp.exe ： 実行ファイル<br>Install.bat : インストール用のバッチ ファイル</li></ul> <p>Install.bat には、次のような内容を記述しています。<br></p><pre>mkdir "%ProgramFiles%\MyApp"
xcopy ".\*" "%ProgramFiles%\MyApp" /S /E
exit 0
</pre><br>
<p>xcopy コマンドのソースに「.\*」のように、カレントからの相対パスを記述しているのが重要な点になります。</p>
<p>この準備ができたら、DAC を管理者権限で起動して、次のように入力します。<br></p><pre>cd C:\Work\BAT
DesktopAppConverter.exe -Installer ".\Input\Install.bat" -Destination "."
  -AppInstallPath "C:\Program Files\MyApp" 
  -AppExecutable "C:\Program Files\MyApp\MyApp.exe"
  -PackageName "myapp" -Publisher "CN=myapp" -Version "0.0.0.1" -Vervos
</pre><br>

<p>パラメータが長いので折り返していますが、カレントを変更して、DACのコマンドをワン ライナーで入力します。このコマンドでの特徴は次のようになります。</p>
<ul>
<li>-Installer に バッチ ファイルを指定しています。</li>
<li>-InstallerArguments は省略しています。この理由は、バッチ ファイルで引数を処理していないからです。</li>
<li>-InstallerValidExitCodes は省略しています。この理由は、バッチ ファイルの最後で「exit 0」としてリターン コードを0(ゼロ)にしているからです。</li>
<li>-AppInstallPath は、アプリケーションのインストール先のフォルダをフルパスで指定します。</li>
<li>-AppExecutable は、アプリケーションの実行ファイルをフルパスで 指定します。</li></ul>
<p>こうすることで、正常に変換を行うことができるようになります。</p>
<p>この時の注意事項は、インストール用のバッチ ファイルの xcopy コマンドのソース パスの記述方法になります。最初は、「.\Input\*」のように記述していました。この記述で実行すると、うまく実行はできるのですが、実行結果として「<strong><font color="#ff0000">MyApp.exe が見つかりません</font></strong>」という警告が表示されて、出力先の「myapp\PackageFile フォルダ」内に、MyApp.exe が出力されていませんでした。この原因を調べていくと、次のようなことが判明しました。</p>
<ul>
<li>インストール用のコンテナのインスタンス内の「C:\shared\installer」フォルダ内に、-Installer で指定したファイルがコピーされるということ。<br>つまり、この例では「Installer.bat」を配置したフォルダである「C:\Work\BAT\Input」フォルダ内のファイルが再帰的にコピーされる。</li>
<li>「C:\shared\installer\Install.bat」 は、「C:\shared\installer」をカレントにして呼び出されるということ。<br>つまり、「.\Input」では、パスが間違っていて、ファイルがコピーされないということです。</li></ul>
<p>結論から言えば、インストール用のバッチ ファイルは、バッチ ファイルを配置した場所をカレント フォルダとして呼び出されるので、このことを前提にパスを記述しないといけないということです。このように手順を踏めば、バッチ ファイルを使ってもアプリを変換することが可能になるわけです。</p>]]></content:encoded>
    </item>
    <item>
      <title>Windows 互換性ガイドブックを公開しました</title>
      <link>https://docs.microsoft.com/archive/blogs/shozoa/publish-windows-compatibility-cookbook</link>
      <pubDate>Thu, 01 Dec 2016 16:59:58 GMT</pubDate>
      <dc:creator><![CDATA[shozoa]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/shozoa/?p=2685</guid>
      <description><![CDATA[お待たせしました。という方が正しいような気がしますが(何年も待たせるのという声が聞こえてきそうです)、Windows 8.1 と Windows Server 2012 R2 に対応した...]]></description>
      <content:encoded><![CDATA[<p>お待たせしました。という方が正しいような気がしますが(何年も待たせるのという声が聞こえてきそうです)、Windows 8.1 と Windows Server 2012 R2 に対応した Windows 互換性ガイドブックの翻訳版を公開しました。この公開に合わせて、Windows 10 の互換性ガイドブックも Anniversary Update 関係で更新しています。</p> <p>日本語版の互換性ガイドブックは、Technet の <a href="https://technet.microsoft.com/ja-jp/windows/mt634410" target="_blank">Windows 10 法人向け技術情報まとめ</a> ページに掲載してあります。</p> <p>何年も Windows 8.1 に対応した互換性ガイド ブックが公開されなかった経緯ですが、</p> <ul> <li>Windows 8 と Windows Server 2012 互換性ガイドブックが、Windows 7 以前からのマイグレーション用に翻訳されて公開されていました。</li> <li>Windows 8.1 がリリースされた時に、新しい互換性ガイドブックが翻訳されませんでした。</li> <li>翻訳されなかったため、互換性ガイドブックのダウンロード センターのページでは、英語版を選択すると Windows 8.1 の Cookbook がダウンロードできて、日本語版を選択すると Windows 8 と Windows Server 2012 互換性ガイドブックのダウンロードができました。</li> <li>ダウンロード センターのコンテンツの整理作業が行われた時に、日本語版のWindows 8 と Windows Server 2012 互換性ガイドブックのリンクが削除されてしまいました。というのは、ダウンロード センターの整理作業時点で、英語版の Windows 8 向けの Compatibility Cookbook は、Windows 8.1 用に収録されていることから Windows 8 向けは不要という判断になったためです。</li> <li>Windows 10 の Compatibility Cookbook が公開されて、日本語版も公開しました。が、Windows 10 の互換性ガイドブックは、Windows 8.1 からの差分として構成されていることから、日本のお客様向けに Windows 8.1 向けの互換性ガイドブックを用意する必要性を私は感じていました。</li> <li>このような考えを持っていましたので、色々な方の助けを借りて Windows 8.1 向けの互換性ガイドブックを作成しました。</li></ul> <p>この機会に、是非、互換性ガイドブックのダウンロードをお願いします。</p>]]></content:encoded>
    </item>
    <item>
      <title>DsktopBrigde (DACを含む) サンプルについて</title>
      <link>https://docs.microsoft.com/archive/blogs/shozoa/about-dsktopbrigde-sample</link>
      <pubDate>Fri, 18 Nov 2016 17:09:38 GMT</pubDate>
      <dc:creator><![CDATA[shozoa]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/shozoa/?p=2665</guid>
      <description><![CDATA[今回は、Desktop App Converter のチュートリアル的なサンプルであり、DesktopBridge Sample...]]></description>
      <content:encoded><![CDATA[<p>今回は、Desktop App Converter のチュートリアル的なサンプルであり、<a href="https://github.com/Microsoft/DesktopBridgeToUWP-Samples" target="_blank">DesktopBridge Sample</a> を紹介します。具体的には、実際のコードを見て頂くとして、この記事ではどのようなサンプルが提供されていて、どのような構造になっているかを解説します。</p> <p>最初の入門として見るのは、HelloWorldSample か JourneyAcrossTheBridge のサンプルになります。</p> <h1>HelloWorldSample</h1> <p>cs フォルダと CentennialPackage フォルダが含まれており、cs フォルダが C# のコンソール アプリケーションになっており、CentennialPackage フォルダは、手作業でAppxを作成するための Appx レイアウト フォルダになっています。このサンプルでは、Desktop App Converter を使用することなく、デスクトップ アプリを Appx パッケージにすることを学習するためのものになっています。</p> <h1>JourneyAccrossTheBridge</h1> <p>このサンプルには、ステップ1からステップ5までの5種類が含まれています。学習の流れで説明すると、ステップ1 から ステップ 3が、Windows Forms のデスクトップ アプリを Appx 化 (ステップ1) して、タイル更新を追加(ステップ2)、バックグラウンド タスクを追加(ステップ3) と順番に既存のデスクトップ コードを機能拡張する流れになっています。</p> <p>ステップ 4 以降は、それまでの流れではなく、UWP のアプリから デスクトップのコードを アプリ サービスとして使用し(ステップ4)、完全な UWP アプリへの移行(ステップ 5)となっています。</p> <h3>ステップ1</h3> <p>学習することは、HelloWorldSample と同じです。異なるのは、コンソール アプリではなく、Windows Forms を使用した GUI のアプリという点であり、使用する Visual Studio が 2015 ではなく、2017(プレビュー)になっており、<a href="https://visualstudiogallery.msdn.microsoft.com/c71521f1-3c73-49e8-b1a4-70e958f179ba" target="_blank">Desktop to UWP packaging Project</a> を使用するようになっていることです。Desktop to UWP Project で作成したプロジェクトは、Appxレイアウトのフォルダを指定し、変換対象のプロジェクトをソリューションに追加することで、Appx の更新やデバッグが容易になるという特徴があります。Desktop to UWP Project の使い方は、<a href="https://msdn.microsoft.com/ja-jp/windows/uwp/porting/desktop-to-uwp-deploy-and-debug" target="_blank">変換済みの UWP アプリを展開してデバッグする</a>に記述されている「<strong>F5デバッグ</strong>」で詳しく説明しています。</p> <h3>ステップ2</h3> <p>タイル更新を追加するために、Windows.wnimd への参照を追加してから、コンボボックスのSelectionChanged イベント ハンドラ内に TileUpdateManager クラスと TileNotification クラスを使用してタイル通知を行うコードを追加しています。</p> <h3>ステップ3</h3> <p>ステップ2 へバックグラウンド タスクを追加するために、BackgroundTasks プロジェクトを Windows ランタイム コンポーネント プロジェクトとして追加しています。このバックグラウンド タスクは、アプリケーション設定の「Status」キーに設定された文字列を使って、トースト通知を行います。</p> <p>AppxManifest へバックグラウンド タスクを追加するには、以下の3種類の作業が必要になります。</p> <ul> <li>Extension 要素で UWP アプリと同様に windows.backgroundTasks の設定を行います。</li> <li>Extension 要素で windows.activatableClass.inProcessServer の設定を行います。<br>この理由は、デスクトップのアプリなので、アプリの仕組みを自動的に使えないためです。</li> <li>作成した BackgroundTasks.winmd と BackgroundTasks.pri を Appx レイアウトへコピーしておきます。</li></ul> <p>Windows Forms のアプリケーションでは、以下の作業を行っています。</p> <ul> <li>Program.cs で、バックグラウンド タスクの登録を行います。コードは、UWP アプリで使用するものと同じです。</li> <li>Form1.cs で、Form1_Load イベント ハンドラでアプリケーション設定の [Status] キーへ文字列を設定します。</li></ul> <p>こうすることで、バックグラウンド タスクが Time トリガーによって 15 分間隔でトースト通知を表示するようになります。</p> <h3>ステップ4</h3> <p>既に説明したように、ここでステップ 3までとは異なる構造へと変わります。具体的には、MyDesktopApp プロジェクト (デスクトップ のアプリ)、BackgroundTasks プロジェクト (これは、ステップ3のものと同じです)、最後に MyUWPApp プロジェクト(純粋な UWP アプリ)の 3 プロジェクトで構成されていて、ステップ 3まで存在していた Desktop to UWP Project は無くなっています。この理由は、MyUWPApp という UWP アプリで配置などを行うからです。</p> <p>MyDesktopApp プロジェクトの特徴は、次のようになります。</p> <ul> <li>C# のコンソール アプリケーションです。</li> <li>Windows.winmd への参照設定を行っています。</li> <li>レジストリに設定している CurrentState を アプリケーション設定の [Status] キーへ保存します。</li> <li>新しいスレッドで AppService をホストするコードを記述しています。AppService で CurrentState を ValueSet をクライアントへ返します。</li></ul> <p>MyUwpApp プロジェクトの特徴は、次のようになります。</p> <ul> <li>ターゲット プラットフォームを 10.0.14393.0 に固定します。</li> <li>BackgroundTasks プロジェクトへ参照を設定します。</li> <li>Windows Desktop Extension 10.0.14393 拡張SDK への参照を設定します。</li> <li>ポスト ビルドで、MyDesktopApp の出力である exe と pdb を$(OutDir)AppX フォルダーへコピーします。</li> <li>App.xaml.cs の OnBackgroundActivated イベント ハンドラで、AppService の処理を記述し、メッセージを受信したら StatusUpdated イベントを呼び出します。</li> <li>MainPage.xaml.cs で、StatusUpdate イベントのハンドラを記述し、受信したメッセージでコンボボックスを選択するコードを記述しています。<br>OnNavigatedTo イベント ハンドラで、バックグラウンド タスクの登録をし、FullTrustProcessLauncher クラスを使って MyDesktopApp を起動します。<br>コンボボックスの SelectionChanged イベント ハンドラで、MyDesktopApp のApp Service へメッセージを送信し、受信したデータでタイル更新をします。</li> <li>Package.appxmanifestには、次のような変更を加えています。<br>デバイス ファミリ を Windows.Desktop に固定。<br>ネームスペースに、rescap と desktop を追加。<br>Extension にバックグラウンド タスクと windows.appServiceの定義を追加し、desktop:Extension 要素で windows.fullTrsustProcess として MyDesktopApp.exe を追加し、rescap:Capability runFullTrust を追加します。</li></ul> <p>このような構造になっています。ここでポイントは、デスクトップ アプリが AppService をホストしている点と UWP アプリが デスクトップ アプリの AppService を起動するために、FullTrustProcessLauncher クラスを使用している点です。通常の UWP アプリ同士であれば、AppService 側は自動的に起動されますが、デスクトップ アプリでAppService をホストするケースでは、自動的に起動できないので、UWP アプリ 側で起動する必要があるということになります。このための設定が、desktop:Extension の windows.FullTrustProcessになり、この記述は Appx内に同梱した完全信頼の実行ファイルを 1 つだけ記述することができます。</p> <h3>ステップ5</h3> <p>ステップ 4までのソリューションを完全な UWP アプリ化するために、MyUWPAppプロジェクトとBackgroundTasks プロジェクトの ２つだけに統合します。</p> <h1>BackgroundTasksSample</h1> <p>JourneyAccrossTheBridge のステップ 3 と同じになります。</p> <h1>AppServiceBridgeSample</h1> <p>C# と C++ を使用したサンプルがありますが、考え方は JourneyAccrossTheBridge のステップ 4 と同じになります。</p> <h1>NorthwindSample</h1> <p>C# のサンプルで AppService を使用しますので、JourneyAccrossTheBridge のステップ 3と同様の考え方でなりたっていますが、Northwindという名前から予測できるように SQL Compact を使ったデータベースへのアクセスをラップした C# のデスクトップ アプリを使用しています。</p> <h1>StoreSample</h1> <p>ストアのAPIを使用する C# のWPF アプリケーションで、<a href="https://visualstudiogallery.msdn.microsoft.com/c71521f1-3c73-49e8-b1a4-70e958f179ba" target="_blank">Desktop to UWP packaging Project</a> を使用しています。</p> <p>このサンプルを通して DAC で変換したアプリを拡張する時に注意点は、以下のようなことになります。</p> <ul> <li>Windows メタデータへの参照設定が必要<br>C++ の場合は、Windows ランタイムを使用できる Windows SDK を使用する必要がある</li> <li>UWP アプリから、Appx 内のデスクトップ実行ファイルを起動するには、FullTrustProcessLauncher クラスを使用する。<br>同梱できるデスクトップ実行ファイルは 1つだけという制限がある。</li> <li>拡張するには、AppService などがやりやすい。</li> <li>タイルやトースト通知を使用する場合は、AppUserModelId が必須(UWP アプリは自動的に付与されます)。</li></ul> <p>DAC で変換したAppxの価値を高めるためにも、利用シーンに応じた拡張を考えることが重要になってくることでしょう。</p>]]></content:encoded>
    </item>
    <item>
      <title>アプリのスケーリング対応アセットについて</title>
      <link>https://docs.microsoft.com/archive/blogs/shozoa/about-scale-assets-on-apps</link>
      <pubDate>Mon, 14 Nov 2016 17:30:13 GMT</pubDate>
      <dc:creator><![CDATA[shozoa]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/shozoa/?p=2655</guid>
      <description><![CDATA[TechSummit では、「デスクトップ アプリを Windows ストアで公開するには」というお話をさせていただきました。この話では、Desktop App Converter (以降は、DAC...]]></description>
      <content:encoded><![CDATA[TechSummit では、「<a target="_blank" href="https://microsoft-events.jp/mstechsummit/session/#APP014">デスクトップ アプリを Windows ストアで公開するには</a>」というお話をさせていただきました。この話では、Desktop App Converter (以降は、DAC と略します)を使用して、インストーラを Appx に変換したり、変換できるアプリの条件などを色々と説明しました。色々な作業を得てから、最終的なアプリに仕上げる時に必要になるタイル アイコンなどを説明するのが、今回の話題になります。

タイルなどのアセットの詳細は、「<a target="_blank" href="https://msdn.microsoft.com/ja-jp/windows/uwp/controls-and-patterns/tiles-and-notifications-app-assets">タイルとアイコン アセットのガイドライン</a>」に詳しく説明があります。内容を読むと、スケール ベースとターゲット ベースのアセットがあることが理解できます。
<ul>
 	<li>スケール ベース
xxxxxx.scale-100.png など、スケーリングの倍率(100、200、400、etc)に応じて切り替えるアセット。</li>
 	<li>ターゲットベース
xxxxxx.targetseize-16.png など、ターゲット サイズに応じて切り替えるアセット(正方形)で、エクスプローラなどの Windows のシステム側で使用するものになります。</li>
</ul>
Visual Studio 2015 で UWP アプリのプロジェクトを作成すると、自動的にスケール ベースのアセットなどが使用できる状態になっていますので、使用するアセットをプロジェクトに追加していくことで、ターゲット サイズのアセットなども使えるようになります。ちなみに、UWP プロジェクトを新規で作成した時に、テンプレートが作成するアセットは次のものになっています。
<ul>
 	<li>LockScreenLogo.scale-200.png</li>
 	<li>SplashScreen.scale-200.png</li>
 	<li>Square44x44Logo.scale-200.png</li>
 	<li>Squrae44x44Logo.targetsize-24_altform.png</li>
 	<li>Square150x150Logo.scale-200.png</li>
 	<li>StoreLogo.png</li>
 	<li>Wide310x150Logo.scale-200.png</li>
</ul>
つまり、ロックスクリーン、スプラッシュ スクリーン、小さいタイル、正方形タイル、ワイドタイルと システム用のターゲット サイズのアセット、ストア ロゴの 7 つが含まれています。一方で、DAC で作成した アプリに含まれているのは、次のようなアセットになります。
<ul>
 	<li>SampleAppx.44x44.png (44px x 44px)</li>
 	<li>SampleAppx.50x50.png (50px x 50px)</li>
 	<li>SampleAppx.150x150.png (300px x 300px)</li>
</ul>
正方形の 150x150タイルが、スケール 200%のサイズである、300ピクセルの正方形で用意されており、この3種類が DAC で自動的に追加されるサンプル アセットとなります。では、スケーリングに応じた以下のようなタイル アセットを使用したいとすれば、どうしたら良いでしょうか。
<ul>
 	<li>SampleAppx150x150.scale-100.png</li>
 	<li>SampleAppx150x150.scale-200.png</li>
</ul>
このようなスケーリングに対応したアセットをアプリが使用するためには、<a target="_blank" href="https://msdn.microsoft.com/ja-jp/library/windows/apps/xaml/jj552947.aspx">パッケージ リソース インデックス (Package Resource Index)</a> 情報を作成する必要があります。そして、scale-xxx や targetsize-xxx などをリソース修飾子と呼び、どのように使用するかを説明した<a target="_blank" href="https://msdn.microsoft.com/ja-jp/library/windows/apps/xaml/hh965324(v=win.10).aspx">ドキュメント</a>もあります。PRI (パッケージ リソース インデックス) を作成するには、Windows SDK で提供される「<a target="_blank" href="https://msdn.microsoft.com/ja-jp/library/windows/apps/xaml/jj552945.aspx">makepri.exe</a>」ユーティリティを使用する必要があります。Visual Studio の UWP プロジェクトでは、ビルド プロセスの中で PRI 情報を自動的に作成するようになっていますので、通常は意識することがないユーティリティの 1 つでもあるのが makepri.exe になります。ドキュメントを読むと、makepri.exe は構成ファイルを必要としています。この構成ファイルに何を記述するかと言えば、何の修飾子を使用するかという情報などになります。そこで、参考に私が作成した構成ファイルを以下に示します。
<pre>&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;resources targetOsVersion="10.0.0" majorVersion="1"&gt;
  &lt;index root="\" startIndexAt="assetslayout.resfiles"&gt;
    &lt;default&gt;
      &lt;qualifier name="Language" value="ja-JP" /&gt;
      &lt;qualifier name="Contrast" value="standard" /&gt;
      &lt;qualifier name="Scale" value="200" /&gt;
      &lt;qualifier name="HomeRegion" value="001" /&gt;
      &lt;qualifier name="TargetSize" value="256" /&gt;
      &lt;qualifier name="LayoutDirection" value="LTR" /&gt;
      &lt;qualifier name="DXFeatureLevel" value="DX9" /&gt;
      &lt;qualifier name="Configuration" value="" /&gt;
      &lt;qualifier name="AlternateForm" value="" /&gt;
      &lt;qualifier name="Platform" value="UAP" /&gt;
    &lt;/default&gt;
    &lt;indexer-config type="RESFILES" qualifierDelimiter="." /&gt;
  &lt;/index&gt;
&lt;/resources&gt;
</pre>
この構成ファイルは、Visual Studio の UWP プロジェクトのビルド プロセスで作成されたものをベースに作成しました。仮に、この構成ファイルを「<strong>priconfig.xml</strong>」とします。root属性に「\」を指定しているのは、Appxレイアウトのフォルダを意味しており、startAtIndexAt属性に指定している「assetslayout.resfiles」はリソースに含めるファイルの一覧を記述したテキスト ファイルで、root 属性に指定したフォルダ内に配置する必要があることを意味します。このため、assetslayout.resfiles の中身は、以下のようになります。
<pre>assets\SampleAppx.44x44.png
assets\SampleAppx.50x50.png
assets\SampleAppx150x150.scale-100.png
assets\SampleAppx150x150.scale-200.png
</pre>
このファイル「<span style="color: #333333"><strong>assetslayout.resfiles</strong></span>」  を Appx レイアウトのフォルダ直下(AppxManifest.xml と同じ場所)に配置します。そして、AppxManifest.xml を編集します。具体的には、「<strong><span style="color: #ff0000">SampleAppx.150x150.png</span></strong>」を「<strong><span style="color: #ff0000">SampleAppx150x150.png</span></strong>」に変更します。この変更によって、SampleAppx150x150.png は、スケーリングに応じたアセットが使われるようになるわけです。この準備ができたら、makepriを使用します。
<ul>
 	<li>「makepri.exe  new /pr Appxレイアウトのフォルダ /cf priconfig.xml」</li>
</ul>
このコマンドで、カレント フォルダに「resources.pri」が出力されます。カレント フォルダは、Appxレイアウトのフォルダを配置した作業フォルダを想定していて、このフォルダに priconfig.xml を配置していることを想定しています。

resources.pri が作成できたら、Appxレイアウト フォルダ(AppxManifest.xml を配置したフォルダ)に resources.pri をコピーします。これで、アプリがパッケージ リソース インデックス(pri) を使用できるようになります。resources.pri を作成する時の注意点は、AppxManifest.xml の Square44x44Logo 属性に指定するファイルが正しくなるようにすることです。これが間違っていると、正しいリソースが選択されない原因になります。また、resources.pri には、パッケージ名やアプリ名などが含まれているバイナリ ファイルになりますので、Windows ストアと関連付けるために AppxManifest.xml を編集したら、必ず resources.pri を作成しなおしてください。

最後にAppxパッケージを作成する場合に、「makeappx.exe」を使用しますが、この時のコマンドにも注意が必要です。何故なら、デフォルトのオプションでは、AppxManifest.xml に指定したリソースの存在チェックが行われるからです。この理由から、以下のように 「/l」オプションを使用します。
<ul>
 	<li>「makeappx.exe /d Appxレイアウトのフォルダ /l /p appx名.appx」</li>
</ul>
このように適切にパッケージ リソース インデックス(PRI) を作成することで、スケーリングに応じたアセットを切り替えることができるようになります。特に、DAC で変換した Appx レイアウトは、Visual Studio と違って自動的にはスケーリングに対応していないので、自分で適切な作業をする必要があるのです。特に、ファイルの拡張子の関連付けをされる場合は、パッケージ リソース インデックスの作成は必須だと考えてください。何故なら、システム側がターゲット ベースのアセットを使用する必要があるからです。

追記:リソース ファイル(.resw)を使って、言語リソースを追加するには、言語用のリソース(.resw)を定義します。たとえば
<ul>
 	<li>「ApplicationDescription」 キーに値を設定します</li>
</ul>
このようなリソース ファイル(.resw)を作成した場合は、makepriの構成ファイルに、リソース ファイル用のエントリーを追加します。
<ul>
 	<li>先に示した index 要素のコピーを作成します。</li>
 	<li>「layout.resfiles」 を 「resources.resfiles」に変更します</li>
 	<li>Type="RESFILES"の行に次の二行を追加します。</li>
 	<li>&lt;indexer-config Type="RESW" convertDotsSlashes="true" /&gt;</li>
 	<li>&lt;indexer-config Type="RESJSON" /&gt;</li>
</ul>
resources.resfilesは、layout.resfiles と同じで、作成したリソース ファイル(.resw)に対するパスを記述します。作成した「ApplicationDescription」文字列にアクセスするには、「ms-resources:Resources/ApplicationDescription」と記述します。
ちなみに、説明のために layout.resfiles などをパッケージ ルートに配置するとして説明していますが、makepriの構成ファイルがパッケージ ルート(\)を基準にしているので、パッケージ ルートからの相対パスで記述すれば、パッケージ内に配置しないことも可能です。リソース ファイル(.resw)は、makepri で pri ファイルを作成すると、pri ファイルの中に定義したリソース情報がマージされて、リソース マネージャからアクセスできるようになります。]]></content:encoded>
    </item>
    <item>
      <title>F# ブート キャンプが開催されます</title>
      <link>https://docs.microsoft.com/archive/blogs/shozoa/announce-fsharp-bootcamp</link>
      <pubDate>Wed, 02 Nov 2016 10:16:50 GMT</pubDate>
      <dc:creator><![CDATA[shozoa]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/shozoa/?p=2645</guid>
      <description><![CDATA[2016年11月19日に、イギリスのケンブリッジより来日した Tomas Petrics さんが参加する F# Boot Camp が開催されます。Tomas さんは、Microsoft...]]></description>
      <content:encoded><![CDATA[2016年11月19日に、イギリスのケンブリッジより来日した <a target="_blank" href="https://tomasp.net/">Tomas Petrics</a> さんが参加する <a target="_blank" href="https://connpass.com/event/36669/">F# Boot Camp</a> が開催されます。Tomas さんは、Microsoft Research で Don Syme さん(F#の言語設計者)と一緒にF#の言語設計に携わっており、<a target="_blank" href="https://fsharp.org/">F# Foundation</a> の設立メンバーでもあり、F#の啓発活動を幅広く実施されいます。プログラミング言語の開発に携わった方のお話を聞ける機会ですので、ご興味のある方は是非、ご参加ください。
そして、前日の11月18日の夜には、<a target="_blank" href="https://connpass.com/event/40793/">F#談話室</a>が開催されます。F#談話室は、無償の勉強会ですが、Tomasさんが参加されます。通訳者はいませんが、下手な英語でもTomasさんとコミュニケーションしてみませんか？]]></content:encoded>
    </item>
  </channel>
</rss>