Desktop App Converter を使用してアプリをパッケージ化する (デスクトップ ブリッジ)

Desktop App Converter を入手する

Desktop App Converter (DAC) を使用すると、デスクトップ アプリをユニバーサル Windows プラットフォーム (UWP) に移行することができます。 Win32 アプリや .NET 4.6.1 を使用して作成されたアプリも対象になります。

DAC アイコン

このツールの名前には "Converter" という用語が含まれますが、実は、アプリの変換は行いません。 アプリは変更されません。 しかし、DACは、パッケージ ID を持ち多くの WinRT API を呼び出すことができる Windows アプリ パッケージを生成します。

このパッケージは、開発コンピューターで Add-AppxPackage という PowerShell コマンドレットを使ってインストールすることができます。

このコンバーターは、コンバーターのダウンロードに含まれるクリーンな状態の基本イメージを使って、分離された Windows 環境でデスクトップ インストーラーを実行します。 デスクトップ インストーラーが作成するすべてのレジストリとファイル システムの I/O がキャプチャされ、出力の一部としてパッケージ化されます。

注意

Microsoft Virtual Academy から公開されている、このシリーズの短いビデオをご覧ください。 これらのビデオでは、Desktop App Converter を使用する一般的な方法が紹介されています。

DAC が行うのはパッケージの生成だけではありません

他にも以下のような処理を実行できます。

Windows 10 Creators Update

チェックマーク

プレビュー ハンドラー、サムネイル ハンドラー、プロパティ ハンドラー、ファイアウォール規則、URL フラグを自動的に登録する。

チェックマーク

ファイルの種類のマッピングを自動的に登録する。これによりユーザーは、エクスプローラーの [種類] 列を使ってファイルをグループ化できるようになります。

チェックマーク

公開 COM サーバーを登録する。

Windows 10 Anniversary Update 以降

チェックマーク

アプリをテストできるように、パッケージに自動的に署名する。

チェックマーク

デスクトップ ブリッジと Windows ストアの要件に照らしてアプリを検証する。

オプションの完全な一覧については、このガイドの「パラメーター リファレンス」セクションをご覧ください。

パッケージを作成する準備ができたら、始めましょう。

まず、アプリの配布方法を検討する

アプリを Windows ストアに公開する予定であれば、このフォームへの記入から開始します。 Microsoft から、オンボード プロセスを開始するための連絡があります。 このプロセスでは、ストア内の名前を予約し、アプリをパッケージ化するための情報を取得します。

システムで DCA を実行できることを確認する

システムが以下の要件を満たしていることを確認します。

Desktop App Converter を起動する

  1. Desktop App Converterをダウンロードおよびインストールします。

  2. 管理者として Desktop App Converter を実行します。

    DAC を管理者として実行する

    コンソール ウィンドウが開きます。 コマンドを実行するには、このコンソール ウィンドウを使います。

必要な設定を行う (インストーラーがあるアプリのみ)

アプリにインストーラーがない場合は、このセクションをスキップできます。

  1. オペレーティング システムのバージョン番号を特定します。

    これを行うには、コンピューターでシステム情報アプリを開いて、オペレーティング システムのバージョン番号を見つけます。

    システム情報アプリに表示されたオペレーティング システムのバージョン

  2. 適切な Desktop App Converter 基本イメージをダウンロードします。

    ファイル名に含まれるバージョン番号が Windows ビルドのバージョン番号と一致していることを確認してください。

    一致するバージョンの基本イメージ

    ダウンロードしたファイルを後で見つけることができるように、コンピューター上の適切な場所に置きます。

  3. Desktop App Converter を起動したときに表示されるコンソール ウィンドウで、コマンド Set-ExecutionPolicy bypass を実行します。

  4. コマンド DesktopAppConverter.exe -Setup -BaseImage .\BaseImage-1XXXX.wim -Verbose を実行してコンバーターをセットアップします。
  5. 画面の指示に従って、コンピューターを再起動します。

    コンバーターによって基本イメージが展開されると、コンソール ウィンドウに状態メッセージが表示されます。 状態メッセージが表示されない場合は、任意のキーを押します。 これにより、コンソール ウィンドウの内容が更新されます。

    コンソール ウィンドウに表示された状態メッセージ

    基本イメージが完全に展開されたら、次のセクションに進みます。

