윤누리
윤누리
Admin
🧙 AI 위자드
🎻 루키 파트너
🌈 지피터스금손
🚀 SNS 챌린지 달성자
☕ 커피챗 오픈

macOS 앱 배포의 함정 - 권한, 캐시, 볼륨 충돌까지 다 잡은 설치 스크립트

📝 한줄 요약

"내 컴에선 되는데?"를 끝내기 위해 Claude Code와 함께 클린 설치 스크립트를 만들었습니다. 터미널에 한 줄만 복붙하면 기존 버전 삭제부터 권한 초기화, 최신 버전 설치, 앱 실행까지 자동으로 됩니다.

🎯 이런 분들께 도움돼요

  • macOS 앱을 팀에 배포했는데 "설치 안 돼요" DM이 자꾸 오는 분

  • 앱 업데이트할 때마다 팀원들에게 설치 가이드 보내기 지친 분

  • 셸 스크립트 잘 모르지만 배포 자동화하고 싶은 분

📌 이전 이야기 (3줄 요약)

Day 1~4: 스크린샷 → AI 분석 → Linear 이슈 자동 생성하는 macOS 앱 완성

Day 5: 멀티 이미지, 자동 업데이트, 라벨, 커스텀 단축키 등 6가지 기능 추가

문제: 팀원들이 설치할 때마다 각자 다른 오류가 발생...

👉 Day 1~4 이야기 | Day 5 이야기


😫 문제 상황 (Before)

앱을 팀에 배포하고 나니 예상치 못한 문제들이 터졌습니다.

팀원 A: "DMG 설치했는데 앱이 안 열려요" 팀원 B: "화면 녹화 권한이 안 뜨는데요?" 팀원 C: "업데이트했는데 예전 버전이 계속 실행돼요"

맥북 프로

이 놈의 권한 설정이 잘 안 된 이슈....

원인을 분석해보니:

  • 이전 버전 앱이 완전히 삭제 안 된 경우

  • macOS 권한(TCC) 캐시가 꼬인 경우

  • Application Support, Preferences 등 잔여 파일 충돌

  • DMG 마운트 시 볼륨 이름 충돌 (Linear Capture 1, 2...)

"매번 수동으로 해결해줄 순 없으니, 한 줄로 다 해결되는 스크립트를 만들자"고 결심했습니다.

🛠️ 사용한 도구

  • IDE: Claude Code (CLI)

  • 모델: Claude Opus 4.5

  • 기술: Bash 스크립트, GitHub Releases API, hdiutil


🔧 작업 과정

기본 클린업 로직 만들기 - "일단 싹 지우고 시작하자"

문제의 근본 원인은 "이전 상태가 깨끗하지 않다"는 거였습니다.

기존 버전 완전 삭제하고 새로 설치하는 스크립트 만들어줘. 앱 파일, 캐시, 설정, 화면 녹화 권한까지 다 초기화해야 해.

Claude가 단계별로 정리해줬습니다:

  1. 실행 중인 앱 종료 (pkill)

  2. /Applications에서 앱 삭제

  3. Application Support, Caches, Preferences, Saved State 삭제

  4. TCC 권한 리셋 (tccutil reset ScreenCapture)

각 단계마다 성공/실패를 색깔로 보여주는 로그도 추가했습니다. 터미널에서 실행하면 체크리스트처럼 진행 상황이 보여요.


자동 다운로드 추가 - "DMG 받으러 GitHub 안 가도 되게"

클린업만으로는 부족했습니다. 팀원들이 GitHub Releases에서 DMG를 직접 찾아 다운로드하는 것도 번거로웠거든요.

최신 버전 DMG를 자동으로 다운로드하고 설치까지 해줘

Claude가 GitHub API를 활용한 로직을 추가했습니다:

  • https://api.github.com/repos/{owner}/{repo}/releases/latest에서 최신 릴리즈 정보 가져오기

  • DMG 다운로드 URL 추출

  • 버전 번호 표시하고 다운로드

팀원 입장에서는 그냥 스크립트만 실행하면 항상 최신 버전이 설치됩니다.



마무리 - "설치 끝나면 바로 앱 실행"

마지막으로 사용자 경험을 다듬었습니다.

설치 후 자동 실행까지는 안 됨?

원래는 "앱을 실행하시겠습니까? (y/N)" 프롬프트가 있었는데, curl | bash로 실행하면 사용자 입력을 받을 수 없었습니다.

해결: 프롬프트 없이 자동 실행으로 변경

open "/Applications/Linear Capture.app"

✅ 결과 (After)

최종 설치 명령어

curl -sL https://raw.githubusercontent.com/chat-prompt/linear-capture/master/scripts/clean-install.sh | bash

실행 화면

============================================
  Linear Capture 클린 설치 스크립트
============================================

1️⃣  실행 중인 Linear Capture 종료...
   • 실행 중인 앱 없음

2️⃣  기존 앱 삭제...
   ✓ /Applications/Linear Capture.app 삭제됨

3️⃣  앱 데이터 삭제...
   ✓ Application Support 삭제됨
   ✓ 캐시 삭제됨
   ✓ Preferences 삭제됨

4️⃣  화면 녹화 권한 초기화...
   ✓ 화면 녹화 권한 리셋됨

5️⃣  최신 버전 다운로드 중...
   버전: v1.2.7
   ✓ 다운로드 완료

6️⃣  앱 설치 중...
   ✓ /Applications에 설치됨

7️⃣  앱 실행 중...
   ✓ 앱 실행됨

============================================
✅ Linear Capture v1.2.7 설치 완료!
============================================

Before vs After

항목

Before

After

설치 방법

GitHub에서 DMG 다운로드 → 마운트 → 드래그

터미널에 한 줄 복붙

문제 발생 시

1:1 화면 공유하며 디버깅

"스크립트 다시 실행해보세요"

업데이트

같은 과정 반복

같은 명령어 한 줄

소요 시간

5-10분 (문제 없을 때)

30초


🚀 앞으로의 계획

  • Windows 버전: 현재 macOS만 지원하는데, PowerShell 스크립트로 Windows도 원클릭 설치 지원 예정

  • 버전 관리 개선: 설치된 버전과 최신 버전 비교해서 업데이트 필요 시에만 설치

  • 오류 자동 리포트: 설치 실패 시 로그를 자동으로 수집해서 디버깅 용이하게

최신 버전 1.2.7까지! 앞으로도 열심히 만들어보겠습니다.

맥 os x os x os x os x os x os
1
2개의 답글
지피터스 뉴스레터

이번 주 AI, 딱 쓸 것만

매주 월요일 오후,
읽고 바로 써먹을 AI 소식만