본문 바로가기
C.W.K.
Stream
Lesson 02 of 07 · published

OS별 번들 타깃

~12 min · tauri, bundle, targets, distribution

Level 0웹 관광객
0 XP0/56 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete
"어디서나 통하는 설치 파일 같은 건 없어. OS마다 자기 포맷을 기대하고, 대개 자기 종류의 기계에서 빌드되길 원해."

OS마다 자기 포맷

데스크톱 OS는 저마다 사용자가 기대하는 설치 포맷이 있어. macOS.app 번들을 보통 .dmg에 담아 배포하고, Windows.msi(WiX로) 아니면 .exe 설치 파일(NSIS로), Linux.deb(Debian/Ubuntu), .rpm(Fedora/RHEL), .AppImage(배포판 안 가리고 어디서나 실행). 뭘 만들지는 bundle.targets에서 골라 — 지금 OS에서 가능한 전부면 "all", 아니면 필요한 것만 목록으로.

겨냥할 OS에서 빌드해

중요한 제약이 있어. 플랫폼별 번들은 보통 그 플랫폼 에서 빌드해야 해. macOS 설치 파일엔 Mac이 필요하고(서명이랑 macOS 툴체인 때문에), Windows 설치 파일엔 Windows가, Linux엔 Linux가 필요해. 크로스 컴파일이 제한적으로 있긴 한데 까다로워. 믿을 만한 길은 OS마다 빌드 기계를 두는 거야 — 그래서 macOS랑 Windows랑 Linux 러너를 나란히 둔 CI가 한 번의 push로 설치 파일을 전부 만드는 표준 방식이 된 거고(다음 레슨들에서 다뤄).

타깃은 청중을 보고 골라

모든 포맷을 다 낼 필요는 없어. 사용자가 전부 macOS면 dmg만 빌드하고 나머진 건너뛰어. 여러 Linux 배포판에 뿌린다면 AppImage가 하나로 제일 넓게 닿고, 패키지 매니저를 선호하는 사용자한텐 .deb이나 .rpm을 얹어. 반사적으로 전부 빌드하지 말고 사용자가 실제로 있는 곳에 타깃을 맞춰 — 타깃이 적으면 서명이 단순해지고, CI가 작아지고, 확인할 것도 줄어.

Code

번들 타깃 설정하기·json
// tauri.conf.json — 번들러가 뭘 만들지 골라.
{
  "bundle": {
    "active": true,
    "targets": "all"          // 현재 OS에서 가능한 전부
    // 또는 특정하게:
    // "targets": ["dmg"]                 (macOS만)
    // "targets": ["nsis", "msi"]        (Windows)
    // "targets": ["deb", "appimage"]    (Linux)
  }
}

External links

Exercise

앱의 타깃 표를 정해봐. 어떤 OS에 낼지랑 OS별 번들 포맷을 각각 한 문장 근거와 함께 적어. 그다음 노트북 한 대에서 전부 만드는 대신 왜 OS마다 빌드 기계나 CI 러너가 필요한지 써. 서명이랑 CI 레슨이 구체적으로 들어오기 전에 배포 표면부터 계획하는 거야.
Hint
macOS는 dmg, Windows는 nsis(또는 msi), Linux는 appimage(제일 넓게 닿아)에 필요하면 deb이나 rpm. 각각 자기 OS에서 빌드해야 해, 설치 도구랑 서명이 네이티브니까. CI 매트릭스가 존재하는 이유가 그거야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.