이 가이드에서는 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 Forge를 사용하는 새로운 Electron 앱부터 시작하겠습니다. 기존 앱에서 시작하는 경우 이 단계를 건너뛸 수 있습니다.
npm create electron-app@latest my-windows-app
cd my-windows-app
Electron Forge에서 메시지가 표시되면 다음을 수행합니다.
- 번들러: 없음 선택(권장 - 추가 구성 없이 네이티브 추가 기능 작동)
- 언어: JavaScript 선택(이 가이드에서는 JS 사용; TypeScript도 작동합니다.
- 전자 버전: 최신 선택
- 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/- 앱에 대한 앱 아이콘 및 시각적 자산 포함생성
winapp.yaml- SDK 버전 및 프로젝트 구성 추적Windows 앱 SDK 런타임 설치 - 최신 API를 위한 필수 런타임 구성 요소
Windows 개발자 모드 활성화 - 애플리케이션 디버깅에 필요
비고
.winapp/ 폴더는 자동으로 .gitignore에 추가되며 소스 저장소에 체크인해서는 안 됩니다.
열 Package.appxmanifest는 표시 이름, 게시자 및 기능과 같은 속성을 추가로 사용자 지정하는 데 사용할 수 있습니다.
Tip
Windows SDK에 대하여:
Windows SDK - Win32/데스크톱 앱을 빌드할 수 있는 개발 플랫폼입니다. 특정 버전의 OS와 결합된 Windows API를 중심으로 설계되었습니다. 이를 사용하여 파일 시스템, 네트워킹 및 시스템 서비스와 같은 핵심 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를 사용할 수 있도록 하려면 postinstallpackage.json 스크립트를 추가합니다.
{
"scripts": {
"postinstall": "winapp restore && winapp node add-electron-debug-identity"
}
}
이 스크립트는 다음 두 가지 작업을 수행한 후 npm install 자동으로 실행됩니다.
-
winapp restore- 모든 Windows SDK 패키지를 다운로드하여.winapp/폴더로 복원합니다. -
winapp node add-electron-debug-identity- 디버그 ID를 사용하여 Electron 앱을 등록합니다(다음 단계에서 자세히 설명).
이제 npm install 실행하여 사후 설치 스크립트를 트리거하고 Windows 환경을 구성합니다.
npm install
비고
스크립트는 매 postinstallnpm 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 이해
npm install을 4단계에서 실행하여 postinstall 스크립트를 트리거했고, 이 스크립트가 winapp node add-electron-debug-identity를 실행했습니다. 이렇게 하면 앱에 임시 디버그 ID가 제공되므로 개발 중에 앱 ID가 필요한 Windows API를 테스트할 수 있습니다.
디버그 ID는 무엇을 합니까?
이 명령은 다음과 같습니다.
-
Package.appxmanifest앱 세부 정보 및 기능을 가져오기 위해 읽습니다. -
electron.exe를 임시 ID를 사용하여node_modules에 등록합니다. - 전체 MSIX 패키지를 만들지 않고 ID 필수 API를 테스트할 수 있습니다.
디버그 ID는 4단계에서 실행 npm install 했을 때 자동으로 적용되었습니다. 앞으로는 누구나 실행할 npm install때마다 다시 적용됩니다.
디버그 ID를 수동으로 업데이트하는 경우
수정(기능, ID 또는 속성 변경) 또는 연결된 자산(아이콘, mcp.json등)을 수정 Package.appxmanifest 할 때마다 이 명령을 수동으로 실행해야 합니다.
npx winapp node add-electron-debug-identity
설정 테스트
이제 디버그 ID가 적용된 상태에서 Electron 앱을 테스트할 수 있습니다.
npm start
데스크톱 응용 프로그램 창이 열리고(브라우저 탭이 아님) Electron 앱이 실행되는 방식이 표시됩니다.
⚠️ 알려진 문제: 앱 크래시 또는 빈 창(확장하려면 클릭)
Windows에서 스파스 패키징된 Electron 애플리케이션과 관련된 알려진 버그가 있으며, 이로 인해 애플리케이션이 시작 시 충돌하거나 웹 콘텐츠를 렌더링하지 못할 수 있습니다. 이 문제는 Windows 해결되었지만 아직 모든 디바이스에 전파되지 않았습니다.
증상:
- 시작 직후 앱이 충돌합니다.
- 창이 열리지만 빈/흰색 화면이 표시됩니다.
- 웹 콘텐츠를 렌더링하지 못함
해결 방법:
package.json에서 시작 스크립트에 --no-sandbox 플래그를 추가합니다. 이는 개발 목적으로 안전한 Chromium의 샌드박스를 사용하지 않도록 설정하여 문제를 해결합니다.
{
"scripts": {
"start": "electron-forge start -- --no-sandbox"
}
}
중요: 이 문제는 전체 MSIX 패키징에 영향을 주지 않으며 개발 중에만 ID를 디버그합니다.
디버그 ID를 실행 취소하려면 (문제 해결에 필요한 경우)
npx winapp node clear-electron-debug-identity
그러면 디버그 ID 없이 원래 Electron 실행 파일이 복원됩니다.
다음 단계
이제 개발 환경이 설정되었으므로 네이티브 추가 기능을 만들고 Windows API를 호출할 준비가 되었습니다.
- Phi Silica Addon 만들기 - Phi Silica AI API를 호출하는 C# 추가 기능을 만드는 방법 알아보기
- WinML 추가 기능 만들기 - Windows Machine Learning 사용하는 C# 추가 기능을 만드는 방법을 알아봅니다.
- 배포용 패키징 - 배포를 위한 MSIX 패키지 만들기
또는 시작 개요로 돌아갑니다.
Windows developer