Ask Learn
Preview
Ask Learn is an AI assistant that can answer questions, clarify concepts, and define terms using trusted Microsoft documentation.
Please sign in to use Ask Learn.
Sign inThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
今回は、Desktop App Converter のチュートリアル的なサンプルであり、DesktopBridge Sample を紹介します。具体的には、実際のコードを見て頂くとして、この記事ではどのようなサンプルが提供されていて、どのような構造になっているかを解説します。
最初の入門として見るのは、HelloWorldSample か JourneyAcrossTheBridge のサンプルになります。
cs フォルダと CentennialPackage フォルダが含まれており、cs フォルダが C# のコンソール アプリケーションになっており、CentennialPackage フォルダは、手作業でAppxを作成するための Appx レイアウト フォルダになっています。このサンプルでは、Desktop App Converter を使用することなく、デスクトップ アプリを Appx パッケージにすることを学習するためのものになっています。
このサンプルには、ステップ1からステップ5までの5種類が含まれています。学習の流れで説明すると、ステップ1 から ステップ 3が、Windows Forms のデスクトップ アプリを Appx 化 (ステップ1) して、タイル更新を追加(ステップ2)、バックグラウンド タスクを追加(ステップ3) と順番に既存のデスクトップ コードを機能拡張する流れになっています。
ステップ 4 以降は、それまでの流れではなく、UWP のアプリから デスクトップのコードを アプリ サービスとして使用し(ステップ4)、完全な UWP アプリへの移行(ステップ 5)となっています。
学習することは、HelloWorldSample と同じです。異なるのは、コンソール アプリではなく、Windows Forms を使用した GUI のアプリという点であり、使用する Visual Studio が 2015 ではなく、2017(プレビュー)になっており、Desktop to UWP packaging Project を使用するようになっていることです。Desktop to UWP Project で作成したプロジェクトは、Appxレイアウトのフォルダを指定し、変換対象のプロジェクトをソリューションに追加することで、Appx の更新やデバッグが容易になるという特徴があります。Desktop to UWP Project の使い方は、変換済みの UWP アプリを展開してデバッグするに記述されている「F5デバッグ」で詳しく説明しています。
タイル更新を追加するために、Windows.wnimd への参照を追加してから、コンボボックスのSelectionChanged イベント ハンドラ内に TileUpdateManager クラスと TileNotification クラスを使用してタイル通知を行うコードを追加しています。
ステップ2 へバックグラウンド タスクを追加するために、BackgroundTasks プロジェクトを Windows ランタイム コンポーネント プロジェクトとして追加しています。このバックグラウンド タスクは、アプリケーション設定の「Status」キーに設定された文字列を使って、トースト通知を行います。
AppxManifest へバックグラウンド タスクを追加するには、以下の3種類の作業が必要になります。
Windows Forms のアプリケーションでは、以下の作業を行っています。
こうすることで、バックグラウンド タスクが Time トリガーによって 15 分間隔でトースト通知を表示するようになります。
既に説明したように、ここでステップ 3までとは異なる構造へと変わります。具体的には、MyDesktopApp プロジェクト (デスクトップ のアプリ)、BackgroundTasks プロジェクト (これは、ステップ3のものと同じです)、最後に MyUWPApp プロジェクト(純粋な UWP アプリ)の 3 プロジェクトで構成されていて、ステップ 3まで存在していた Desktop to UWP Project は無くなっています。この理由は、MyUWPApp という UWP アプリで配置などを行うからです。
MyDesktopApp プロジェクトの特徴は、次のようになります。
MyUwpApp プロジェクトの特徴は、次のようになります。
このような構造になっています。ここでポイントは、デスクトップ アプリが AppService をホストしている点と UWP アプリが デスクトップ アプリの AppService を起動するために、FullTrustProcessLauncher クラスを使用している点です。通常の UWP アプリ同士であれば、AppService 側は自動的に起動されますが、デスクトップ アプリでAppService をホストするケースでは、自動的に起動できないので、UWP アプリ 側で起動する必要があるということになります。このための設定が、desktop:Extension の windows.FullTrustProcessになり、この記述は Appx内に同梱した完全信頼の実行ファイルを 1 つだけ記述することができます。
ステップ 4までのソリューションを完全な UWP アプリ化するために、MyUWPAppプロジェクトとBackgroundTasks プロジェクトの 2つだけに統合します。
JourneyAccrossTheBridge のステップ 3 と同じになります。
C# と C++ を使用したサンプルがありますが、考え方は JourneyAccrossTheBridge のステップ 4 と同じになります。
C# のサンプルで AppService を使用しますので、JourneyAccrossTheBridge のステップ 3と同様の考え方でなりたっていますが、Northwindという名前から予測できるように SQL Compact を使ったデータベースへのアクセスをラップした C# のデスクトップ アプリを使用しています。
ストアのAPIを使用する C# のWPF アプリケーションで、Desktop to UWP packaging Project を使用しています。
このサンプルを通して DAC で変換したアプリを拡張する時に注意点は、以下のようなことになります。
DAC で変換したAppxの価値を高めるためにも、利用シーンに応じた拡張を考えることが重要になってくることでしょう。
Ask Learn is an AI assistant that can answer questions, clarify concepts, and define terms using trusted Microsoft documentation.
Please sign in to use Ask Learn.
Sign in