Windows ランタイム コンポーネント ブローカーについて

de:code 2016 のサンプルに Windows ランタイム コンポネント ブローカーの UWP が含まれており、その使い方のドキュメントも含めていました。まだ日本語訳はありませんが、「Windows ランタイム コンポーネント ブローカー」の記事が公開されました。この記事には、 サンプル (IPC サーバーのみ) UWP 用のプロジェクト テンプレート へのリンクが含まれています。また、vcvarsall.bat の引数なども解説されています。このドキュメントの公開と同時期に、Windows ストア アプリのドキュメントも英語版が更新されています。 プロジェクト テンプレートでプロジェクトを作成して、プロジェクト ファイルを見れば、マネージ デスクトップ アプリとUWP で説明したプロジェクト ファイルへの変更が行われていることも確認することができます。 技術的には、Windows 10 には、デスクトップ ランタイム(.NET Framework)、Windows ストア アプリ ランタイム(Windows 8.1互換ランタイム)、UWP アプリ ランタイム(Windows ランタイム、.NET Core)の3種類があるので、Windows ランタイム コンポーネント ブローカー自体はデスクトップ ランタイムで動作しますので、動いて当たり前というものになりますが、テンプレートが公開されましたので、これを使用することで容易に Windows ランタイム コンポーネント ブローカーを Visual Studio 2015 で作成できるようになったということになります。  …

0

バイナリ シリアライザについて

