Windowsストアガイド
Windows 10では、従来のwin32実行ファイルに新しい仲間が加わりました。それがユニバーサルWindowsプラットフォームです。新しい .appx
形式は、Cortanaやプッシュ通知など、多くの新しい強力なAPIを有効にするだけでなく、Windowsストアを通じてインストールと更新を簡素化します。
Microsoftは、Electronアプリを .appx
パッケージとしてコンパイルするツールを開発しました。これにより、開発者は新しいアプリケーションモデルにある優れた機能の一部を使用できます。このガイドでは、その使用方法と、Electron AppXパッケージの機能と制限について説明します。
背景と要件
Windows 10 "Anniversary Update" は、win32 .exe
バイナリを仮想化されたファイルシステムとレジストリと共に起動することで実行できます。どちらも、Windowsコンテナ内でアプリとインストーラーを実行することでコンパイル中に作成され、Windowsがインストール中にオペレーティングシステムに対して行われた変更を正確に識別できるようにします。実行ファイルを仮想ファイルシステムと仮想レジストリと組み合わせることで、Windowsはワンクリックでインストールとアンインストールを実行できます。
さらに、exeはappxモデル内で起動されます。つまり、ユニバーサルWindowsプラットフォームで使用可能な多くのAPIを使用できます。さらに多くの機能を実現するために、Electronアプリは、exe
と共に起動される不可視のUWPバックグラウンドタスクとペアリングできます。これは、バックグラウンドでタスクを実行したり、プッシュ通知を受信したり、他のUWPアプリケーションと通信したりするためのサイドキックとして起動されるようなものです。
既存のElectronアプリをコンパイルするには、次の要件を満たしていることを確認してください。
- Anniversary Updateを搭載したWindows 10 (2016年8月2日リリース)
- Windows 10 SDK、こちらからダウンロードできます
- 少なくともNode 4 (確認するには、`node -v`を実行してください)
次に、electron-windows-store
CLIをインストールします。
npm install -g electron-windows-store
ステップ1:Electronアプリケーションをパッケージ化する
@electron/packager
(または同様のツール) を使用してアプリケーションをパッケージ化します。最終的なアプリケーションで不要なnode_modules
は必ず削除してください。実際に必要のないモジュールは、アプリケーションのサイズを増加させるためです。
出力はおおよそ次のようになります。
├── Ghost.exe
├── LICENSE
├── content_resources_200_percent.pak
├── content_shell.pak
├── d3dcompiler_47.dll
├── ffmpeg.dll
├── icudtl.dat
├── libEGL.dll
├── libGLESv2.dll
├── locales
│ ├── am.pak
│ ├── ar.pak
│ ├── [...]
├── node.dll
├── resources
│ └── app.asar
├── v8_context_snapshot.bin
├── squirrel.exe
└── ui_resources_200_percent.pak
ステップ2:electron-windows-storeの実行
管理者特権のPowerShell (「管理者として実行」) から、必要なパラメーターを指定してelectron-windows-store
を実行します。入力ディレクトリと出力ディレクトリ、アプリの名前とバージョン、およびnode_modules
をフラット化する必要があることの確認を渡します。
electron-windows-store `
--input-directory C:\myelectronapp `
--output-directory C:\output\myelectronapp `
--package-version 1.0.0.0 `
--package-name myelectronapp
実行されると、ツールは動作を開始します。Electronアプリを入力として受け取り、node_modules
をフラット化します。次に、アプリケーションをapp.zip
としてアーカイブします。インストーラーとWindowsコンテナーを使用して、ツールは「展開された」AppXパッケージを作成します。これには、Windowsアプリケーションマニフェスト (AppXManifest.xml
) と、出力フォルダー内の仮想ファイルシステムと仮想レジストリが含まれます。
展開されたAppXファイルが作成されると、ツールはWindows App Packager (MakeAppx.exe
) を使用して、ディスク上のこれらのファイルから単一ファイルのAppXパッケージを作成します。最後に、このツールを使用して、コンピューター上に信頼できる証明書を作成し、新しいAppXパッケージに署名できます。署名されたAppXパッケージを使用すると、CLIはマシンにパッケージを自動的にインストールすることもできます。
ステップ3:AppXパッケージの使用
パッケージを実行するには、ユーザーは、いわゆる「Anniversary Update」が適用されたWindows 10が必要です。Windowsのアップデート方法の詳細は、こちらをご覧ください。
従来のUWPアプリとは対照的に、パッケージ化されたアプリは現在、手動の検証プロセスを経る必要があります。これについては、こちらから申請できます。一方、すべてのユーザーはパッケージをダブルクリックすることでインストールできるため、より簡単なインストール方法を探している場合は、ストアへの提出は必要ない場合があります。管理対象環境 (通常は企業) では、Add-AppxPackage
PowerShellコマンドレットを使用して、自動的にインストールできます。
もう1つの重要な制限は、コンパイルされたAppXパッケージにはまだwin32実行ファイルが含まれているため、Xbox、HoloLens、または電話では実行されないことです。
オプション:BackgroundTaskを使用してUWP機能を追加する
Electronアプリを、プッシュ通知、Cortana統合、ライブタイルなどのWindows 10の機能をフルに活用できる、不可視のUWPバックグラウンドタスクとペアリングできます。
バックグラウンドタスクを使用してトースト通知とライブタイルを送信するElectronアプリの例については、Microsoftが提供するサンプルをご覧ください。
オプション:コンテナ仮想化を使用して変換する
AppXパッケージを生成するために、electron-windows-store
CLIはほとんどのElectronアプリで機能するはずのテンプレートを使用します。ただし、カスタムインストーラーを使用している場合、または生成されたパッケージに問題が発生した場合は、Windowsコンテナーを使用したコンパイルでパッケージを作成してみてください。このモードでは、CLIは空白のWindowsコンテナーにアプリケーションをインストールして実行し、アプリケーションがオペレーティングシステムに対して正確にどのような変更を行っているかを判断します。
CLIを初めて実行する前に、「Windows Desktop App Converter」をセットアップする必要があります。これには数分かかりますが、ご心配なく。これは1回だけ行う必要があります。こちらからDesktop App Converterをダウンロードしてください。DesktopAppConverter.zip
とBaseImage-14316.wim
の2つのファイルを受け取ります。
DesktopAppConverter.zip
を解凍します。管理者特権のPowerShell (「管理者として実行」で開く) から、Set-ExecutionPolicy bypass
を呼び出して、システムの実行ポリシーが意図したとおりにすべてを実行できるようにします。- 次に、Windowsベースイメージの場所 (
BaseImage-14316.wim
としてダウンロード) を渡して、Desktop App Converterのインストールを実行します。 `.\DesktopAppConverter.ps1 -Setup -BaseImage .\BaseImage-14316.wim` を呼び出します。 - 上記のコマンドを実行すると再起動を求められた場合は、マシンを再起動し、再起動が成功したら上記のコマンドをもう一度実行してください。
インストールが成功したら、Electronアプリのコンパイルに進むことができます。