9月14日(米国時間)、Microsoftは「Desktop App Converter」が正式版になったことを発表した。Desktop App Converterは、デスクトップアプリをUWP (ユニバーサルWindowsプラットフォーム) で動作するようにラッピングし、ストアで公開できるようにする変換ツールである。PowerShellをベースとしており、Microsoftの開発者向けセッションでは、「Project Centennial」の名称で紹介されてきた。

「ストア」上で公開されたDesktop App Converter バージョン 1.0

基本的にはWindows 10のベースイメージをコンテナー経由で利用し、.NETまたはWin32のデスクトップアプリはそのイメージ上でインストーラーを実行して、必要なレジストリエントリーなどを確認。UWP APIとの連携を確認しながら、UWPパッケージである「AppX」に変換するのがDesktop App Converterの主目的だ。

変換後のUWPアプリケーションはあくまでもデスクトップアプリのため、XboxやHoloLensでは動作しないが、Microsoftは長年蓄積してきたデスクトップアプリをストア上へ移行し、最終的にはWaaS (Windows as a Services) の世界へアプリケーション開発者を誘いたいと考えている。

その一例としてMicrosoftは、デスクトップアプリ版「Evernote」をストア上で公開したが、日本国内からアクセスすると、Windowsストアアプリ版の「Evernote Touch」に飛ばされるため、筆者は動作を確認していない。

コンバートしたAppXの構造。仮想マシンを使ってデスクトップアプリの実行環境を構築し、UWPアプリケーションとして動作する (公式ブログより抜粋)

EvernoteのUWPアプリケーションは、Desktop App Converterでデスクトップアプリ版を変換したものだ。UWP版ではサイドバーナビゲーションが加わる (同上)

Desktop App Converterは以前からベータ版を公開していたため、エンドユーザーである我々も試すことができた。筆者もWindows 10 Insider Previewの上で試してきたが、久しくPowerShellから遠ざかっていたせいか、コンバート時に発生するエラーに対処できず放置してきた経緯がある。そこで今回改めてチャレンジしてみた。

メインPCはWindows 10 Insider Previewをインストールしており、OSビルドは14926である。ベースイメージファイルは執筆時点でCB (Current Branch) の「BaseImage-14393.wim」、Insider Previewの「BaseImage-14915.wim」「BaseImage-14926.wim」の3ファイルがダウンロード可能だ。OSと同じくBaseImage-14926.wimをPowerShell上で展開し、Desktop App Converter.exeで変換を実行してみたが、結果は失敗。「コンテナーのオペレーティングシステムと、ホストのオペレーティングシステムが一致しません」というエラーが発生する。ちなみにベースイメージファイルは、「%ProgramData%\Microsoft\Windows\Images\BaseImage-XXXXX」フォルダーに展開されるが、XXXXXはもちろん14926。これまでのベータ版でも目にしたことがないエラーだ。

Windows 10 Insider Preview ビルド14926上で実行したところ、OSのバージョンが合致しないという……

こちらはベースイメージの内容。パス名にあるとおり、まちがっていないはずだ

次に、Windows 10 バージョン1607をインストールした別PCでも同様に試したところ、Windows 10 SDKがないと叱られてしまう始末。メインPCはVisual Studio 2015 Update 3をインストールしているため、SDKが必要であることをすっかり失念していた。

改めてWindows 10 SDKをインストールし、Desktop App Converterを叩いたところ、今度は問題なく変換処理がスタート。ものの数分で完了した。しかし、アプリケーションの証明書が存在しないため、AppXを直接インストールすることができず、AppxManifest.xmlを用いてOSにデスクトップアプリを登録する

Windows 10 バージョン1607では簡単に変換が完了した

パッケージには署名がないため、そのままではインストールできない

ようやくスタートメニューに変換したデスクトップアプリが登録され、起動する。今回は「XnView」という画像閲覧ツールを変換してみたが、下図に示したとおり、正しく動作することを確認できた。なお、アイコンや関連付け設定はAppxManifest.xmlファイルに記述すれば変更できるらしいが、今回は割愛する。

「AppxManifest.xml」をコマンドレットを使って登録する

ようやくスタートメニューにデスクトップアプリが登録される

変換したデスクトップアプリの動作を「Process Explorer」で閲覧中。変換したバイナリが実行されていることを確認できる

Microsoftは、Desktop App Converterに関する説明をBuild 2016で行った際、変換・強化・延長・移行・展開の5ステップで、デスクトップアプリからUWPアプリケーションへの移行を促していた。Desktop App Converterは、ステップ1~2までに位置し、UWPアプリケーション化するには開発者自身の努力が必要だ。今回の検証で感じたのはコマンドラインの操作に慣れた開発者なら問題なく変換できるものの、WaaSプラットフォームで動作するアプリケーションに生まれ変わらせるには、UWP化が欠かせない。正式版Desktop App Converterの登場で、すぐに何かが変わる訳ではないが、ソフトウェア開発者の救済手段となる可能性は高いだろう。

阿久津良和(Cactus)