このガイドでは、Windows API 開発用に Electron 開発環境を設定する手順について説明します。 必要なツールをインストールし、projectを初期化して、Windows SDK を構成します。
[前提条件]
始める前に、以下のことを確認してください:
- Windows 11
-
Node.js -
winget install OpenJS.NodeJS --source winget -
.NET SDK v10 -
winget install Microsoft.DotNet.SDK.10 --source winget -
Visual Studio のネイティブ デスクトップ ワークロード -
winget install --id Microsoft.VisualStudio.Community --source winget --override "--add Microsoft.VisualStudio.Workload.NativeDesktop --includeRecommended --passive --wait"
手順 1: 新しい Electron アプリを作成する
優れたツールとパッケージのサポートを提供する Electron Forge を使用した新しい Electron アプリから始めます。 既存のアプリから開始する場合は、この手順をスキップできます。
npm create electron-app@latest my-windows-app
cd my-windows-app
Electron Forge からプロンプトが表示された場合:
- Bundler: [なし] を選択します (推奨 — ネイティブ アドオンは追加の構成なしで動作します)
- 言語: JavaScript を選択します (このガイドでは JS を使用します。TypeScript も機能します)
- Electron バージョン: 最新の選択
- git を初期化する: ユーザー設定
アプリの実行を確認します。
npm start
既定の [Electron Forge] ウィンドウが表示されます。 それを閉じて、Windows機能を追加しましょう。
手順 2: winapp CLI をインストールする
Electron ワークフローには、winget からインストールされたスタンドアロン CLI ではなく 、npm パッケージ (@microsoft/winappcli) が必要です。 npm パッケージには、ネイティブ CLI で使用できない Node.js固有のヘルパー ( add-electron-debug-identity や create-addonなど) が含まれています。 winget から winapp が既にインストールされている場合は問題ありません。npm パッケージはプロジェクトの依存関係として Node.js固有のツールを追加し、システムのインストールと競合しません。
npm install --save-dev @microsoft/winappcli
手順 3: Windows 開発用にprojectを初期化する
winapp init コマンドは、アプリ マニフェスト、アセット、SDK など、必要なものをすべて一度に設定します。
次のコマンドを実行し、プロンプトに従います。
npx winapp init .
プロンプトが表示されたら、次を実行します。
- パッケージ名: Enter キーを押して既定値をそのまま使用します (my-windows-app)
- Publisher名: Enter キーを押して既定値をそのまま使用するか、名前を入力します
- バージョン: Enter キーを押して 1.0.0.0 を受け入れる
- エントリ ポイント: Enter キーを押して既定値 (my-windows-app.exe) をそのまま使用します。
- SDK のセットアップ: [安定した SDK] を選択する
winapp initは何をしますか?
このコマンドは、Windows 開発に必要なすべてのものを設定します。
以下の内容を含む
.winapp/フォルダーを作成します。- Windows SDK からのヘッダーとライブラリ
- Windows アプリ SDK のヘッダーとライブラリ
- 必要なバイナリを含む NuGet パッケージ
Package.appxmanifestを生成します- アプリ ID と MSIX パッケージ化に必要なアプリ マニフェストAssets/フォルダーを作成する - アプリのアイコンとビジュアルアセットが含まれますCreates
winapp.yaml- SDK のバージョンとproject構成を追跡しますWindows アプリ SDK ランタイムのインストール - 最新の API に必要なランタイム コンポーネント
Windows - アプリケーションのデバッグに必要
注
.winapp/ フォルダーは自動的に.gitignoreに追加されるため、ソースにチェックインしないでください。
Package.appxmanifestを開いて、表示名、発行元、機能などのプロパティをさらにカスタマイズできます。
Tip
Windows SDK について:
Windows SDK - Win32/デスクトップ アプリをビルドできる開発プラットフォーム。 設計の中心になっている Windows API は、特定のバージョンの OS と連動しています。 これを使用して、ファイル システム、ネットワーク、システム サービスなどの主要な Win32 API にアクセスします。
Windows アプリ SDK - Windows バージョン間でインストールできる最新のデスクトップ アプリを構築できる新しい開発プラットフォーム (最大Windows 10 1809)。 これは、Windows OS API の豊富なカタログに関して、OS から分離された便利な抽象化を提供します。 Windows アプリ SDKには WinUI 3 が含まれており、WINDOWS OS リリースとは無関係に定期的な更新プログラムを受け取る、AI 機能 (Phi Silica)、通知、ウィンドウ管理などの最新の機能にアクセスできます。
手順 4: ビルド パイプラインに復元を追加する
他の開発者がプロジェクトを複製するとき、または CI/CD パイプラインでWindows SDK を使用できるようにするには、postinstall スクリプトを package.json に追加します。
{
"scripts": {
"postinstall": "winapp restore && winapp node add-electron-debug-identity"
}
}
このスクリプトは、 npm install 後に自動的に実行され、次の 2 つの処理を実行します。
-
winapp restore- Windows SDK パッケージをすべて.winapp/フォルダーにダウンロードして復元します -
winapp node add-electron-debug-identity- Electron アプリをデバッグ ID に登録します (詳細については、次の手順で説明します)。
次に、npm install を実行して、ポストインストール スクリプトをトリガーし、Windows環境を構成します。
npm install
注
postinstall スクリプトは、npm installごとに自動的に実行されます。 つまり、誰かがプロジェクトを複製して npm install を実行するたびに、Windows環境が自動的に構成されます。
💡 クロスプラットフォーム開発 (クリックして展開)
クロスプラットフォームの Electron アプリを構築していて、開発者が macOS または Linux で作業している場合は、Windows固有のセットアップを条件付きで実行する必要があります。 推奨される方法を次に示します。
scripts/postinstall.jsを作成します。
if (process.platform === 'win32') {
const { execSync } = require('child_process');
try {
execSync('npx winapp restore && npx winapp cert generate --if-exists skip && npx winapp node add-electron-debug-identity', {
stdio: 'inherit'
});
} catch (error) {
console.warn('Warning: Windows-specific setup failed. If you are not developing Windows features, you can ignore this.');
}
} else {
console.log('Skipping Windows-specific setup on non-Windows platform.');
}
次に、 package.jsonを更新します。
{
"scripts": {
"postinstall": "node scripts/postinstall.js"
}
}
これにより、Windows固有のセットアップがWindowsコンピューターでのみ実行され、他のプラットフォームの開発者はエラーなしでプロジェクトで作業できるようになります。
手順 5: デバッグ ID について
手順 4 で実行した npm install によって、 postinstall スクリプトがトリガーされ、 winapp node add-electron-debug-identityが実行されました。 これにより、アプリに一時的なデバッグ ID が提供されるため、開発中にアプリ ID を必要とする API Windowsテストできます。
デバッグ ID は何をしますか?
このコマンド:
-
Package.appxmanifestを読み取り、アプリの詳細と機能を取得します -
electron.exe内でnode_modulesを一時的な ID で登録します - 完全な MSIX パッケージを作成せずに、ID が必要な API をテストできます
デバッグ ID は、手順 4 で npm install を実行したときに自動的に適用されました。 今後、誰かが npm install実行するたびに再適用されます。
デバッグ ID を手動で更新するタイミング
Package.appxmanifest (機能、ID、プロパティの変更) またはリンクされた資産 (アイコン、mcp.jsonなど) を変更するたびに、このコマンドを手動で実行する必要があります。
npx winapp node add-electron-debug-identity
セットアップのテスト
デバッグ ID を適用して Electron アプリをテストできるようになりました。
npm start
デスクトップ アプリケーション ウィンドウ (ブラウザー タブではなく) が開いていることがわかります。これは、Electron アプリの実行方法です。
⚠️ 既知の問題: アプリのクラッシュまたは空のウィンドウ (クリックして展開)
電子アプリケーションのパッケージ化が疎である既知のWindowsバグがあり、アプリが起動時にクラッシュしたり、Web コンテンツをレンダリングしたりすることはありません。 この問題はWindowsで修正されましたが、まだすべてのデバイスに反映されていません。
症状:
- 起動直後にアプリがクラッシュする
- ウィンドウが開きますが、空白または白の画面が表示されます
- Web コンテンツのレンダリングに失敗する
対処法:
--no-sandboxの開始スクリプトにpackage.json フラグを追加します。 これは、開発目的で安全な Chromium のサンドボックスを無効にすることで、この問題を回避します。
{
"scripts": {
"start": "electron-forge start -- --no-sandbox"
}
}
大事な: この問題は、完全な MSIX パッケージ化 には影響しません 。開発中は ID のみをデバッグします。
デバッグ ID を元に戻すには (トラブルシューティングに必要な場合):
npx winapp node clear-electron-debug-identity
これにより、デバッグ ID なしで元の Electron 実行可能ファイルが復元されます。
次のステップ
開発環境が設定されたので、ネイティブ アドオンを作成し、Windows API を呼び出す準備ができました。
- Phi Silica アドオンの作成 - Phi Silica AI API を呼び出す C# アドオンを作成する方法について説明します
- WinML アドオンの作成 - Windows Machine Learningを使用する C# アドオンを作成する方法について説明します
- 配布用パッケージ - 配布用 の MSIX パッケージを作成する
または、 概要に戻ります。
Windows developer