"패키징은 코드를 사용자에게 전달 가능한 앱으로 만드는 과정" — 플랫폼별로 인스톨러 형식, 아이콘 규격, 서명 방법이 다릅니다.
패키징 vs 빌드(Make)
| 단계 | 산출물 | 용도 |
|---|
| 패키징(Package) | 실행 가능한 앱 폴더 | 개발/테스트 |
| 빌드(Make/Build) | 인스톨러(.exe, .dmg 등) | 사용자 배포 |
electron-builder 설정
appId: com.myapp.desktop
productName: 내 앱
copyright: Copyright 2026 MyApp
directories:
output: release
buildResources: build
files:
- "dist/**/*"
- "package.json"
icon: build/icon
win:
target:
- target: nsis
arch: [x64, arm64]
- target: portable
icon: build/icon.ico
nsis:
oneClick: false
perMachine: false
allowToChangeInstallationDirectory: true
installerIcon: build/icon.ico
uninstallerIcon: build/icon.ico
license: LICENSE
mac:
target:
- target: dmg
arch: [x64, arm64]
- target: zip
icon: build/icon.icns
category: public.app-category.developer-tools
hardenedRuntime: true
gatekeeperAssess: false
dmg:
contents:
- x: 130
y: 220
- x: 410
y: 220
type: link
path: /Applications
linux:
target:
- AppImage
- deb
- snap
icon: build/icons
category: Development
maintainer: dev@example.com
deb:
depends:
- libgtk-3-0
- libnotify4
- libnss3
아이콘 준비
| 플랫폼 | 형식 | 크기 |
|---|
| Windows | .ico | 256x256 |
| macOS | .icns | 1024x1024 |
| Linux | .png | 여러 크기 (16~512) |
build/
├── icon.ico # Windows
├── icon.icns # macOS
└── icons/ # Linux
├── 16x16.png
├── 32x32.png
├── 128x128.png
├── 256x256.png
└── 512x512.png
electron-icon-builder 도구를 사용하면 하나의 PNG에서 모든 형식을 생성할 수 있습니다.
npx electron-icon-builder --input=icon.png --output=build
빌드 명령어
{
"scripts": {
"build": "electron-vite build",
"package:win": "npm run build && electron-builder --win",
"package:mac": "npm run build && electron-builder --mac",
"package:linux": "npm run build && electron-builder --linux",
"package:all": "npm run build && electron-builder -mwl"
}
}
인스톨러 형식 비교
Windows
| 형식 | 특징 |
|---|
| NSIS | 가장 많이 사용, 커스터마이징 가능 |
| MSI | 기업 배포에 적합, Group Policy 지원 |
| Portable | 설치 없이 실행 |
| Squirrel | 자동 업데이트 용이 |
macOS
| 형식 | 특징 |
|---|
| DMG | 드래그 앤 드롭 설치, 가장 표준적 |
| PKG | 스크립트 실행 가능, 기업 배포 |
| ZIP | 자동 업데이트용 |
Linux
| 형식 | 특징 |
|---|
| AppImage | 설치 불필요, 단일 파일 |
| DEB | Debian/Ubuntu 패키지 |
| RPM | Fedora/RHEL 패키지 |
| Snap | Canonical 스토어 배포 |
| Flatpak | 범용 리눅스 패키지 |
ASAR 패키징 옵션
asar: true
asarUnpack:
- "**/*.node"
- "node_modules/sharp/**"
면접 포인트 정리
- 패키징은 코드를 실행 가능한 앱으로 변환, 빌드는 인스톨러까지 생성
- 플랫폼별 아이콘 규격이 다름 (ico/icns/png)
- NSIS(Windows), DMG(macOS), AppImage(Linux)가 가장 일반적
- ASAR로 소스 코드를 묶되, 네이티브 모듈은 제외(asarUnpack)
electron-icon-builder로 아이콘 자동 생성 가능
패키징을 다뤘으면, 다음은 코드 서명을 알아봅시다.