デスクトップ ブリッジと VC ランタイムについて

Windows 10 Fall Creators Update がリリースされて、Visual Studio 2017 も Fall Creators Update 対応の 15.4 がリリースされています。今回は、Visual C++ のランタイムと デスクトップ ブリッジの関係を整理します。Visual C++ ランタイムとデスクトップ ブリッジの関係は、アプリのパッケージ化の準備というドキュメントにも記載がありますが、要点だけに焦点を当てます。Visual C++ 11(Visual Studio 2012) から Visual Studio 2017(VC14) とデスクトップ ブリッジの関係を示します。 VS バージョン VC バージョン 備考 2012 VC11 ダウンロード センター 2013 VC12 ダウンロード センター 2015 VC14 ダウンロード センター 2017 VC14 VS に含まれます Visual C++…

0

KB4025342 と DAC について

大分、更新が滞っておりました。2017年7月に KB4025342 がリリースされてから、Desktop App Converter で変換を行うと「E_STARTING_ISOLATED_ENV_FAILED(time out)」というエラーが発生します。KB4025342 をアンインストールすると、変換が問題なく終了することから、パッチか Windows コンテナのイメージの互換性がなくなったかのどちらかと思われます。この問題に関するブログ エントリがありました。 このエントリによると、ダウンロード センターより BaseImage-15063-UPDATE.wim をダウンロードして、ベース イメージを入れ替えて下さいとあります。入れ替えるためには、以下の2種類のコマンドを使用します。 ベース イメージの削除:「DesktopAppConverter –Cleanup ExpandedImage」 ベース イメージのインストール:「DesktopAppConverter –Setup –BaseImage “フルパス\BaseImage-15063-UPDATE.wim”」 この問題は、Windows 10 ビルド 15063.486 以降では、ベース イメージがビルド 15063.483 以降を要求するためです。 削除する前のベース イメージは 15063.0 になっています。ベース イメージを入れ替えれば、Desktop App Converter による変換は成功しますが、もう 1 つ問題が発生します。それは、Desktop App Converter が出力するフォルダに関するアクセス権限(ACL)によって、「PackageFiles\AppxManifest.xml」を使って「Add-AppxPackage -Register AppxManifest.xml」コマンドでインストールしたアプリを起動しようとすると、「パラメータが間違っています」というエラーが発生することです。これは、アクセス権限の問題ですので、解決方法は次の2種類のどれかになります。 出力先のフォルダをカレントにして「icacls * /t /reset」コマンドでアクセス権限をリセットする。 Windows エクスプローラーを使って、出力先のフォルダのアクセス権限を修正する。 アクセス権限を変更するのは、サインインしたユーザーに対してフル…

0

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…

0

DAC で バッチ ファイルを使うには

今回は、Desktop App Converter(DAC) に指定するインストーラをバッチ ファイルにする方法を説明します。以前から、試して見ようと考えていましたが、なかなか作業ができていなかったものになります。最初に、変換するためのインストーラとして、以下のようなフォルダ構造があると仮定します。 C:\Work\BAT フォルダ : 変換の作業フォルダー C:\Work\BAT\Input フォルダ : インストーラなどを配置するフォルダMyApp.exe : 実行ファイルInstall.bat : インストール用のバッチ ファイル Install.bat には、次のような内容を記述しています。 mkdir “%ProgramFiles%\MyApp” xcopy “.\*” “%ProgramFiles%\MyApp” /S /E exit 0 xcopy コマンドのソースに「.\*」のように、カレントからの相対パスを記述しているのが重要な点になります。 この準備ができたら、DAC を管理者権限で起動して、次のように入力します。 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 パラメータが長いので折り返していますが、カレントを変更して、DACのコマンドをワン ライナーで入力します。このコマンドでの特徴は次のようになります。…

0

Windows 互換性ガイドブックを公開しました

お待たせしました。という方が正しいような気がしますが(何年も待たせるのという声が聞こえてきそうです)、Windows 8.1 と Windows Server 2012 R2 に対応した Windows 互換性ガイドブックの翻訳版を公開しました。この公開に合わせて、Windows 10 の互換性ガイドブックも Anniversary Update 関係で更新しています。 日本語版の互換性ガイドブックは、Technet の Windows 10 法人向け技術情報まとめ ページに掲載してあります。 何年も Windows 8.1 に対応した互換性ガイド ブックが公開されなかった経緯ですが、 Windows 8 と Windows Server 2012 互換性ガイドブックが、Windows 7 以前からのマイグレーション用に翻訳されて公開されていました。 Windows 8.1 がリリースされた時に、新しい互換性ガイドブックが翻訳されませんでした。 翻訳されなかったため、互換性ガイドブックのダウンロード センターのページでは、英語版を選択すると Windows 8.1 の Cookbook がダウンロードできて、日本語版を選択すると Windows 8 と Windows Server 2012 互換性ガイドブックのダウンロードができました。 ダウンロード センターのコンテンツの整理作業が行われた時に、日本語版のWindows 8…

0

DsktopBrigde (DACを含む) サンプルについて

