Desktop App Converter を使用してデスクトップ アプリケーションをパッケージ化します。

Desktop App Converter を入手する

Desktop App Converter (DAC) は、配布を含む、Microsoft Store 経由でサービスに最新の Windows の機能を統合するために、デスクトップ アプリケーション用のパッケージを作成します。 Win32 アプリや .NET 4.6.1 を使用して作成されたアプリも対象になります。

DAC アイコン

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

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

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

重要

(そうでない場合は、デスクトップ ブリッジと呼ばれます)、デスクトップ アプリケーションの Windows アプリ パッケージを作成する機能は Windows 10 バージョン 1607 で導入され、Windows 10 Anniversary Update (10.0; をターゲットとするプロジェクトでのみ使用できます。ビルド 14393) 以降の Visual Studio でリリースされます。

注意

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

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

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

Windows 10 Creators Update

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

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

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

Windows 10 Anniversary Update 以降

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

::heavy_check_mark: パッケージ アプリと Microsoft Store 要件に照らしてアプリを検証します。

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

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

まず、アプリケーションを準備します

アプリケーションのパッケージの作成を開始する前に、このガイドを確認します。デスクトップ アプリケーションのパッケージを準備します。

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

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

Desktop App Converter を起動する

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

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

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

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

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

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

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

    そのためには、[ファイル名を指定して実行] ダイアログ ボックスで「winver」と入力し、[OK] をクリックします。

    winver

    [Windows のバージョン情報] ダイアログ ボックスに Windows ビルドのバージョンが表示されます。

    Windows 10 のバージョン

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

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

    重要

    ビルド番号 15063 を使用しており、そのビルドのマイナー バージョンが .483 以上 (例: 15063.540) である場合は、BaseImage-15063-UPDATE.wim ファイルをダウンロードします。 そのビルドのマイナー バージョンが .483 未満である場合は、BaseImage-15063.wim ファイルをダウンロードします。 このベース ファイルの互換性のないバージョンを既にセットアップしている場合は、修正することができます。 その方法については、このブログの投稿をご覧ください。

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

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

  5. コマンド DesktopAppConverter.exe -Setup -BaseImage .\BaseImage-1XXXX.wim -Verbose を実行してコンバーターをセットアップします。

  6. 画面の指示に従って、コンピューターを再起動します。

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

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

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

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

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

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

注意

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

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

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

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

重要

ここで留意すべき重要なことが 2 つあります。 まず、インストーラーは独立したフォルダーに配置し、そのインストーラーに関連するファイルだけを同じフォルダーに配置してください。 コンバーターは、このフォルダーの内容をすべて、分離された Windows 環境にコピーします。
次に、パートナー センターをパッケージに数値で始まる id を割り当てる場合、も-appidパラメーターに渡すようにし、そのパラメーターの値として (ピリオドの区切り記号) の後の文字列サフィックスのみを使用してください。

ビデオ

インストーラーに、従属ライブラリやフレームワークのインストーラーが含まれている場合、少し異なる方法で整理する必要があります。 複数のインストーラーとデスクトップ ブリッジの連結に関する記事をご覧ください。

セットアップの実行可能ファイルを持つアプリケーションをパッケージ化します。

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

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

重要

パートナー センターが数値で始まる場合、パッケージに id を割り当てるも-appidパラメーターに渡すを使用する (ピリオドの区切り記号) の後の文字列サフィックスのみとしてそのパラメーターの値を確認します。

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

重要

パートナー センターが数値で始まる場合、パッケージに id を割り当てるも-appidパラメーターに渡すを使用する (ピリオドの区切り記号) の後の文字列サフィックスのみとしてそのパラメーターの値を確認します。

ビデオ

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

この例は、ローカル テスト用アプリケーションに署名し、パッケージ アプリと Microsoft Store 要件に照らしてアプリを検証する方法を示しています点を除いて 1 つ目に似ています。

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

重要

