パッケージ デスクトップ アプリの配布 (デスクトップ ブリッジ)Distribute a packaged desktop app (Desktop Bridge)

パッケージ デスクトップ アプリは、Windows ストアに公開することも、1 台以上のデバイスにサイドローディングで展開することもできます。Publish your packaged desktop app to a Windows store or sideload it onto one or more devices.

注意

パッケージ アプリにユーザーを移行する方法について、計画はありますか? Do you have a plan for how you might transition users to your packaged app? アプリを配布する前に、このガイドの「パッケージ アプリにユーザーを移行する」セクションを参照して、アイデアを得てください。Before you distribute your app, see the Transition users to your packaged app section of this guide to get some ideas.

Microsoft Store に公開してアプリを配布するDistribute your app by publishing it to the Microsoft Store

Microsoft Store は、お客様がアプリを取得する場合に最も便利な方法です。The Microsoft Store is a convenient way for customers to get your app.

Microsoft Store では、幅広いお客様を対象にしてアプリを公開できます。Publish your app to that store to reach the broadest audience. また、組織のお客様はビジネス向け Microsoft Store を通じてアプリを入手し、組織内で配布できます。Also, organizational customers can acquire your app to distribute internally to their organizations through the Microsoft Store for Business.

Microsoft Store への公開を計画している場合は、申請プロセスの一部としていくつかの追加の質問をされます。If you plan to publish to the Microsoft Store, you'll be asked a few extra questions as part of the submission process. これは、パッケージ マニフェストが runFullTrust という名前の制限付き機能を宣言し、弊社でアプリケーションによるその機能の使用を承認する必要があるためです。That's because your package manifest declares a restricted capability named runFullTrust, and we need to approve your application's use of that capability. この要件の詳細については、「制限付き機能」を参照してください。You can read more about this requirement here: Restricted capabilities.

Microsoft Store に提出する前に、アプリに署名する必要はありません。You don't have to sign your app before you submit it to the store.

重要

Microsoft Store にアプリを公開する場合は、Windows 10 S を実行するデバイスでアプリが正しく動作することを確認してください。これは、Store 要件です。If you plan to publish your app to the Microsoft Store, make sure that your app operates correctly on devices that run Windows 10 S. This is a store requirement. Windows アプリの Windows 10 S 対応をテストする」をご覧ください。See Test your Windows app for Windows 10 S.

Microsoft Store に掲載せずにアプリを配布するDistribute your app without placing it onto the Microsoft Store

Microsoft Store を使用せずにアプリを配布する場合は、1 台または複数のデバイスにアプリを手動で配布できます。If you'd rather distribute your app without using the store, you can manually distribute apps to one or more devices.

この方法は、配布エクスペリエンスをきめ細かく制御する必要がある場合や、Microsoft Store の認定プロセスへの関与が望ましくない場合などに有効です。This might make sense if you want greater control over the distribution experience or you don't want to get involved with the Microsoft Store certification process.

アプリをストアに掲載せずに他のデバイスに配布するには、証明書を取得し、その証明書を使ってアプリに署名して、各デバイスにアプリをサイドローディング展開する必要があります。To distribute your app to other devices without placing it onto the store, you have to obtain a certificate, sign your app by using that certificate, and then sideload your app onto those devices.

証明書を作成することも、Verisign などのポピュラーなベンダーから取得することもできます。You can create a certificate or obtain one from a popular vendor such as Verisign.

Windows 10 S を実行するデバイスへのアプリ配布を計画している場合、Microsoft Store によるアプリへの署名が必要であるため、デバイスへのアプリ配布を開始する前に、Microsoft Store 提出プロセスを実施する必要があります。If you plan to distribute your app onto devices that run Windows 10 S, your app has to be signed by the Microsoft Store so you'll have to go through the Store submission process before you can distribute your app onto those devices.

証明書を作成する場合は、アプリを実行する各デバイスの証明書ストア ("信頼されたルート" または "信頼されたユーザー") にインストールする必要があります。If you create a certificate, you have to install it into the Trusted Root or Trusted People certificate store on each device that runs your app. ポピュラーなベンダーから証明書を取得する場合、システムにはアプリの他に何もインストールする必要はありません。If you get a certificate from a popular vendor, you won't have to install anything onto other systems besides your app.

重要

証明書の発行元名がアプリの発行者名と一致することを確認してください。Make sure that the publisher name on your certificate matches the publisher name of your app.

証明書を使ってアプリに署名する方法については、「SignTool を使ってアプリ パッケージに署名する」をご覧ください。To sign your app by using a certificate, see Sign an app package using SignTool.

他のデバイスにアプリをサイドローディング展開する方法については、「Windows 10 での LOB アプリのサイドローディング」をご覧ください。To sideload your app onto other devices, see Sideload LOB apps in Windows 10.

