"패키징은 코드를 사용자에게 전달 가능한 앱으로 만드는 과정" — 플랫폼별로 인스톨러 형식, 아이콘 규격, 서명 방법이 다릅니다.


패키징 vs 빌드(Make)

단계산출물용도
패키징(Package)실행 가능한 앱 폴더개발/테스트
빌드(Make/Build)인스톨러(.exe, .dmg 등)사용자 배포

electron-builder 설정

YAML
# electron-builder.yml
appId: com.myapp.desktop
productName:  
copyright: Copyright 2026 MyApp

directories:
  output: release
  buildResources: build

files:
  - "dist/**/*"
  - "package.json"

# 아이콘
icon: build/icon

# Windows
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

# macOS
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
linux:
  target:
    - AppImage
    - deb
    - snap
  icon: build/icons
  category: Development
  maintainer: dev@example.com

deb:
  depends:
    - libgtk-3-0
    - libnotify4
    - libnss3

아이콘 준비

플랫폼형식크기
Windows.ico256x256
macOS.icns1024x1024
Linux.png여러 크기 (16~512)
PLAINTEXT
build/
├── icon.ico        # Windows
├── icon.icns       # macOS
└── icons/          # Linux
    ├── 16x16.png
    ├── 32x32.png
    ├── 128x128.png
    ├── 256x256.png
    └── 512x512.png

electron-icon-builder 도구를 사용하면 하나의 PNG에서 모든 형식을 생성할 수 있습니다.

BASH
npx electron-icon-builder --input=icon.png --output=build

빌드 명령어

JSON
{
  "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설치 불필요, 단일 파일
DEBDebian/Ubuntu 패키지
RPMFedora/RHEL 패키지
SnapCanonical 스토어 배포
Flatpak범용 리눅스 패키지

ASAR 패키징 옵션

YAML
asar: true           # ASAR 아카이브로 묶기 (권장)
asarUnpack:          # ASAR에서 제외할 파일
  - "**/*.node"      # 네이티브 모듈
  - "node_modules/sharp/**"

면접 포인트 정리

  • 패키징은 코드를 실행 가능한 앱으로 변환, 빌드는 인스톨러까지 생성
  • 플랫폼별 아이콘 규격이 다름 (ico/icns/png)
  • NSIS(Windows), DMG(macOS), AppImage(Linux)가 가장 일반적
  • ASAR로 소스 코드를 묶되, 네이티브 모듈은 제외(asarUnpack)
  • electron-icon-builder로 아이콘 자동 생성 가능

패키징을 다뤘으면, 다음은 코드 서명을 알아봅시다.

댓글 로딩 중...