パートナー センターが数値で始まる場合、パッケージに id を割り当てるも-appidパラメーターに渡すを使用する (ピリオドの区切り記号) の後の文字列サフィックスのみとしてそのパラメーターの値を確認します。

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 です。
-MakeAppx [<SwitchParameter>] 省略可能 このスクリプトに出力で MakeAppx を呼び出すように指示するスイッチ (存在する場合)。
-MakeMSIX [<SwitchParameter>] オプション 存在する場合は、出力 MSIX パッケージとしてパッケージ化するには、このスクリプトを指示するスイッチ。
パッケージ ID パラメーター
-PackageName <String> 必須かどうか ユニバーサル Windows アプリ パッケージの名前。 パートナー センターが数値で始まる場合、パッケージに id を割り当てるも-appidパラメーターに渡すを使用する (ピリオドの区切り記号) の後の文字列サフィックスのみとしてそのパラメーターの値を確認します。
-Publisher <String> 必須かどうか ユニバーサル Windows アプリ パッケージの発行元
-Version <Version> 必須かどうか ユニバーサル Windows アプリ パッケージのバージョン番号
パッケージ マニフェスト パラメーター
-AppExecutable <String> オプション アプリケーションのメインの実行可能ファイルの名前 (例:"MyApp.exe")。 インストーラーを使用しない変換では、このパラメーターは必須です。
-AppFileTypes <String> オプション アプリケーションに関連付ける、ファイルの種類のコンマ区切りの一覧。 使用例: -AppFileTypes "'.md', '.markdown'"。
-AppId <String> オプション Windows アプリ パッケージ マニフェストでアプリケーション ID を設定する値を指定します。 指定しないと、PackageName で渡した値が設定されます。 多くの場合、PackageName を使って問題ありません。 ただし、パートナー センターをパッケージに数値で始まる id を割り当てる場合、も-appidパラメーターに渡すようにし、そのパラメーターの値として (ピリオドの区切り記号) の後の文字列サフィックスのみを使用してください。
-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> オプション 既に展開済みの基本イメージの完全パス。
-LogFile <String> オプション ログ ファイルを指定します。 省略した場合は、ログ ファイルの一時的な場所が作成されます。
-Sign [<SwitchParameter>] オプション 出力する Windows アプリ パッケージに、テスト用に生成された証明書を使用して署名するようにこのスクリプトに指示します。 このスイッチは、-MakeAppx スイッチと共に含める必要があります。
<共通パラメーター> 必須 このコマンドレットは、共通パラメーター VerboseDebugErrorActionErrorVariableWarningActionWarningVariableOutBufferPipelineVariableOutVariable をサポートします。 詳しくは、「about_CommonParameters」をご覧ください。
-Verify [<SwitchParameter>] オプション 指定されている場合、パッケージ アプリと Microsoft Store 要件に照らして、アプリ パッケージを検証するように DAC に指示するスイッチ。 結果は、検証レポート "VerifyReport.xml" で、ブラウザーでの視覚化に最適です。 このスイッチは、-MakeAppx スイッチと共に指定する必要があります。
-PublishComRegistrations 省略可能 インストーラーによって行われたすべての パブリック COM 登録をスキャンし、有効な登録をマニフェストで公開します。 このフラグは、これらの登録を他のアプリケーションで利用できるようにする場合にのみ使用してください。 これらの登録を対象アプリケーションでのみ使用する場合、このフラグを使用する必要はありません。

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

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

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

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

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

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

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

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

    注意

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

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

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

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

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

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

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

    [インストール] ボタン

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

バグを解決、ビジュアルのアセットを追加またはライブ タイルなどの最新のエクスペリエンスを使用してアプリケーションを強化にパッケージ化されたアプリケーションに変更を加えたあります可能性があります。

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

注意

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

ビデオ

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

次の 2 つのセクションでは、いくつかの省略可能な修正を検討してパッケージ化されたアプリケーションにについて説明します。

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

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

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

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

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

PEHeaderCertFixTool.exe <binary file>|<.appx package>|<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

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 文字をツールで使用することはできません。

次のステップ

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

ご質問がある場合は、 Stack Overflow でお問い合わせください。 Microsoft のチームでは、これらのタグをチェックしています。 こちらから質問することもできます。

ここで既知の問題の一覧を確認することもできます。

フィードバックの提供または機能の提案を行う

UserVoice のページをご覧ください。

アプリケーションを実行し、検索/問題を修正します。

実行、デバッグ、およびデスクトップ アプリケーションをパッケージ化されたテストを参照してください。

アプリを配布する

デスクトップ アプリケーションのパッケージの配布を参照してください。