アプリをパッケージ化する

アプリをパッケージ化するには、Desktop App Converter を起動したときに開くコンソール ウィンドウで DesktopAppConverter.exe コマンドを実行します。

パラメーターを使用して、アプリのパッケージ名、発行元、バージョン番号を指定します。

注意

Windows ストアでアプリ名を予約済みの場合は、Windows デベロッパー センターのダッシュ ボードを使用して、パッケージと発行元名を取得できます。 アプリを他のシステムにサイドローディング展開する場合は、独自の名前を指定できます。ただし、選択する発行元名は、アプリへの署名に使用する証明書の名前と一致する必要があります。

コマンド パラメーターの確認

必要なパラメーターは次のとおりです。

DesktopAppConverter.exe
-Installer <String>
-Destination <String>
-PackageName <String>
-Publisher <String>
-Version <Version>

各パラメーターについて詳しくは、こちらをご覧ください。

アプリをパッケージ化する一般的な方法のいくつかを以下に示します。

インストーラー (.msi) ファイルのあるアプリをパッケージ化する

Installer パラメーターでインストーラー ファイルを指定します。

DesktopAppConverter.exe -Installer C:\Installer\MyAppSetup.msi -Destination C:\Output\MyApp -PackageName "MyApp" -Publisher "CN=MyPublisher" -Version 0.0.0.1

注意

インストーラーは独立したフォルダーに配置し、そのインストーラーに関連するファイルだけを同じフォルダーに配置してください。 コンバーターは、このフォルダーの内容をすべて、分離された Windows 環境にコピーします。

ビデオ

セットアップの実行可能ファイルのあるアプリをパッケージ化する

Installer パラメーターを使って、セットアップの実行可能ファイルを指定します。

DesktopAppConverter.exe -Installer C:\Installer\MyAppSetup.exe -InstallerArguments "/S" -Destination C:\Output\MyApp -PackageName "MyApp" -Publisher "CN=MyPublisher" -Version 0.0.0.1

InstallerArguments パラメーターは省略可能なパラメーターです。 ただし、Desktop App Converter では、インストーラーを無人モードで実行する必要があるため、アプリをサイレント モードで実行するためにサイレント フラグを必要とする場合は、このパラメーターの使用が必要になることがあります。 /S フラグは非常に一般的なサイレント フラグですが、セットアップ ファイルを作成するために使用したインストーラー テクノロジによっては、使用するフラグが異なる場合もあります。

ビデオ

インストーラーのないアプリをパッケージ化する

この例では、Installer パラメーターを使用して、アプリ ファイルのルート フォルダーを指定しています。

アプリの実行可能ファイルを指定するには、AppExecutable パラメーターを使用します。

DesktopAppConverter.exe -Installer C:\Installer\MyApp\ -AppExecutable MyApp.exe -Destination C:\Output\MyApp -PackageName "MyApp" -Publisher "CN=MyPublisher" -Version 0.0.0.1

ビデオ

アプリをパッケージ化し、アプリに署名して、パッケージに対して検証チェックを実行する

この例は最初の例に似ていますが、こちらはローカル テスト用にアプリに署名し、デスクトップ ブリッジと Windows ストアの要件に照らしてアプリを変換する方法を示しています。

DesktopAppConverter.exe -Installer C:\Installer\MyAppSetup.exe -InstallerArguments "/S" -Destination C:\Output\MyApp -PackageName "MyApp" -Publisher "CN=MyPublisher" -Version 0.0.0.1 -MakeAppx -Sign -Verbose -Verify

Sign パラメーターは、証明書を生成し、その証明書でアプリに署名します。 アプリを実行するには、生成された証明書をインストールする必要があります。 その方法については、このガイドの「パッケージ アプリを実行する」セクションをご覧ください。