オブジェクトをシリアライズする時に、どのシリアライザを使用するかによってデータの互換性を含めて、様々な問題が発生することがあります。.NET Framework や Mono を使った開発で、利用するシリアライザの種類を列挙します。 バイナリ シリアライザBinaryFormatter が標準で組み込まれていますので、使われるケースが多いと思われます。標準以外にも様々なシリアライザが OSS として開発されていたりします。 XML シリアライザDataContractFormatter が標準で組み込まれています。 JSON シリアライザ標準で用意されているシリアライザを使用したり、Json.net を使用することが多いと思います。 バイナリ シリアライザを使用する時の資料は、MSDN ライブラリに掲載されています。バイナリ シリアライザを使用する時の注意は、以下の点になります。 シリアライズするクラスの型を持つアセンブリをライブラリにすること。 後日にクラスにメンバーを追加した場合は、バージョン トレラントを確保すること。 バイナリ シリアライズで作成されたバイナリ データには、「アセンブリ識別子(アセンブリ名、バージョン、カルチャ、パブリック トークン)」と「型の完全名(名前空間。クラス名)」、「シリアライズするフィールド名」と「データ」が記録されています。クラスという型の情報は、アセンブリのType Definition で定義されており、デシリアライズする時に型情報が一致しないとデシリアライズが失敗します。この理由で、シリアライズする型を定義するアセンブリをライブラリにしておくことで、デシリアライズのエラーを削減できるようになります。 シリアライズの基本的な使い方 シリアライズ対象になるクラスが、SerializeSample というアセンブリで、Person クラスが以下のように定義されていたとします(シリアライザは、内部でリフレクションを使用しています。リフレクション API が変更されると、その影響を受けることもあります)。 using System; namespace SerialSample { [Serializable] public class Person { public Person() { } public string Name { get; set;…

0

Desktop App Converter について

Desktop App Converter とは、デスクトップのアプリを UWP アプリのパッケージ (APPX) へと変換するツールになります。このツールが発表されたのは、2015 年の Build Conference であり、2016 年の Build Conference の後にプレビュー ツールが公開されました。Desktop App Converter の最新版は、ダウンロード センターより入手することができ、2016 年 6 月 8 日時点では 0.1.15 であり、Windows Insider の Build 14352 に対応しています。このツールを用いた作業は、以下のような手順で進みます。 環境設定 Powershell の実行ポリシー設定を行ってから、ベース イメージの展開を行います。この作業には、Windows の機能として「コンテナ」が必要になります。 コンテナを有効にしないで、「.\DesktopAppConverter.ps1 -Setup -BaseImage .\BaseImage-14352.wim」コマンドを実行すると、最初にコンテナを有効化にしてから、リブートとなります。リブートした後にサインインすると、ベース イメージの展開が自動的に始まります。 この作業は、環境設定ですので一度だけ実施すればよいものになります。 アプリの変換 アプリを変換するには、MSI パッケージか独自のセットアップ プログラムが必要になります。独自のセットアップ プログラムの場合は、セットアップの Exit Code が「0(ゼロ)」になっているかどうかをご確認ください。もし、Exit Code がゼロ以外の場合は、「-InstallerValidExitCodes」オプションを使って Exit…

0

de:code 2016 の CLT-004 のサンプルを公開します

いつもながら、遅筆の荒井でございます。de:code 2016では、「CLT-004 Windows 10 におけるアプリの互換性と移行」と「CLT-012 インサイド UWP アプリ」を担当させていただきました。参加されました方は、有難うございました。この記事には、CLT-004 Windows 10 におけるアプリの互換性と移行 で使用したデモのサンプル コードを添付しています。含まれるサンプルは、以下のようになります。 Windows Forms における高 DPI クリップボード ドラッグ & ドロップ 拡張子の関連付けとカスタム プロトコルの関連付け アプリ サービス Northwind アプリ ブローカー アプリ ブローカー:このサンプルはデモで使用していませんが、Windows ランタイム コンポーネント ブローカーを作成するための学習用のものです。 含まれていないデモとしては、Desktop App Converterでサイトー企画様よりデモでの使用を許可していただいた「秀丸エディタ」を変換し、自分で作成した.NET Framework 4.6の WPF アプリを変換し、「Desktop To UWP Project」テンプレートを使用した Windows Photo と連携させたものがあります。この WPF で使用したサンプル コードの基本的な考え方は、アプリ サービスに含まれる「LaunchUrlForResultAsync メソッド」の使い方と同じになりますので、ご興味がある場合は、自分で試してみてください。 サンプル コードの使用に関しては、自己責任でお願いします。 CLT-009 サンプル…

0

マネージ デスクトップ アプリと UWP

Windows ストア アプリの時は、「マネージ デスクトップ アプリと Windows ランタイム」というドキュメントがありました。Windows 10 の UWP アプリのランタイムをデスクトップから使う方法がないかと調べたので、その使い方を簡単にまとめます。 WPF アプリなどのプロジェクトを Visual Studio 2015 で作成します。 ソリューション エクスプローラで、プロジェクトをアンロードします。 アンロードしたプロジェクトのコンテキスト メニューより、コードの編集を行います。 <PropertyGroup> <TargetPlatformVersion>10.0.10586.0</TargetPlatformVersion> </PropertyGroup> 上記のコードをプロジェクト ファイルへ追加して、上書き保存します。 プロジェクトの再読み込みを行います。 参照の追加を行います。 C:\Program Files (x86)\Windows Kits\10\UnionMetadata\Windows.winmd と C:\Program Files (x86)\Microsoft SDKs\NETCoreSDK\System.Runtime.WindowsRuntime\4.0.10\lib\netcore50\System.Runtime.WindowsRuntime.dll の2つへ参照を設定します。 後は、必要なクラスを使用するだけです。 Windows.winmd は、Windows Runtime の参照用のメタデータになります。 System.Runtime.WindowsRuntime.dll が、Microsoft SDKs\NETCoreSDK になっている理由は、UWP アプリが .NET Core がランタイムになっているためです。Windows 8.1 までは、.NET Framework のサブセットという位置づけでしたので、C:\Program…

1

Osaka ComCamp 2016

遅くなりましたが、2/20 の大阪 ComCamp 2016 で使用したスライドを公開します。こちらでは、「.NET 2015 発表後の .NET はどうなったか」というタイトルでお話しをさせていただきました。 CoreCLR は、1月に名称変更があり ASP.NET Core、.NET Core CLI (旧DNVM、DNX)などになり、ASP.NET Core 関係の CLI 対応版は、まだリリースされていません。でも、最新ビルドでは、v1.0.2-rc3-23826 (2016/2/29 15:38 JST+9)になっています。この最新ビルドを試される場合は、.NET Core CLIの使用が必須となります。従って、ASP.NET MVC5を試される場合は、RC1となり DNVMを使用することになります。 試されると理解できますが、.NET Core CLI は、nuget v3 形式の API に統合されており、現時点では.NET Core “dev” builds に依存しています。nuget.orgではありませんので、ご注意ください。 What’s .NET Framework after .NET2015

2

Windows 10 における Bluetooth サポートについて

大分、更新が滞っていましたが、Windows 10 Version 1511(TH2)における BLE(Bluetooth Low Energy)のサポートに関して、調べた内容を記載します。 詳細は省きますが、Bluetooth 4.0以降では、GATT(General Attribute Profile)とAdvertisement(iBeaconで有名な通信方式)の通信方式が追加されています。Windows 10 のアプリ環境である UWP では、2015年7月のリリース時点から、GATT と Advertisement もサポートされていました(GATT については、Windows 8.1のストア アプリからサポートされていました)。Windows 10 Version 1511に対応した Windows SDK 10586 における Bluetooth サポートの機能強化点は、コードによるペアリング操作のサポートになります。具体的には、Windows.Deveices.Enumeration 名前空間における DeviceInformationPairing クラスと DeviceInformationCustomPairing クラスを使うことで、ペアリングを行うことができるというものです。このペアリング操作を行うサンプルも、githubで公開されています。具体例はサンプルを見て頂くとして、ペアリングのための2つのクラスでできることを簡単にまとめます。 DeviceInformationPairing クラス 標準的なペアリング操作を行うためのクラスで、PairAsync メソッド呼び出すと、システム側がペアリング 操作に必要なダイアログを表示します。必要なダイアログとは、「ペアリングをしますか?」や「ペアリング コードの入力」などになります。 DeviceInformationCustomPairing クラス PairAsync メソッドとPairringRequested イベント ハンドラの組み合わせを使用することで、通信の暗号方式を指定したり、ペアリング コードをコードで指定する(DevicePairingKinds列挙値で指定します)ことができるようになります。これは、標準的なペアリング コード「00000」などを自動的に処理する場合などに使用すると、最低限度の操作でペアリングを行うことができるので、ユーザーにとって操作が易しくなるメリットがあります。 General Attribute Profileについて GATTのドキュメントは、Windows デベロッパー センターにありますが、より参考になるサンプルもあります。このサンプルは、TI…

2

Windows 10 のテスト環境の作成方法について

Windows 10 互換性環境の構築について Windows 10 におけるアプリケーションの互換性を検証するには、Windows 10 の環境を作成する必要があります。Windows 10 リリース直後においては、次の 2 種類の環境でアプリケーションをテストすることが推奨されます。 • アプリケーションをインストール済みの Windows 8.1 、あるいは Windows 7 より Windows 10 へアップグレードした環境。 • Windows 10 を新規インストールした環境を使って、アプリケーションをインストールした環境。 この記事では、テストするアプリケーションを除くWindows 10 環境の構築方法について説明します。Windows 10 環境を作成するには、次の 4 種類の方法があります。 Windows 8.1、あるいは Windows 7 環境を Windows 10 へアップグレードする。 Windows 10 へアップグレードした PC に対して、Windows 10 を新規インストールする。 Windows 10 の新規インストール メディアを使って、新規インストールする。 この作業には、Windows 10…

0

WPF の半透明の子ウィンドウの使い方について

.NET Framework 4.6 のリリースに伴って、WPF では 透過的な子ウィンドウのサポートが提供されました。具体的な使い方としては、WPF チームのブログの The Roadmap for WPF という記事の、コメント欄にサンプル コードがあります。 私も見落としていて、先週末に教えていただいたのですが(有難うございました。見落としていました)、このサンプルを動かすための条件があります。MSDN ライブラリーの.NET Framework の新機能には「Windows 8.1以降」という記述もありました。この透過的な子ウィンドウというのは、半透明なChild Window をサポートするというもので、具体的には HwndSourceParameters.UsesPerPixelTransparency プロパティを使用するというものになります。ドキュメント上の要件は、.NET Framework 4.6以上とだけ記述されていますが、私が確認した限りは Windows 8 以降で動作します。WPF Blogに掲載されていたコードを次に示します。 IntPtr parentWindowHandle = new WindowInteropHelper(this).Handle; HwndSourceParameters windowParams = new HwndSourceParameters(“SemiTransparentChildWindow”); windowParams.ParentWindow = parentWindowHandle; //int values of WS_CHLID, WS_CLIPCHILDREN, and WS_VISIBLE int styleParams = 0x40000000 | 0x02000000 |…

0

Windows 10 SDK の UWP サンプルについて

Windows 10 が公開されてから、ユニバーサル Windows プラットフォームのサンプルも更新されました。5月に公開されてから、6月にサンプルの更新が行われて、最終的に Windows 10 SDK の公開後に更新されました。リリースをみると、4種類があります。 August 2015 Update2 August 2015 July 2015 Build the samples August 2015 をベースにして、Build カンファレンス リリースからどのような変更があったのかを調べてみました。大きくは、次の2点に集約されています。 サンプル名の変更 たとえば、ScreenCasting が AvancedCaastingになり、AllJoinSecureClient と AllJoinSecureServer が AllJoin になったり、accountpicturename と accounts が UserDataAccountManager と UserIinfo になったり、UniversalCamera が CameraStarterKit になったりしています。サンプル名が、明示的に何のサンプルを示しているかという観点の変更になっています。 新しいサンプルの追加 追加されたサンプルは、私が調べたところ65種類のものがありました。その一覧を記載します。 ApplicationData ApplicationResources Appointments AppServices AssociationLaunching AudioCategory BackButton BasicFaceDetection BasicFaceTracking BasicInput…

0