デスクトップ アプリケーションのパッケージを配布します。Distribute a packaged desktop application

Microsoft ストアまたはサイドローディングをパッケージ化されたデスクトップ アプリケーションを公開して 1 つまたは複数のデバイスにします。Publish your packaged desktop application to the Microsoft Store or sideload it onto one or more devices.

注意

パッケージ アプリにユーザーを移行する方法を計画していますか。Do you have a plan for how you might transition users to your packaged application? アプリを配布する前に、このガイドの「パッケージ アプリにユーザーを移行する」セクションを参照して、アイデアを得てください。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 application 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 application to the Microsoft Store to reach the broadest audience. また、組織のお客様は、ビジネス向け Microsoft ストアを通じて、組織に内部的に配布するアプリを入手できます。Also, organizational customers can acquire your application 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.

ストアに提出する前に、アプリケーションに署名する必要はありません。You don't have to sign your application before you submit it to the Store.

重要

Microsoft Store にアプリを公開する場合は、アプリが Windows 10 秒を実行しているデバイスで正しく動作することを確認します。これは、ストア要件です。If you plan to publish your application to the Microsoft Store, make sure that your application 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 application without placing it onto the Microsoft Store

配布するアプリのストアを使用せず場合、は、1 つまたは複数のデバイスにアプリを手動で配布できます。If you'd rather distribute your application 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 application to other devices without placing it in the Store, you have to obtain a certificate, sign your application by using that certificate, and then sideload your application onto those devices.

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

Windows 10 S を実行しているデバイスにアプリを配布する場合は、それらのデバイスにアプリを配布する前に、ストアの申請プロセスを通過する必要があるため、Microsoft Store に署名するアプリケーションを持ちます。If you plan to distribute your application onto devices that run Windows 10 S, your application has to be signed by the Microsoft Store so you'll have to go through the Store submission process before you can distribute your application 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 application by using a certificate, see Sign an application package using SignTool.

サイドローディングは、他のデバイスに、アプリケーションは、 LOB アプリのサイドローディングでは、Windows 10をご覧ください。To sideload your application onto other devices, see Sideload LOB apps in Windows 10.

ビデオVideos

Microsoft Store にアプリを公開します。Publish your application into the Microsoft Store エンタープライズ アプリケーションを配布します。Distribute an enterprise application

パッケージ アプリへのユーザーの移行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 application with a set of file types.
  • 既定では、特定の種類のファイルを開き、パッケージ化されたアプリケーションを作成します。Make your packaged application 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 application that accomplishes these tasks:

  • パッケージ アプリの適切なフォルダーの場所を検査するデスクトップ アプリケーションに関連付けられているユーザー データを移行します。Migrates user data associated with your desktop application 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 application 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 application 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 application 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 application 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 application 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.