セッション ID:T6-303 Silverlight 4 の ブラウザー外実行 徹底解説 第 2 弾 マイクロソフト デベロッパー & プラットフォーム統括本部 デベロッパー エバンジェリスト 大西 彰 セッションの目的とゴール Session Objectives and Takeaways セッションの目的 Silverlight のブラウザー外実行機能を理解する セッションのゴール ブラウザー内とブラウザー外での Silverlight ランタイムの動作の違いを説明できるようになる ブラウザー外実行用の主要な API について コードを書いて利用できるようになる 信頼されたアプリケーション モードによる ブラウザー外実行を使って Windows デスクトッ プ アプリケーション を作れるようになる 3 アジェンダ Silverlight アプリケーションの動作構造 開発ツールによるブラウザー外実行の設定 Silverlight のブラウザー外実行の基本機能 サンドボックス モードの新機能 信頼されたアプリケーション モードの機能 概要 4 デモが中心 確認 Silverlight のバージョンと進化 普及率 2007 年 9 月 v1.0 XAML + JavaScript • 動画配信 • JavaScript API 2007 5 2008 年 10 月 2 2009 年 7 月 XAP と 3 マネージ コード • DRM • コントロール • .NET 開発環境 2008 • • • • • • ブラウザー 外実行 Smooth Streaming H.264 対応 コントロールの充実 ブラウザー外実行 アクセシビリティ対応 マルチタッチ対応 2009 2010 年 4 月 4 信頼された アプリケー ション • 業務アプリケー ション開発向けの 機能拡充 • サンドボックス 緩和 (権限昇格) 2010 Silverlight 4 の強化ポイント 業務アプリケーション向けの機能拡充 UI の改善 (マウス・クリップボードなど) データ バインディング、通信機能 WCF RIA サービス ブラウザー外実行の進化系 Silverlight 4 の新機能 http://msdn.microsoft.com/ja-jp/library/dd772166(v=VS.95).aspx 6 Silverlight の技術スタック その 1 ブラウザー内実行の場合 Silverlight アプリケーション パッケージ (.XAP ファイル) Silverlight Runtime .NET Framework サブセット / CLR アンマネージ コード ( Native の .DLL ) HTML Network Web ブラウザー JavaScript 7 Silverlight アプリケーションの 動作構造と Application クラス System.Windows.Application http://msdn.microsoft.com/ja-jp/library/ms588794(v=VS.95).aspx Silverlight アプリケーションをカプセル化 するクラスで次のサービスを提供 アプリケーションのエントリ ポイント アプリケーションの有効期間 アプリケーション管理 アプリケーション スコープ リソース ハンドルされない例外の検出 8 アプリケーションの起動から終了 public partial class App : Application { // アプリケーション クラスのコンストラクター public App() { // アプリケーションの初期化 this.Startup += this.Application_Startup; // アプリケーションの終了 this.Exit += this.Application_Exit; // ハンドルされない例外処理 this.UnhandledException += this.Application_UnhandledException; // InitializeComponent(); } // 以下、省略… 9 最初に表示される画面はどこで決まる? public partial class App : Application { // アプリケーション クラスのコンストラクター public App() { // 省略… } private void Application_Startup( object sender, StartupEventArgs e) { // 次の行で、最初の画面が決まります this.RootVisual = new MainPage(); } } 10 // 以下、省略… Silverlight の技術スタック その 2 ブラウザー外実行の場合 Silverlight アプリケーション パッケージ ( .XAP ) Silverlight Runtime .NET Framework サブセット / CLR アンマネージ コード ( Native の .DLL ) SLLauncher.exe 11 sllauncher.exe Silverlight のブラウザー外実行プロセス ブラウザー外実行アプリケーションの管理 インストール アンインストール インストール無しでの起動 /install /uninstall /emulate ※ sllauncher.exe の場所 32 ビット OS - C:\Program Files\Microsoft Silverlight\ 64 ビット OS - C:\Program Files (x86)\Microsoft Silverlight\ コマンドの解説 – Silverlight Deployment Guide v4 (英語) http://download.microsoft.com/download/C/D/5/CD5AAAE3-21F7-47A8-B7D5-39E36BAF9AC8/Silverlight_Deployment_Guide.docx エラー メッセージの解説 (英語) http://go.microsoft.com/fwlink/?LinkId=188103 12 ブラウザー外実行を許可するには AppManifest.xml に <Deployment.OutOfBrowserSettings> を追加 ※ 技術的には再ビルドしなくても変更可能 現実的にはブラウザー外実行用のコードを加えてビルド <Deployment … 省略 … > <Deployment.OutOfBrowserSettings> <OutOfBrowserSettings ShortName="01-OOB-Basic アプリケーション" EnableGPUAcceleration="False" ShowInstallMenuItem="True"> … 省略 … </OutOfBrowserSettings> </Deployment.OutOfBrowserSettings> … 13 開発ツールによる ブラウザー外実行の設定 Visual Studio 2010 Silverlight プロジェクトのプロパティ 設定後は、ブラウザー外実行の形で デバッグ可能 (インストールやアンインストールは不要) Expression Blend 4 Silverlight プロジェクトの設定 ブラウザー外実行の形でテスト実行可能 14 Visual Studio 2010 上の設定 (1) Silverlight プロジェクトの [プロパティ] アプリケーションの ブラウザー外実行を 有効にする 設定画面を表示 15 Visual Studio 2010 上の設定 (2) ブラウザー外実行の設定 アプリケーション ウィンドウの設定 アプリケーションのショートカット ウィンドウ スタイルは、後述の信頼 されたアプリケーションで利用 16 Expression Blend 4 上の設定 [プロジェクト] メニューの [Silverlight プロジェクトの設定] 17 Silverlight のブラウザー外実行の 基本機能 アプリケーションのインストール アプリケーションの更新プログラムの確認 ネットワーク接続の検出 ブラウザー外実行状態の検出 アプリケーションの削除 18 アプリケーションのインストール 3 種類のインストール方法 コンテキスト メニュー インストール用 API コマンド インストール後は、オフラインでも実行可能 ネットワーク接続の検出 分離ストレージは 25 MB (既定値) インストールに 管理者権限は不要 19 コンテキスト メニューからの インストール 20 インストール用 API http://msdn.microsoft.com/ja-jp/library/dd731949(v=VS.95).aspx インストール実行 Application.Install() メソッド インストール状態の確認 Application.InstallState プロパティ 21 InstallState 説明 NotInstalled インストールされていない Installing インストール中 Installed インストール済 InstallFailed インストールに失敗 インストール用 API 利用例 private void btnInstall_Click( object sender, RoutedEventArgs e) { try { Application.Current.Install(); } catch (InvalidOperationException) { MessageBox.Show("インストール済みです"); } } 22 コマンドによるインストール sllauncher.exe を利用 共有フォルダーなど xap ファイルが 格納されている UNC パス sllauncher.exe /install:"\\AppServer\packages\myApp.xap" /origin:"http://oniak3.com/myApp.xap" /shortcut:desktop+startmenu /overwrite アプリケーションの ショートカット作成場所 23 アプリケーションをホストしている Web サイトの URL を指定 更新プログラムの確認 http://msdn.microsoft.com/ja-jp/library/dd731813(v=VS.95).aspx Application クラス CheckAndDownloadUpdateAsync() メソッド CheckAndDownloadUpdateCompleted イベント ポイント サーバーと通信し、パッケージが更新されて いればアプリケーションがダウンロードされる パッケージが最新でもユーザー側の Silverlight ランタイムのバージョンが古い場合は、最新の パッケージをダウンロードしない 信頼されたアプリケーションの場合、 XAP 署名が必須 (署名がないと更新不可) 24 アプリケーション更新用 API 利用例 App.Current.CheckAndDownloadUpdateCompleted += App_OnCheck; App.Current.CheckAndDownloadUpdateAsync(); // … private void App_OnCheck(object sender, CheckAndDownloadUpdateCompletedEventArgs e) { if (e.UpdateAvailable) { // アプリを再起動すると最新になることに注意 MessageBox.Show("ダウンロードしました"); } } 25 ネットワーク接続の検出 http://msdn.microsoft.com/ja-jp/library/3ew4thdx(v=VS.95).aspx ネットワーク インターフェイスの IP アドレス変更イベント NetworkChange.NetworkAddressChanged 任意のネットワークが利用可能かどうかを 判定するメソッド NetworkInterface.GetIsNetworkAvailable() 26 ネットワーク接続の検出例 public MainPage() { NetworkChange.NetworkAddressChanged += NetworkChange_NetworkAddressChanged; } void NetworkChange_NetworkAddressChanged( object sender, EventArgs e) { if (NetworkInterface.GetIsNetworkAvailable()) { // オンライン } else { // オフライン } } 27 ブラウザー外実行状態の検出 http://msdn.microsoft.com/ja-jp/library/dd730900(v=VS.95).aspx Application クラス IsRunningOutOfBrowser プロパティ true : ブラウザー外で実行されている false : ブラウザー内で実行されている 28 ブラウザー外実行状態の検出 Application.IsRunningOutOfBrowser プロパティ private void Application_Startup( object sender, StartupEventArgs e) { // ブラウザー内と外の場合、それぞれ別の画面に設定 if (Application.Current.IsRunningOutOfBrowser) { this.RootVisual = new OutOfBrowserPage(); } else { this.RootVisual = new InBrowserPage(); } } 29 アプリケーションの削除 セキュリティの関係で、アプリケーション を削除するための API は提供なし コンテキスト メニューから手動で削除 コントロール パネルの [プログラム] からの アンインストール コマンドで削除 30 手動によるアプリケーションの削除 コンテキスト メニュー 起動中のアプリケー ション内を右クリック 31 コントロール パネル [プログラムと機能] との統合 コマンドによるアプリケーションの 削除 sllauncher.exe を利用 sllauncher.exe /uninstall /origin:"http://oniak3.com/myApp.xap" アプリケーションをホストしている Web サイトの URL を指定 32 サンドボックス モードの新機能 WebBrowser コントロール WebBrowserBrush オブジェクト アプリケーション ウィンドウの制御 API NotificationWindow クラス 33 WebBrowser コントロール http://msdn.microsoft.com/ja-jp/library/cc491073(v=VS.95).aspx HTML のレンダリング URI を指定 HTML 文字列を指定 2 方向の相互運用性 スクリプト実行 スクリプトからの通知 ブラウザーのプラグイン と表示可能な文書を サポート 必ず最前面に表示 コントロールの利用例 34 WebBrowser 利用例 ・XAML <WebBrowser x:Name="wb" Source="a.htm" /> ・a.htm 内の JavaScript function btnSendToSilverlight_onclick() { // Silverlight へ通知 window.external.notify(txtInput.value); } ・C# wb.ScriptNotify += wb_ScriptNotify; void wb_ScriptNotify( object sender, NotifyEventArgs e) { txtStatus.Text = e.Value; } 35 WebBrowserBrush オブジェクト http://msdn.microsoft.com/ja-jp/library/ff400447(v=VS.95).aspx HTML コンテンツと Silverlight の重ね合わせ に利用 不透明度、回転、Pixel Shader エフェクト ブラシ上の HTML コンテ ンツとは対話できない ことに注意 HTML コンテンツの 再描画は手動 ブラシを適用した楕円に 疑似 3D と波紋のエフェクトを加えた例 36 WebBrowserBrush 利用例 (XAML) 図形の Fill プロパティでブラシを指定 <WebBrowser x:Name="wb" /> <Ellipse x:Name="el"> <Ellipse.Fill> <WebBrowserBrush x:Name="wBrush" SourceName="wb"/> </Ellipse.Fill> </Ellipse> 37 WebBrowserBrush 利用例 (C#) private DispatcherTimer dt = new DispatcherTimer(); public MainPage() { InitializeComponent(); dt.Interval = new TimeSpan(100); dt.Tick += new EventHandler(dt_Tick); dt.Start(); } void dt_Tick(object sender, EventArgs e) { // 最新の HTML コンテンツで再描画 wBrush.Redraw(); } 38 アプリケーション ウィンドウの制御 top, left http://msdn.microsoft.com/ja-jp/library/ms590112(v=VS.95).aspx height width 39 topmost ウィンドウの制御における注意点 制御用 API が利用できるタイミング Application.Startup イベント ハンドラー内 ボタン Click イベント ハンドラーなどでの、 ユーザーによる操作に対する応答直後 信頼されたアプリケーションは制約なし 40 ウィンドウの制御 API 利用例 (C#) private void Application_Startup(object sender, StartupEventArgs e) { this.RootVisual = new MainPage(); if (Application.Current.IsRunningOutOfBrowser) { Window mainWindow = Application.Current.MainWindow; mainWindow.Top = 10; mainWindow.Left = 20; mainWindow.Width = 640; mainWindow.Height = 480; } } 41 NotificationWindow クラス http://msdn.microsoft.com/ja-jp/library/ee652604(v=VS.95).aspx 3 件の ボイス メール有 聞く 42 x NotificationWindow の利用例 (C#) if (Application.Current.IsRunningOutOfBrowser) { nw = new NotificationWindow(); nw.Content = nwContent; // 通知画面 nw.Height = nwContent.Height; nw.Width = nwContent.Width; // 2 つ以上の通知は許可されない if (nw.Visible) nw.Close(); nw.Content.DataContext = list[count]; nw.Show(5000); // アプリケーション ウィンドウのアクティブ化 App.Current.MainWindow.Activate(); } 43 信頼されたアプリケーション モード の機能 サンドボックスの制約を緩和 制限のないクロス ドメイン通信 ユーザーの同意、ユーザーが開始した操作に 関する要件の緩和 全画面表示サポート アプリケーション ウィンドウのカスタマイズ ユーザー プロファイルの特定フォルダー内の ファイルへの直接アクセス ネイティブ統合 (COM オートメーション) XAP 署名 44 信頼されたアプリケーション モード の実行状態の判定 Application.HasElevatedPermissions プロパティ http://msdn.microsoft.com/ja-jp/library/ee520185(v=VS.95).aspx true false 45 : 信頼されたアプリケーションとして ブラウザー外で実行されている : それ以外 クロスドメイン通信の制約緩和 http://msdn.microsoft.com/ja-jp/library/ee721083(v=vs.95).aspx#relaxed_crossdomain_access_restrictions ドメイン間アクセス クロス ドメイン ポリシーが不要 スキーム間アクセス制限なし ソケット通信 ポリシー不要 任意のホストの任意のポート マルチキャスト通信 ポリシー レスポンダーによる承認不要 46 全画面表示サポート http://msdn.microsoft.com/ja-jp/library/ee721083(v=vs.95).aspx#fullscreen_support ユーザーの同意不要で全画面表示に切替 ほとんどのキーボード操作が有効 取得できないキー操作もあることに注意 47 ウィンドウのカスタマイズ http://msdn.microsoft.com/ja-jp/library/ee721083(v=vs.95).aspx#support_for_window_customization 3 通りのウィンドウ スタイルから選択 既定値 : タイトル バーと境界線を表示 罫線なし : タイトル バーと境界線を非表示 罫線なし角丸 : タイトル バーと境界線を 非表示で、 ウィンドウの隅の角を丸める (半径 9 ピクセルの丸み) WindowStyle : None 48 WindowStyle: BorderlesRoundCornersWindow ファイル システムへのアクセス http://msdn.microsoft.com/ja-jp/library/ee721083(v=vs.95).aspx#file_system_access ユーザー プロファイル 内の特定フォルダー ドキュメント ピクチャ ミュージック ビデオ 49 System.IO と関連型へ のアクセス Directory DirectoryInfo File FileInfo FileStream Path StreamReader StreamWriter ファイル システム アクセスの例 (C#) if (Application.Current.HasElevatedPermissions) { string myDocuments = Environment.GetFolderPath( Environment.SpecialFolder.MyDocuments); string filename = "test.txt"; string path = System.IO.Path.Combine(myDocuments, filename); if (File.Exists(path)) { string contents = File.ReadAllText(path); MessageBox.Show(contents); } } 50 ネイティブ統合 http://msdn.microsoft.com/ja-jp/library/ff457794(v=vs.95).aspx Windows プラットフォーム限定で COM オートメーションを利用したシステム 統合が可能 AutomatinFactory.IsAvailable プロパティ でオートメーションが利用可能かを判定 オートメーション オブジェクトの作成 AutomationFactory.CreateObject() メ ソッド オートメーション オブジェクトの取得 AutomationFactory.GetObject() メソッド 51 COM オートメーションの例 (C#) Wscript.Shell を使ったコマンド実行 if (AutomationFactory.IsAvailable) { // C# の dynamic キーワードを使用するには、 // プロジェクトで Microsoft.CSharp.dll を // 参照設定する必要があります。 using (dynamic shell = AutomationFactory.CreateObject( "WScript.Shell")) { shell.Run(@"cmd /k ping 127.0.0.1"); } } 52 COM オートメーションの例 (C#) Excel のイベント取得 dynamic excel; public delegate void SheetChangedDelegate(dynamic excelSheet, dynamic rangeArgs); excel = AutomationFactory.CreateObject("Excel.Application"); excel.SheetChange += new SheetChangedDelegate(OnSheetChanged); // … 省略 … private void OnSheetChanged ( dynamic excelSheet, dynamic rangeArgs) { dynamic sheet = excelSheet; string name = sheet.Name; } 53 オートメーションの詳細 http://msdn.microsoft.com/ja-jp/library/ee947176(v=VS.95).aspx サポートされる機能 サポートされない機能 プロパティの設定、取得 インデックス化されたプロパ ティの設定、取得 Positional and optional parameters 参照渡しと値渡し イン プロセスとアウト プロセス サーバー 基本のデータ型 VARIANT、BSTR、SAFEARRAY、 IEnumVARIANT Silverlight アプリ側でイベント シンク 54 多次元配列、ジャグ配列 名前付き引数 型情報 COM Elevation moniker 注意: 戻り値があるイベントは サポートされません オートメーション可能なサービス Office 製品との相互運用 WMI (システム情報やファイル監視) ADO (.NET 以前のデータ アクセス) Windows 7 ロケーション API (GPS) スピーチ エンジン その他、COM でアクセス可能なもの… 55 XAP ファイルへのデジタル署名 信頼されたアプリケーションのみ対応 署名なし 56 署名あり 開発向けテスト証明書の作成例 ルート証明書 Visual Studio コマンド プロンプト (2010) を利用すると PATH の設定が不要となります makecert -n "CN=My Root Certificate Authority" -r -a sha1 -sv c:\Demo\TestOOBRootCA.pvk c:\Demo\TestOOBRootCA.cer -sr LocalMachine -sky signature コード署名用の子証明書 makecert -sv c:\Demo\TestOOBCodeSigningCA.pvk -iv c:\Demo\TestOOBRootCA.pvk -n "CN=Test OOB Crew Code Signing CA" -ic c:\Demo\TestOOBRootCA.cer c:\Demo\TestOOBCodeSigningCA.cer 57 XAP 署名の方法 (コマンド) signtool.exe を利用 58 XAP 署名の方法 (Visual Studio IDE) Silverlight プロジェクトのプロパティ 59 参考 : ブラウザー外実行の応用編 グループ ポリシーによる管理 オフライン DRM Silverlight Analytics Framework Microsoft Sync Framework 3.0 60 参考 : グループ ポリシーによる管理 http://go.microsoft.com/fwlink/?LinkId=169578 Silverlight に対するグループ ポリシー DRM Silverlight ランタイムの自動更新 信頼されたアプリケーション Web カメラとマイクの利用 UDP マルチキャストの通信 信頼されたアプリケーション モードの利用 アプリケーションのインストールの可否 アプリケーションの実行の可否 注意 : サンドボックス モードには適用されません 61 参考 : オフライン DRM http://msdn.microsoft.com/ja-jp/library/cc838192(v=VS.95).aspx ライセンス サーバーと通信できない状態で DRM で保護されたメディアの再生が可能 ビジネス モデルへの対応 購読、レンタル、購入 Silverlight 4 DRM の新機能 ライセンス管理用のストレージ 時間によるポリシー H.264 と AAC コンテンツの対応 出力保護 (Output Protection) の対応 62 参考 : Silverlight Analytics Framework http://msaf.codeplex.com/ Silverlight アプリケーションの アクセス分析用のフレームワーク 主要な Web アクセス分析サービスに対応 独自の Web サーバーへのロギングも可能 ブラウザー外実行、オフライン時の動作に も対応 63 参考 : Sync Framework 3.0 http://social.msdn.microsoft.com/Forums/ja-JP/synclab/threads データ同期用のフレームワーク Silverlight 対応版は、招待制の CTP 扱い SQL Server や SQL Azure へ対応 詳細は MIX 10 のセッションを参考に http://live.visitmix.com/MIX10/Sessions/SVC10 64 まとめ Silverlight 4 のブラウザー外実行 徹底解説 第 2 弾 ランタイム 1 つで 2 種類の動作モード ブラウザーのプラグイン デスクトップ アプリケーション Silverlight 4 に搭載されたブラウザー外実 行の新機能 WebBrowser 、NotificationWindow など ウィンドウのカスタマイズ 信頼されたアプリケーション モード サンドボックス セキュリティの緩和 Windows プラットフォームとの統合 65 関連セッション T6-304:Expression Blend 4 でデザインする Silverlight 4 アプリケーション T6-401:WCF RIA Services を使った Silverlight 4 アプリケーション開発 ~ 迅速性と効率性の追求 ~ T7-302:Windows Presentation Foundation 4 ~ ビジュアル ステートを使ったカスタム コントロールの作り方 ~ T7-403:最新 OS WES 7 / WEC 7 / .NET Micro Framework に よるクラウド時代のデバイス UX 開発 66 リファレンス Silverlight デベロッパー センター http://msdn.microsoft.com/ja-jp/silverlight/default.aspx Silverlight ブラウザー外実行のサポート http://msdn.microsoft.com/ja-jp/library/dd550721(v=vs.95).aspx Microsoft Expression Blend 4 http://www.microsoft.com/japan/products/expression/products/blend_overview.aspx Microsoft Silverlight Analytics Framework http://msaf.codeplex.com/ Microsoft Web Platform http://www.microsoft.com/web 67 ご清聴ありがとうございました。 T6-303 アンケートにご協力ください。 © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
© Copyright 2024 ExpyDoc