デスクトップ アプリがこの先生きのこるには (2016)

デスクトップ アプリがこの先生きのこるには (2016)

まどすた #1 で発表した際の資料です。
https://roommetro.doorkeeper.jp/events/44062

//build/ 2016 で発表され、5/21 現在 Windows 10 Insider Preview で試すことができる「Desktop App Converter」について、その概要と、デスクトップ アプリ開発者への影響について解説。

Da5ad051bd594c29c3ddd5ba80327779?s=128

Grabacr07

May 21, 2016
Tweet

Transcript

  1. 2.

    Agenda Goal Project Centennial (Desktop App Converter) の概要 Windows Desktop

    App -> UWP App への移行パス  Desktop App Converter が与える影響
  2. 3.

    Self Introduction 亀谷学人 (かめやまなと) • 1987年生まれ • 仙台出身 / 東京在住

    Windows Study Meeting (まどすた) staff Microsoft MVP for Visual Studio and Development Technologies 長いよ。 • ソフトウェア エンジニア • クライアント設計 / C# / XAML Twitter: @Grabacr07 Facebook: manato.kameya Blog: http://grabacr.net/
  3. 4.

    My Apps KanColleViewer 「艦これ」 プレイング ツール C# + WPF (.NET

    Framework 4.6.2) SylphyHorn 仮想デスクトップ ツール アクティブ ウィンドウごと移動
  4. 7.

    //build/ 2015 Windows Store Universal Windows Platform .NET & Win32

    Web Android (Java/C++) iOS (Objective C) Windows Bridge
  5. 8.

    Windows Bridge 既存アプリの UWP 化 Windows 10 (UWP) で動作する形式に変換する技術、およびツール群 Windows

    Bridge for Android (Project Astoria) Windows Bridge for iOS (Project Islandwood) Windows Bridge for Classic Windows apps (Project Centennial) Windows Bridge for Web apps (Project Westminster)
  6. 9.

    Windows Bridge 既存アプリの UWP 化 Windows 10 (UWP) で動作する形式に変換する技術、およびツール群 Windows

    Bridge for Android (Project Astoria) Windows Bridge for iOS (Project Islandwood) Windows Bridge for Classic Windows apps (Project Centennial) Windows Bridge for Web apps (Project Westminster) このあと話すやつ
  7. 11.

    Kind of Windows app Classic Desktop app 従来のアプリケーション (.exe で実行するやつ)

    基本的になんでもできる Universal Windows Platform app Windows ストアで配布されるアプリケーション いろんなデバイスで動く
  8. 12.

    My Apps WPF, IE Shell, Key hook, etc. やりたい放題系アプリ Kind

    of Windows app Classic Desktop app 従来のアプリケーション (.exe で実行するやつ) 基本的になんでもできる Universal Windows Platform app Windows ストアで配布されるアプリケーション いろんなデバイスで動く
  9. 14.

    Distribution アプリの配布をどうするか Classic Windows app の悩みどころ UWP だったら 配布はストアにお任せカンタン やりたい放題系なので

    UWP になるわけがない KanColleViewer の思い出 レンサバ追い出されたり (アクセス過多) MSDN 無料枠使い切って課金されたり 公開から 2 年半 約 350 万 DL
  10. 15.

    TouchMe Gesture Studio 自力解決してるアプリ Windows Store 8.1 + Classic Desktop

    Project Centennial には頼っていない 主機能・動作エンジンは Classic Desktop app として提供 主機能インストーラー DL、 課金、ユーザー設定の UI を Windows Store app として提供
  11. 16.

    UWP + .NET その手があったか…! UWP (フロントエンド) + .NET (エンジン) はアリなのか

    ?  ストアで検索してインストールして設定するまで UWP  実際にバックグラウンドで動作しているのは .NET SylphyHorn app SylphyHorn.exe
  12. 19.

    UWP / .NET Bridge 両アプリの繋ぎこみ SylphyHorn app SylphyHorn.exe Settings.xml Write

    Read Read FileSystemWatcher await ApplicationData.Current .LocalFolder .GetFileAsync("Settings.xml"); var path = Path.Combine( Environment.GetFolderPath( Environment.SpecialFolder.LocalApplicationData), "Packages", "46846grabacr.net.SylphyHorn_vwznf8jfphrrc", "LocalState", "Setting.xml");
  13. 24.

    Project Centennial UWP パッケージ化 既存の Win32 / .NET アプリを UWP

    と同じパッケージ化する パッケージ化だけで、中身は元のバイナリのまま … なので当然 10 Mobile では動作不可
  14. 25.

    Desktop App Converter Desktop app -> AppX 変換ツール Windows 10

    Insider Preview 14316 で提供開始 インストーラーから AppX (UWP 配布パッケージ) を生成 .msi をサイレント モードで動作させ、展開されたファイルをパッケージ化する感じ MSI AppX ※ //build/ 2016 資料から引用
  15. 26.

    WiX Toolset モダンなインストーラー Windows Installer (.msi) を作る Bootstrapper (.exe) を作る

    .msi をサイレント モードで カスタム UI を内臓 (なので WPF 等々ご自由に) WPF + MVVM library (Livet) + Custom theme (MetroRadiance)、やりたい放題!!!
  16. 27.

    Desktop App Converter Windows 10 Insider Preview (Fast Ring) 14316

    (4/7) … Bash、仮想デスクトップ改善、Dark テーマ 14328 (4/22) … UI 刷新 (Start menu, UAC ダイアログがキモい) 14332 (4/26) … あんまり覚えてない 14342 (5/10) … UAC ダイアログが青くなった
  17. 28.

    Desktop App Converter Windows 10 Insider Preview (Fast Ring) 14316

    (4/7) … Bash、仮想デスクトップ改善、Dark テーマ 14328 (4/22) … UI 刷新 (Start menu, UAC ダイアログがキモい) 14332 (4/26) … あんまり覚えてない 14342 (5/10) … UAC ダイアログが青くなった Windows 10 Enterprise における Desktop App Converter のサポート Windows 10 Pro / Enterprise における Desktop App Converter のサポート 14328, 14332では Desktop App Converter は 動作しない (Known issue)
  18. 29.

    Setup the Desktop App Converter 必須環境 Windows 10 Enterprise (or

    Pro) x64 Insider Preview build 14342 ハードウェア要件 (x64 processor, Hardware-assisted virtualization, SLAT) Windows SDK for Windows 10 (推奨) ファイルと入手先 DesktopAppConverter.zip, BaseImage-14342.wim (3.2 GB) https://www.microsoft.com/en-us/download/details.aspx?id=51691
  19. 30.

    Setup the Desktop App Converter セットアップ ※ 管理者権限で実行 (Setup, Conversion,

    ぜんぶ) .¥DesktopAppConverter.ps1 -Setup ` -BaseImage .¥BaseImage-14316.wim ` -Verbose
  20. 31.

    Conversion and Deployment Evernote を UWP パッケージ化 DL してきたインストーラーを使って PowerShell

    叩くだけ .¥DesktopAppConverter.ps1 ` -ExpandedBaseImage "C:¥ProgramData¥Microsoft¥Windows¥Images¥BaseImage-14342" ` -Installer 'C:¥Users¥grabacr07¥Work¥Evernote¥Evernote_6.0.6.1769.exe' ` -InstallerArguments "/quiet DISABLEADTSHORTCUTS=1" ` -Destination 'C:¥Users¥grabacr07¥Work¥Evernote¥Output' ` -AppExecutable 'C:¥Program Files (x86)¥Evernote¥Evernote¥evernote.exe' ` -PackageName Evernote ` -PackageDisplayName Evernote ` -Publisher "CN=grabacr.net" ` -PackagePublisherDisplayName "Reserved" ` -Version 1.0.0.0 ` -MakeAppx ` -Verbose Demo
  21. 32.

    Conversion and Deployment Evernote を UWP パッケージ化 出力先に AppX が生成されている

    デプロイは AppxManifeset.xml で Add-AppxPackage Demo Add-AppxPackage -Register "C:¥Users¥grabacr07¥Work¥Evernote¥Output¥AppxManifest.xml"
  22. 33.

    Benefit of the Desktop App Converter UWP パッケージ化で得られる恩恵 個人開発者: Windows

    Store で公開できる & マネタイズ 企業・組織: side loading / MDM が楽に? (やったことない) Filesystem / Registry への書き込みをリダイレクト処理  Registry 肥大化の防止 クリーンなインストール・アンインストール (ユーザーにとってのメリット)
  23. 35.

    Bridge to the UWP Step 1: Convert Desktop app (.msi)

    から UWP (.appx) を作成 & デプロイ Windows Store への提出 シームレスなアップデート クリーンなアンインストール Classic Windows App Universal App Package
  24. 36.

    Bridge to the UWP Step 2: Enhance Desktop app 内部から

    UWP の API を呼び出し ライブ タイルのサポート Actionable Notifications (トースト通知操作) Cortana 他いろいろ Universal App Package Universal Windows API Classic Windows App Demo
  25. 37.

    Bridge to the UWP Step 3: Extend UWP App Service

    や Background tasks 等の機能追加 UWP App と Desktop App の共存  エントリー ポイントは UWP App 側へ  両者は App Service で通信 フロントエンドを XAML / コアを Win32 とか File Picker UI Universal App Package Universal Windows App Classic Windows App Demo
  26. 38.

    Bridge to the UWP Step 4: Migrate UWP 成分増やしていこうな がんばろう

    Universal App Package Universal Windows App Classic Windows App
  27. 39.

    Bridge to the UWP Step 5: Expand すべてのコードを UWP で

    様々な Windows デバイスへ… ここまでできないアプリも それなりにあるだろうとは思う // 正直、Visual Studio と Office を // Full UWP にしてから出直してきて… Universal App Package Universal Windows App
  28. 40.

    Desktop App Converter Bridge to the UWP UWP アプリへの 5

    つのステップ 将来的に UWP アプリへ移行してほしい (って Microsoft が言ってる) Desktop App Converter は Step 2 までを実現するツール Convert Enhance Extend Migrate Expand
  29. 41.

    Future prospects 個人的には期待している Step 2, Step 3 が一番面白そう 今回間に合わなかったところ 変換されたデスクトップ

    アプリのデバッグ Visual Studio “15” Preview 2 が必要で環境作れなかった デスクトップ対象に絞れば Desktop + UWP コラボレーションで 良いとこ取りできそう?