アプリを検証するには、Verify パラメーターを使います。

省略可能なパラメーターの確認

Sign パラメーターと Verify パラメーターは省略可能です。 他にも多数の省略可能なパラメーターがあります。 よく使用される省略可能なパラメーターを以下に示します。

[-ExpandedBaseImage <String>]
[-AppExecutable <String>]
[-AppFileTypes <String>]
[-AppId <String>]
[-AppDisplayName <String>]
[-AppDescription <String>]
[-PackageDisplayName <String>]
[-PackagePublisherDisplayName <String>]
[-MakeAppx]
[-LogFile <String>]
[<CommonParameters>]

これらについて詳しくは、次のセクションをご覧ください。

パラメーター リファレンス

ここでは、Desktop App Converter を実行するときに使用できるパラメーターの完全な一覧をカテゴリ別に示します。

アプリ コンソール ウィンドウで Get-Help コマンドを実行して完全な一覧を表示することもできます。

セットアップ パラメーター
-Setup [<SwitchParameter>] 必須 セットアップ モードで DesktopAppConverter を実行します。 セットアップ モードでは、用意されている基本イメージの展開をサポートします。
-BaseImage <String> 必須 展開されていない基本イメージの完全パス。 このパラメーターは、-Setup を指定する場合に必要です。
-LogFile <String> 省略可能 ログ ファイルを指定します。 省略した場合は、ログ ファイルの一時的な場所が作成されます。
-NatSubnetPrefix <String> 省略可能 Nat インスタンスで使うプレフィックス値。 通常この値は、ホスト コンピューターがコンバーターの NetNat と同じサブネット範囲に割り当てられている場合にのみ変更します。 現在のコンバーターの NetNat 構成は Get NetNat コマンドレットを使って照会できます。
-NoRestart [<SwitchParameter>] 必須 セットアップの実行中に再起動を要求しません (コンテナー機能を有効にするには再起動が必要です)。
変換パラメーター
-AppInstallPath <String> 省略可能 インストール済みのファイルに対応する、アプリケーションのルート フォルダーの完全パス (インストールされている場合)。"C:\Program Files (x86)\MyApp" など。
-Destination <String> 必須 コンバーターの appx を出力する場所。この場所がまだ存在しない場合は、DesktopAppConverter によって作成されます。
-Installer <String> 必須 アプリケーションのインストーラーのパス。無人/サイレント モードで実行できるようにする必要があります。 インストーラーを使用しない変換では、アプリ ファイルのルート ディレクトリへのパス。
-InstallerArguments <String> 省略可能 インストーラーに無人/サイレント モードでの実行を強制する引数の文字列、またはコンマ区切り一覧。 インストーラーが msi の場合は、このパラメーターは省略可能です。 インストーラーからログを取得するには、ここで、インストーラーのログ記録の引数を指定し、パス <log_folder> (コンバーターが適切なパスに置換するトークン) を使います。

: 無人/サイレント フラグとログの引数は、インストーラー テクノロジごとに異なります。