今回は、Desktop App Converter のチュートリアル的なサンプルであり、DesktopBridge Sample を紹介します。具体的には、実際のコードを見て頂くとして、この記事ではどのようなサンプルが提供されていて、どのような構造になっているかを解説します。 最初の入門として見るのは、HelloWorldSample か JourneyAcrossTheBridge のサンプルになります。 HelloWorldSample cs フォルダと CentennialPackage フォルダが含まれており、cs フォルダが C# のコンソール アプリケーションになっており、CentennialPackage フォルダは、手作業でAppxを作成するための Appx レイアウト フォルダになっています。このサンプルでは、Desktop App Converter を使用することなく、デスクトップ アプリを Appx パッケージにすることを学習するためのものになっています。 JourneyAccrossTheBridge このサンプルには、ステップ1からステップ5までの5種類が含まれています。学習の流れで説明すると、ステップ1 から ステップ 3が、Windows Forms のデスクトップ アプリを Appx 化 (ステップ1) して、タイル更新を追加(ステップ2)、バックグラウンド タスクを追加(ステップ3) と順番に既存のデスクトップ コードを機能拡張する流れになっています。 ステップ 4 以降は、それまでの流れではなく、UWP のアプリから デスクトップのコードを アプリ サービスとして使用し(ステップ4)、完全な UWP アプリへの移行(ステップ 5)となっています。 ステップ1…

0

アプリのスケーリング対応アセットについて

TechSummit では、「デスクトップ アプリを Windows ストアで公開するには」というお話をさせていただきました。この話では、Desktop App Converter (以降は、DAC と略します)を使用して、インストーラを Appx に変換したり、変換できるアプリの条件などを色々と説明しました。色々な作業を得てから、最終的なアプリに仕上げる時に必要になるタイル アイコンなどを説明するのが、今回の話題になります。 タイルなどのアセットの詳細は、「タイルとアイコン アセットのガイドライン」に詳しく説明があります。内容を読むと、スケール ベースとターゲット ベースのアセットがあることが理解できます。 スケール ベース xxxxxx.scale-100.png など、スケーリングの倍率(100、200、400、etc)に応じて切り替えるアセット。 ターゲットベース xxxxxx.targetseize-16.png など、ターゲット サイズに応じて切り替えるアセット(正方形)で、エクスプローラなどの Windows のシステム側で使用するものになります。 Visual Studio 2015 で UWP アプリのプロジェクトを作成すると、自動的にスケール ベースのアセットなどが使用できる状態になっていますので、使用するアセットをプロジェクトに追加していくことで、ターゲット サイズのアセットなども使えるようになります。ちなみに、UWP プロジェクトを新規で作成した時に、テンプレートが作成するアセットは次のものになっています。 LockScreenLogo.scale-200.png SplashScreen.scale-200.png Square44x44Logo.scale-200.png Squrae44x44Logo.targetsize-24_altform.png Square150x150Logo.scale-200.png StoreLogo.png Wide310x150Logo.scale-200.png つまり、ロックスクリーン、スプラッシュ スクリーン、小さいタイル、正方形タイル、ワイドタイルと システム用のターゲット サイズのアセット、ストア ロゴの 7 つが含まれています。一方で、DAC で作成した アプリに含まれているのは、次のようなアセットになります。 SampleAppx.44×44.png (44px x 44px)…

0

Microsoft Tech Summit へ参加させていただきます

11月1日から11月2日に Microsoft Tech Summit が開催されます。このイベントで、急遽、セッションを持つことになりました。「Desktop App Converter で変換したアプリの公開方法」と題して、お話をさせていただきます。9月に正式公開された Desktop App Converter Ver 1.0 を使って、デスクトップ アプリの変換方法から、サイドローディング、そしてストアへ公開するにはどうしたら良いかという話題を説明します。ご興味がありましたら、ご参加ください。

0

Desktop App Converter について

Desktop App Converter の v1.0 がリリースされましたので、情報を整理することが、この記事の目的になります。最初に、リリース形態は以下のようになります。 v1.0 は Windows ストア 経由での提供になります。改善したバージョンは、Windows ストアからの提供のみになることがアナウンスされています。 ベースイメージは、ダウンロード センター経由での提供になります。 現時点(10/5)では、Anniversary Update(ビルド 14393) と Insider Build 14915 と 14926、そして DesktopAppConverter の v1.0 の Zip イメージがダウンロードできます。 Desktop App Converter(DAC) を試す前に読んで頂きたいのが、「デスクトップ アプリを UWP に変換する準備をする」というドキュメントで、日本語版は翻訳が追い付いていませんが、英語版のドキュメントに以下のような記述があります。 「Your app is already a full UWP app and wants to invoke a full trust process from within the…

0

UWP で廃止された UserInformation クラスについて

今更ですが、Windows 10 の UWP アプリで、Windows 8.1 のストア アプリとの比較で廃止予定の API があることに気が付きました。そのクラスは、以下になります。 UserInformation クラスWindows 8.1 までで使用できたクラスで、Windows 10 では正常に動作しなくなっています。 User クラスWindows 10 の UWP より提供された新しいクラスで、UserInformation を使用していた場合は置き換える必要があります。 この変更の背景ですが、Windows 10 ではプライバシー設定に新しく「アカウント情報」が追加されています。このアカウント情報には、User クラスを使ってアカウント情報へアクセスするアプリに許可を与える操作(ダイアログが表示されます)を行ったアプリが表示されます。また、User クラスを使用するアプリの場合は、Package.Appxmanifest の機能で「アカウント情報」を指定しておく必要があります。 プライバシー設定に「アカウント情報」が追加されたことにより、Windows 8.1 までのアプリの動作に影響を与えてしまいます。Windows 8.1 までは、UserInformation クラスを使ったアカウント情報へのアクセスが自由にできるようになっていました。というのは、プライバシー設定で「アカウント情報」という分類がなかったからです。Windows 10 では、「アカウント情報」が新設されたことにより、Windows 8.1 までのアプリは UserInformation クラスの GetDisplayNameAsync メソッドなどが値を返さなくなります。この問題を避けるには、アプリを UWP に作り替えるしか方法がありません。なぜなら、Package.Appxmanifest の機能で「アカウント情報」を指定できるのが UWP しかないということと Windows 10 SDK を使用しないと新しい User クラスへアクセスすることができないからです。 User…

2