TECH NOTE · DESKTOP AI PET
Desktop AI Pet을 받아 macOS와 Windows에서 실행하는 순서입니다. 손상됨 경고와 SmartScreen 차단은 서명이 없어서 생기는 것이라 해제 방법이 정해져 있습니다.
"손상되어 열 수 없습니다"는 앱이 깨진 게 아니다
Desktop AI Pet을 받아서 실행하면 macOS에서 이 문구가 뜬다. 파일이 손상된 게 아니라 서명이 없어서 격리됐다. 터미널 한 줄로 풀린다.
받는 것부터 화면에 캐릭터가 뜨는 것까지 순서대로 정리했다. 5분이면 된다.
어디서 받나
다운로드 페이지 한 곳뿐이다.
https://bluecafe.github.io/pet-releases/download/
여기서 두 가지를 받을 수 있다.
| 대상 | 파일 | 크기 |
|---|---|---|
| macOS (Apple Silicon) | DesktopAIPet-macos-arm64.zip |
15.4M |
| Windows (64-bit) | DesktopAIPet-windows-x64.zip |
15.9M |
둘 다 설치 프로그램이 아니다. 압축을 풀면 바로 실행하는 형태다. 지우고 싶으면 폴더를 지우면 된다.
제대로 받았는지 확인하는 법
받은 파일이 온전한지 보려면 해시를 대조한다. 페이지가 매니페스트에 sha256을 같이 올려 둔다.
curl -s https://bluecafe.github.io/pet-releases/download/latest.json | grep -A6 '"macos-arm64"' | grep sha256
shasum -a 256 ~/Downloads/DesktopAIPet-macos-arm64.zip
두 값이 같으면 받는 도중에 깨지지 않았다. 다르면 다시 받는다.
이 글을 쓰면서 실제로 대조해 봤고 일치했다. 필수 단계는 아니다. 다만 서명이 없는 배포물이라 “받은 것이 올린 것과 같은지” 확인할 방법이 이것뿐이다.
macOS — 격리 해제
압축을 풀고 실행하면 이렇게 뜬다.
"DesktopAIPet"이(가) 손상되었기 때문에 열 수 없습니다.
휴지통으로 옮겨야 합니다.
문구가 사납지만 파일 문제가 아니다. macOS는 인터넷에서 받은 파일에 격리 표시를 붙이는데, 개발자 서명이 없으면 이 표시를 스스로 못 떼서 “손상됨”으로 보고한다.
표시를 지우고 열면 된다.
xattr -cr ~/Downloads/DesktopAIPet.app && open ~/Downloads/DesktopAIPet.app
앱을 다른 폴더로 옮길 필요는 없다. 압축 푼 자리에서 그대로 하면 된다.
경로가 헷갈리면 이렇게 한다. 터미널에 xattr -cr까지 치고 (끝에 공백) Finder에서 DesktopAIPet.app을 터미널 창으로 끌어다 놓으면 경로가 자동으로 들어간다. 그다음 Enter.
압축을 어떻게 풀었느냐에 따라 앱이 폴더 안에 있을 수 있다.
xattr -cr ~/Downloads/DesktopAIPet-macos-arm64/DesktopAIPet.app
우클릭 → 열기만으로는 안 되는 경우가 있다. 격리 표시는 앱 번들 안쪽 파일에도 붙는데, 우클릭 열기는 바깥쪽만 처리한다. -r이 붙은 이유가 이것이다.
Windows — SmartScreen
Windows에서는 다른 화면이 나온다.
Windows의 PC 보호
Microsoft Defender SmartScreen에서 인식할 수 없는 앱의 시작을 차단했습니다.
추가 정보 → 실행을 누르면 열린다. 여기서도 원인은 같다. 서명이 없어서 평판 정보가 없는 것이지 파일에 문제가 있는 게 아니다.
ZIP을 풀지 않고 안에서 바로 실행하면 실패할 수 있다. 폴더로 푼 뒤에 실행한다.
왜 서명하지 않았나
돈과 절차 때문이다. macOS에서 이 경고를 없애려면 애플 개발자 프로그램에 가입해서 공증을 받아야 하고, Windows는 코드 서명 인증서를 사야 한다.
개인이 만든 것을 몇 명이 받아 보는 단계에서 그만큼을 들일 이유를 아직 못 찾았다. 대신 해시를 공개해서, 받은 사람이 원본과 같은지 스스로 확인할 수 있게 했다.
서명이 있으면 이 확인을 운영체제가 대신 해 준다. 없으면 사람이 한다. 그 차이다.
지금 받을 수 있는 것
| 항목 | 값 |
|---|---|
| 버전 | 0.1.0 |
| macOS | Apple Silicon 전용 (Intel Mac 빌드 없음) |
| Windows | 64-bit |
| 설치 방식 | 압축 해제 후 실행 (설치 프로그램 없음) |
| 서명 | 없음 (양쪽 다) |
앱은 버전 확인용 파일을 하나 읽는다. 새 버전이 올라오면 그것을 보고 알려주는 구조다. 그 파일이 위에서 해시를 꺼내 온 latest.json이다.
같이 나오는 질문
xattr을 실행하면 위험하지 않나
xattr -cr은 파일의 확장 속성을 지우는 명령이다. 파일 내용은 건드리지 않는다. 지워지는 건 “이 파일은 인터넷에서 왔다”는 표시다.
다만 이 명령은 받은 파일을 믿을 때만 쓰는 것이 맞다. 아무 파일에나 습관처럼 쓰면 macOS가 걸러 주는 단계를 스스로 없애는 셈이 된다.
Intel Mac에서는 안 되나
지금 올라온 macOS 빌드는 Apple Silicon용이다. Intel Mac용은 없다.
앱을 지우려면
.app 파일을 지우면 된다. 설치 프로그램을 쓰지 않으므로 시스템에 흩어져 남는 것이 없다.
왜 설치 프로그램이 없나
만들 수는 있지만 서명 없이 배포하면 설치 프로그램 자체가 같은 경고에 걸린다. 경고를 한 번 더 만드는 셈이라 두지 않았다.
다음 편부터는 이 앱을 만들면서 쓴 코드를 하나씩 공개한다. 첫 순서는 투명하고 클릭이 통과하는 창이다. 화면 위에 얹혀 있으면서 마우스를 가로채지 않는 창을 어떻게 만드는지, 돌아가는 최소 예제로 정리한다.