このパラメーターの使用例: -InstallerArguments "/silent /log <log_folder>\install.log"。ログ ファイルを生成しない別の例: -InstallerArguments "/quiet", "/norestart"。コンバーターでログをキャプチャし、最終的なログ フォルダーに格納する場合は、文字どおりすべてのログにトークン パス <log_folder> を指定する必要があります。
-InstallerValidExitCodes <Int32> 省略可能 インストーラーの正常な実行を示す、コンマで区切った終了コードの一覧 (例: 0, 1234, 5678)。 既定では、非 msi は 0、msi は 0, 1641, 3010 です。
パッケージ ID パラメーター
-PackageName <String> 必須 ユニバーサル Windows アプリ パッケージの名前
-Publisher <String> 必須 ユニバーサル Windows アプリ パッケージの発行元
-Version <Version> 必須 ユニバーサル Windows アプリ パッケージのバージョン番号
パッケージ マニフェスト パラメーター
-AppExecutable <String> 省略可能 アプリケーションのメインの実行可能ファイルの名前 (例:"MyApp.exe")。 インストーラーを使用しない変換では、このパラメーターは必須です。
-AppFileTypes <String> 省略可能 アプリケーションに関連付ける、ファイルの種類のコンマ区切りの一覧。 使用例: -AppFileTypes "'.md', '.markdown'"。
-AppId <String> 省略可能 Windows アプリ パッケージ マニフェストでアプリケーション ID を設定する値を指定します。 指定しなかった場合は、PackageName で渡した値が設定されます。
-AppDisplayName <String> 省略可能 Windows アプリ パッケージ マニフェストでアプリケーションの表示名を設定する値を指定します。 指定しなかった場合は、PackageName で渡した値が設定されます。
-AppDescription <String> 省略可能 Windows アプリ パッケージ マニフェストでアプリケーションの説明を設定する値を指定します。 指定しなかった場合は、PackageName で渡した値が設定されます。
-PackageDisplayName <String> 省略可能 Windows アプリ パッケージ マニフェストでパッケージの表示名を設定する値を指定します。 指定しなかった場合は、PackageName で渡した値が設定されます。
-PackagePublisherDisplayName <String> 省略可能 Windows アプリ パッケージ マニフェストでパッケージ発行元の表示名を設定する値を指定します。 指定しなかった場合は、Publisher で渡した値が設定されます。
クリーンアップ パラメーター
-Cleanup [<Option>] 必須 DesktopAppConverter の成果物のクリーンアップを実行します。 クリーンアップ モードには 3 つの有効なオプションがあります。
-Cleanup All 展開済みのすべての基本イメージを削除し、コンバーターのすべての一時ファイルを削除します。コンテナーのネットワークを削除し、Windows のオプション機能、コンテナーを無効にします。
-Cleanup WorkDirectory 必須 コンバーターのすべての一時ファイルを削除します。
-Cleanup ExpandedImage 必須 ホスト コンピューターにインストールされているすべての展開済みの基本イメージを削除します。
パッケージ アーキテクチャ パラメーター
-PackageArch <String> 必須 指定したアーキテクチャのパッケージを生成します。 有効なオプションは、'x86' または 'x64' です。たとえば、-PackageArch x86 のように指定します。 このパラメーターは省略可能です。 指定されていない場合、DesktopAppConverter はパッケージのアーキテクチャの自動検出を試みます。 自動検出に失敗した場合、既定値は x64 パッケージです。
その他のパラメーター
-ExpandedBaseImage <String> 省略可能 既に展開済みの基本イメージの完全パス。
-MakeAppx [<SwitchParameter>] 省略可能 このスクリプトに出力で MakeAppx を呼び出すように指示するスイッチ (存在する場合)。
-LogFile <String> 省略可能 ログ ファイルを指定します。 省略した場合は、ログ ファイルの一時的な場所が作成されます。
-Sign [<SwitchParameter>] 省略可能 出力する Windows アプリ パッケージに、テスト用に生成された証明書を使用して署名するようにこのスクリプトに指示します。 このスイッチは、-MakeAppx スイッチと共に指定する必要があります。
<共通パラメーター> 必須 このコマンドレットは、共通パラメーター VerboseDebugErrorActionErrorVariableWarningActionWarningVariableOutBufferPipelineVariableOutVariable をサポートします。 詳しくは、「about_CommonParameters」をご覧ください。
-Verify [<SwitchParameter>] 省略可能 指定された場合、デスクトップ ブリッジと Windows ストアの要件に照らして、アプリ パッケージを検証するように DAC に指示するスイッチ。 結果は、検証レポート "VerifyReport.xml" で、ブラウザーでの視覚化に最適です。 このスイッチは、-MakeAppx スイッチと共に指定する必要があります。
-PublishComRegistrations 省略可能 インストーラーによって行われたすべての パブリック COM 登録をスキャンし、有効な登録をマニフェストで公開します。 このフラグは、これらの登録を他のアプリケーションで利用できるようにする場合にのみ使用してください。 これらの登録を対象アプリケーションでのみ使用する場合、このフラグを使用する必要はありません。

