"어디서나 통하는 설치 파일 같은 건 없어. 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가 작아지고, 확인할 것도 줄어.