パッケージ化されたデスクトップアプリを配布するDistribute your packaged desktop app

デスクトップアプリを MSIX パッケージでパッケージ化する場合は、パッケージ化されたアプリケーションを Microsoft Store に発行するか、1つまたは複数のデバイスにサイドロードすることができます。If you decide to package your desktop app in an MSIX package, you can publish your packaged 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 Store For Businessを通じて組織に内部で配布することができます。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 S を実行しているデバイスでアプリケーションが正しく動作することを確認してください。これは、ストアの要件です。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 を実行するデバイスにアプリケーションを配布する場合は、アプリケーションを 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 apps In Windows 10」を参照してください。To sideload your application onto other devices, see Sideload LOB apps in Windows 10.

パッケージ アプリへのユーザーの移行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.
            }
        }
    }

}

次の手順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.