アプリをパッケージ化した後、正常に動作するように COM 登録を行うには、こちらの記事をご覧ください。

パッケージ アプリを実行する

アプリを実行するには、2 種類の方法があります。

1 つ目は、PowerShell コマンド プロンプトを開いて、Add-AppxPackage –Register AppxManifest.xml というコマンドを入力する方法です。 アプリに署名する必要がないため、アプリを最も簡単に実行できるのはこちらの方法です。

2 つ目は、証明書を使ってアプリに署名する方法です。 sign パラメーターを使用すると、Desktop App Converter によって証明書が生成され、その証明書でアプリへの署名が行われます。 その証明書ファイルは auto-generated.cer という名前になり、パッケージ アプリのルート フォルダーに配置されます。

生成された証明書をインストールし、アプリを実行するには、次の手順を実行します。

  1. auto-generated.cer ファイルをダブルクリックして証明書をインストールします。

    生成された証明書ファイル

    注意

    パスワードを求められた場合は、既定のパスワード "123456" を使用します。

  2. [証明書] ダイアログ ボックスで、[証明書のインストール] を選択します。

  3. 証明書インポート ウィザードで、証明書をローカル コンピューターにインストールし、証明書を "信頼されたユーザー" の証明書ストアに配置します。

    信頼されたユーザー ストア

  4. パッケージ アプリのルート フォルダーで、Windows アプリのパッケージ ファイルをダブルクリックします。

    Windows アプリのパッケージ ファイル

  5. [インストール] を選択してアプリをインストールします。

    [インストール] ボタン

パッケージ アプリを変更する

パッケージ アプリには、バグの修正、ビジュアル資産の追加、モダン エクスペリエンス (ライブ タイルなど) によるアプリの拡張などのために変更が必要になる可能性があります。

変更を加えた後、もう一度コンバーターを実行する必要はありません。 MakeAppx ツールと、DAC によってアプリ用に生成される appxmanifest.xml ファイルを使ってアプリを再パッケージ化することができます。 「Windows アプリ パッケージを生成する」をご覧ください。

注意

インストーラーによるレジストリ設定を変更した場合は、その変更を適用するために、Desktop App Converter をもう一度実行する必要があります。

ビデオ

出力の変更と再パッケージ化 デモ: 出力の変更と再パッケージ化

次の 2 つのセクションでは、パッケージ アプリについて検討可能な調整オプションについて説明します。

不要なファイルとレジストリ キーを削除する

Desktop App Converter では、コンテナー内のファイルとシステム ノイズの除去に、非常に保守的なアプローチを取っています。

VFS フォルダーを確認し、インストーラーに必要ないファイルがあれば、削除することもできます。 また、Reg.dat の内容を確認し、アプリによってインストールされないキーや不要なキーがあれば、削除できます。

破損した PEヘッダーを修正する

DesktopAppConverter は 変換処理中に PEHeaderCertFixTool を自動的に実行し、破損している PEヘッダーを修正します。 ただし、UWP の Windows アプリ パッケージ、ルーズ ファイル、または特定のバイナリで、PEHeaderCertFixTool を実行することも可能です。 次に例を示します。

PEHeaderCertFixTool.exe <binary file>|<.appx package>|&lt;folder> [/c] [/v]
 /c   -- check for corrupted certificate but do not fix (optional)
 /v   -- verbose (optional)
example1: PEHeaderCertFixTool app.exe
example2: PEHeaderCertFixTool c:\package.appx /c
example3: PEHeaderCertFixTool c:\myapp /c /v

既知の問題と開示情報

既知の問題と回避方法

ここでは、既知の問題と、試すことのできる解決方法を示します。

E_CREATING_ISOLATED_ENV_FAILED エラーと E_STARTING_ISOLATED_ENV_FAILED エラー

