パッケージ デスクトップ アプリの配布 (デスクトップ ブリッジ)

パッケージ デスクトップ アプリは、Windows ストアに公開することも、1 台以上のデバイスにサイドローディングで展開することもできます。

注意

パッケージ アプリにユーザーを移行する方法について、計画はありますか? アプリを配布する前に、このガイドの「デスクトップ ブリッジ アプリにユーザーを移行する」セクションを参照して、アイデアを得てください。

Windows ストアに公開してアプリを配布する

Windows ストアは、お客様がアプリを取得する場合に最も便利な方法です。

ストアのアイコン
ストアでは、幅広いお客様を対象にしてアプリを公開できます。 また、組織のお客様はビジネス向け Windows ストアを通じてアプリを入手し、組織内で配布できます。

Windows ストアへの公開を計画していて、まだマイクロソフトにご連絡いただいていない場合は、このフォームにご記入ください。オンボード プロセスについて、マイクロソフトからご連絡させていただきます。

ストアに提出する前に、アプリに署名する必要はありません。

重要

Windows ストアにアプリを公開する場合は、Windows 10 S を実行するデバイスでアプリが正しく動作することを確認してください。これは、ストア要件です。 「Windows アプリの Windows 10 S 対応をテストする」をご覧ください。

Windows ストアに掲載せずにアプリを配布する

ストアを使用せずにアプリを配布する場合は、1 台または複数のデバイスにアプリを手動で配布できます。

この方法は、配布エクスペリエンスをきめ細かく制御する必要がある場合や、Windows ストアの認定プロセスへの関与が望ましくない場合などに有効です。

アプリをストアに掲載せずに他のデバイスに配布するには、証明書を取得し、その証明書を使ってアプリに署名して、各デバイスにアプリをサイドローディング展開する必要があります。

証明書を作成することも、Verisign などのポピュラーなベンダーから取得することもできます。

Windows 10 S を実行するデバイスへのアプリ配布を計画している場合、Windows ストアによるアプリへの署名が必要であるため、デバイスへのアプリ配布を開始する前に、Windows ストア提出プロセスを実施する必要があります。

証明書を作成する場合は、アプリを実行する各デバイスの証明書ストア ("信頼されたルート" または "信頼されたユーザー") にインストールする必要があります。 ポピュラーなベンダーから証明書を取得する場合、システムにはアプリの他に何もインストールする必要はありません。

重要

証明書の発行元名がアプリの発行者名と一致することを確認してください。

証明書を使ってアプリに署名する方法については、「SignTool を使ってアプリ パッケージに署名する」をご覧ください。

他のデバイスにアプリをサイドローディング展開する方法については、「Windows 10 での LOB アプリのサイドローディング」をご覧ください。

ビデオ

Windows ストアへのアプリ公開 エンタープライズ アプリの配布

デスクトップ ブリッジ アプリにユーザーを移行する

ユーザーによってデスクトップ ブリッジ アプリが使用されるようにするには、アプリを配布する前に、パッケージ マニフェストにいくつかの拡張機能を追加することを検討してください。 次のようなことができます。

  • 既存のスタート タイルとタスク バー ボタンの参照先をデスクトップ ブリッジ アプリに設定します。
  • パッケージ アプリを一連のファイルの種類に関連付けます。
  • 特定の種類のファイルが既定でデスクトップ ブリッジ アプリによって開かれるように設定します。

拡張機能の完全な一覧と使用方法のガイダンスについては、「アプリにユーザーを移行する」をご覧ください。

また、次のようなタスクを実行するコードをデスクトップ ブリッジ アプリに追加することも検討してください。

  • デスクトップ ブリッジ アプリの適切なフォルダーに、デスクトップ アプリに関連付けられているユーザー データを移行します。
  • アプリのデスクトップ バージョンをアンインストールするためのオプションをユーザーに示します。

これらのタスクについて、それぞれ説明します。 ユーザー データの移行から開始します。

ユーザー データの移行

ユーザー データを移行するためのコードを追加する場合、そのコードはアプリを初めて起動したときにのみ実行することをお勧めします。 ユーザー データを移行する前に、ユーザーに対してダイアログ ボックスを表示して、何が起こっているか、なぜ移行が推奨されるのか、既存のデータにどのような影響があるかを説明します。

例として、.NET ベースのデスクトップ ブリッジ アプリでの方法を次に示します。

private void MigrateUserData()
{
    String sourceDir = Environment.GetFolderPath
        (Environment.SpecialFolder.ApplicationData) + "\\AppName";

    if (sourceDir != null)
    {
        String migrateMessage =
            "Would you like to migrate your data from the previous version of this app?";

        DialogResult migrateResult = MessageBox.Show
            (migrateMessage, "Data Migration", MessageBoxButtons.YesNo);

        if (migrateResult.Equals(DialogResult.Yes))
        {
            String destinationDir =
                Windows.Storage.ApplicationData.Current.LocalFolder.Path + "\\AppName";

            Process process = new Process();
            process.StartInfo.FileName = "robocopy.exe";
            process.StartInfo.Arguments = "%LOCALAPPDATA%\\AppName " + destinationDir + " /move";
            process.StartInfo.CreateNoWindow = true;
            process.Start();
            process.WaitForExit();

            if (process.ExitCode > 1)
            {
                //Migration was unsuccessful -- you can choose to block/retry/other action
            }
        }
    }
}

アプリのデスクトップ バージョンをアンインストールする

先に許可を求めずにユーザーのデスクトップ アプリをアンインストールすることは、好ましくありません。 ユーザーに許可を求めるには、そのためのダイアログ ボックスを表示します。 ユーザーによって、アプリのデスクトップ バージョンをアンインストールしないように指定されることも考えられます。 その場合に、デスクトップ アプリの使用をブロックするか、両方のアプリのサイド バイ サイド使用をサポートするかを決定する必要があります。

例として、.NET ベースのデスクトップ ブリッジ アプリでの方法を次に示します。

このスニペットの完全なコンテキストを確認するには、「WPF picture viewer with transition/migration/uninstallation」というサンプルのMainWindow.cs ファイルをご覧ください。

private void RemoveDesktopApp()
{              
    //Typically, you can find your uninstall string at this location.
    String uninstallString = (String)Microsoft.Win32.Registry.GetValue
        (@"HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion" +
         @"\Uninstall\{7AD02FB8-B85E-44BC-8998-F4803BA5A0E3}\", "UninstallString", null);

    //Detect if the previous version of the Desktop App is installed.
    if (uninstallString != null)
    {
        String uninstallMessage = "To have the best experience, consider uninstalling the "
            +" previous version of this app. Would you like to do that now?";

        DialogResult uninstallResult = MessageBox.Show
            (uninstallMessage, "Uninstall the previous version", MessageBoxButtons.YesNo);

        if (uninstallResult.Equals(DialogResult.Yes))
        {
                    string[] uninstallArgs = uninstallString.Split(' ');

            Process process = new Process();
            process.StartInfo.FileName = uninstallArgs[0];
            process.StartInfo.Arguments = uninstallArgs[1];
            process.StartInfo.CreateNoWindow = true;

            process.Start();
            process.WaitForExit();

            if (process.ExitCode != 0)
            {
                //Uninstallation was unsuccessful - You can choose to block the app here.
            }
        }
    }

}

ビデオ

次のステップ

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

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

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

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