ビデオVideos

Microsoft Store へのアプリ公開Publish your app into the Microsoft Store エンタープライズ アプリの配布Distribute an enterprise app

パッケージ アプリへのユーザーの移行Transition users to your packaged app

ユーザーによってパッケージ アプリが使用されるようにするには、アプリを配布する前に、パッケージ マニフェストにいくつかの拡張機能を追加することを検討してください。Before you distribute your app, consider adding a few extensions to your package manifest to help users get into the habit of using your packaged app. 次のようなことができます。Here's a few things you can do.

  • 既存のスタート タイルとタスク バー ボタンの参照先をパッケージ アプリに設定する。Point existing Start tiles and taskbar buttons to your packaged app.
  • パッケージ アプリを一連のファイルの種類に関連付ける。Associate your packaged app with a set of file types.
  • 特定の種類のファイルが既定でパッケージ アプリによって開かれるように設定する。Make your packaged app open certain types of files by default.

拡張機能の完全な一覧と使用方法のガイダンスについては、「アプリにユーザーを移行する」を参照してください。For the complete list of extensions and the guidance for how to use them, see Transition users to your app.

また、次のようなタスクを実行するコードをパッケージ アプリに追加することも検討してください。Also, consider adding code to your packaged app that accomplishes these tasks:

  • パッケージ アプリの適切なフォルダーに、デスクトップ アプリに関連付けられているユーザー データを移行します。Migrates user data associated with your desktop app to the appropriate folder locations of your packaged app.
  • アプリのデスクトップ バージョンをアンインストールするためのオプションをユーザーに示します。Gives users the option to uninstall the desktop version of your app.

これらのタスクについて、それぞれ説明します。Let's talk about each one of these tasks. ユーザー データの移行から開始します。We'll start with user data migration.

ユーザー データの移行Migrate user data

ユーザー データを移行するためのコードを追加する場合、そのコードはアプリを初めて起動したときにのみ実行することをお勧めします。If you're going to add code that migrates user data, it's best to run that code only when the app is first started. ユーザー データを移行する前に、ユーザーに対してダイアログ ボックスを表示して、何が起こっているか、なぜ移行が推奨されるのか、既存のデータにどのような影響があるかを説明します。Before you migrate the users data, display a dialog box to the user that explains what is happening, why it is recommended, and what's going to happen to their existing data.

例として、.NET ベースのパッケージ アプリでの方法を次に示します。Here's an example of how you could do this in a .NET-based packaged app.

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

    if (sourceDir != null)
    {
        DialogResult migrateResult = MessageBox.Show
            ("Would you like to migrate your data from the previous version of this app?",
             "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
            }
        }
    }
}

アプリのデスクトップ バージョンをアンインストールするUninstall the desktop version of your app

先に許可を求めずにユーザーのデスクトップ アプリをアンインストールすることは、好ましくありません。It is better not to uninstall the users desktop app without first asking them for permission. ユーザーに許可を求めるには、そのためのダイアログ ボックスを表示します。Display a dialog box that asks the user for that permission. ユーザーによって、アプリのデスクトップ バージョンをアンインストールしないように指定されることも考えられます。Users might decide not to uninstall the desktop version of your app. その場合に、デスクトップ アプリの使用をブロックするか、両方のアプリのサイド バイ サイド使用をサポートするかを決定する必要があります。If that happens, you'll have to decide whether you want to block usage of the desktop app or support the side-by-side use of both apps.

例として、.NET ベースのパッケージ アプリでの方法を次に示します。Here's an example of how you could do this in a .NET-based packaged app.

このスニペットの完全なコンテキストを確認するには、「WPF picture viewer with transition/migration/uninstallation」というサンプルの MainWindow.cs ファイルを参照してください。To view the complete context of this snippet, see the MainWindow.cs file of this sample WPF picture viewer with transition/migration/uninstallation.

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)
    {
        DialogResult uninstallResult = MessageBox.Show
            ("To have the best experience, consider uninstalling the "
              + " previous version of this app. Would you like to do that now?",
              "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.
            }
        }
    }

}

ビデオVideo

次のステップNext steps

質問に対する回答を見つけるFind answers to your questions

ご質問がある場合は、Have questions? Stack Overflow でお問い合わせください。Ask us on Stack Overflow. Microsoft のチームでは、これらのタグをチェックしています。Our team monitors these tags. こちらから質問することもできます。You can also ask us here.

Microsoft Store へのアプリの公開で問題が発生した場合は、このブログ投稿で役に立つヒントを参照できます。If you encounter issues publishing your application to the Store, this blog post contains some useful tips.

フィードバックの提供または機能の提案を行うGive feedback or make feature suggestions

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