これらのエラーのうちいずれかが発生した場合は、ダウンロード センターから取得した有効な基本イメージを使用しているか確認してください。 有効な基本イメージを使っている場合は、コマンドに -Cleanup All を含めてみてください。 それでも問題が解決しない場合は、調査用としてログを converter@microsoft.com にお送りください。

"New-ContainerNetwork: オブジェクトは既に存在します" エラー

新しい基本イメージをセットアップするときは、このエラーが発生する可能性があります。 Desktop App Converter が先にインストールされた開発用コンピューターに Windows Insider フライトがある場合に、このエラーが発生することがあります。

この問題を解決するには、管理者特権で開いたコマンド プロンプトで Netsh int ipv4 reset コマンドを実行して、コンピューターを再起動します。

.NET アプリが "AnyCPU" ビルド オプションでコンパイルされ、インストールに失敗する

この問題は、メインの実行可能ファイルまたは何らかの依存ファイルが、Program Files または Windows\System32 のフォルダー階層に配置された場合に発生することがあります。

この問題を解決するには、アーキテクチャ固有のデスクトップ インストーラー (32 ビットまたは 64 ビット) を使って Windowsアプリ パッケージを生成してみてください。

パブリック side-by-side Fusion アセンブリの公開が機能しない

アプリケーションは、インストール中にパブリック side-by-side Fusion アセンブリを公開して、他のプロセスからアクセスできるようにします。 これらのアセンブリは、プロセスのアクティブ化コンテキストの作成中に、CSRSS.exe という名前のシステム プロセスによって取得されます。 変換プロセスでこれが行われると、アクティブ化コンテキスト作成とこれらのアセンブリのモジュール読み込みは失敗します。 side-by-side Fusion アセンブリは、次の場所に登録されています。

  • レジストリ: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Winners
  • ファイル システム: %windir%\SideBySide

これは、既知の制限であり、今のところ回避策はありません。 ただし、ComCtl などの受信トレイ アセンブリは OS に同梱されているため、これらのアセンブリに依存していても安全です。

XML にエラーが見つかり、 'Executable' 属性が無効 - 'MyApp.EXE' の値がデータ型に対して無効

この問題は、アプリケーションに含まれる実行可能ファイルの .EXE 拡張子が大文字になっている場合に発生することがあります。 この拡張子が大文字であってもアプリの実行には影響しませんが、DAC ではこのエラーが発生する場合があります。

この問題を解決するには、パッケージ化を行うときに -AppExecutable フラグを指定し、メインの実行可能ファイルの拡張子として小文字の ".exe" を使用してみてください (例: MYAPP.exe)。 または、アプリに含まれるすべての実行可能ファイルについて、小文字を大文字に変更することもできます (例: .EXE を .exe に変更する)。

Desktop App Converter の利用統計情報

Desktop App Converter は、ソフトウェアの使用者と使用方法に関する情報を収集して、この情報を Microsoft に送信することがあります。 Microsoft のデータ収集と製品ドキュメントでの使用の詳細については、「マイクロソフトのプライバシーに関する声明」をご覧ください。 マイクロソフトのプライバシーに関する声明の該当するすべての条項に準拠することに同意します。

既定では、Desktop App Converter の利用統計情報は有効にされています。 利用統計情報を目的の設定に構成するには、次のレジストリ キーを追加します。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DesktopAppConverter
  • DWORD を 1 に設定して、DisableTelemetry 値を追加または編集します。
  • 利用統計情報を有効にするには、このキーを削除するかキーの値を 0 に設定します。

言語サポート

Desktop App Converterは、Unicode をサポートしていません。したがって、漢字または非 ASCII 文字をツールで使用することはできません。

次のステップ

アプリを実行する/問題を検出して修正する

パッケージ デスクトップ アプリの実行、デバッグ、テスト (デスクトップ ブリッジ) をご覧ください。

アプリを配布する

パッケージ デスクトップ アプリの配布 (デスクトップ ブリッジ) をご覧ください。

特定の質問に対する回答を見つける

マイクロソフトのチームでは、StackOverflow タグをチェックしています。

この記事に関するフィードバックを送信する

下のコメント セクションをご利用ください。