# Mac에서 Mole for Windows를 만든 방법

Mole for Mac를 공개한 뒤로 Windows 버전은 언제 나오느냐는 질문을 꾸준히 받았고, 그때마다 Mac 버전이 자리를 잡은 다음에야 손댈 수 있다고 답했습니다. 그리고 10월 14일, 드디어 Windows 버전을 공개했습니다. 공개 전에 소수의 사용자와 20개가 넘는 버전을 거쳤고, Mole을 일찍부터 응원해 준 사용자들이 며칠 동안 테스트하며 정말 많은 제안을 보내 주었습니다. 모두 고맙습니다. 이번 개발은 꽤 재미있었기에, Mac에서 Windows 앱을 어떻게 만들었는지 기록해 둡니다.

<figure class="blog-diagram">
  <img src="/img/windows/clean.webp" width="2584" height="1741" loading="lazy" alt="Mole for Windows의 정리 화면. 위쪽에 다섯 화면의 탐색 막대, 가운데에 지구">
</figure>

## 거의 처음부터 시작

더 나은 사용감과 성능을 위해 이번에는 Windows 네이티브인 C#과 WinUI 3로 만들었고, Electron은 쓰지 않았습니다. Windows와 macOS는 시스템이 동작하는 방식도, 정리할 대상도 완전히 다르기 때문에 디자인과 문구를 빼면 Mac 버전의 10만 줄이 넘는 Swift 코드는 거의 재사용할 수 없었습니다. 이리저리 오가며 한 달 정도 걸렸고, 코드는 약 7만 8천 줄, 테스트는 4,000개가 넘습니다.

## Mac 한 대, 가상 머신 한 대, ThinkPad 한 대

익숙한 Mac보다 개발과 디버깅이 훨씬 어려웠고, WinUI 화면은 Mac에서 빌드되지 않습니다. 그래서 코드 작성과 AI의 컨텍스트는 모두 Mac 한 대에 두고, Mac의 Parallels Desktop으로 Windows 가상 머신을 띄워 디버깅과 검증을 하고, ThinkPad X1 한 대를 24시간 켜 두고 가상 머신에서는 보이지 않는 실제 동작을 확인했습니다. 지금 제 작업 책상은 이렇습니다. 가운데가 Mac, 왼쪽이 ThinkPad X1이고, 모든 화면에 Mole이 열려 있습니다.

<figure class="blog-diagram">
  <img src="/img/windows/workspace.webp" width="1600" height="1200" loading="lazy" alt="작성자의 작업 책상. 가운데에 Mac과 외부 모니터, 왼쪽에 ThinkPad X1이 있고 모든 화면에 Mole이 열려 있음">
</figure>

## 도움이 된 방법

Mac에서 Windows 소프트웨어를 만든 이번 한 달 동안 쓸모 있었던 방법 몇 가지를, 같은 일이 필요한 분들께 공유합니다.

- 코드를 층으로 나눕니다. 정리와 제거 같은 핵심 로직과 화면 상태는 Windows에 의존하지 않는 .NET 프로젝트에 두고, 시스템 API를 부르는 층은 `EnableWindowsTargeting`을 켜서 Mac에서도 빌드되게 했습니다. 4,000개가 넘는 테스트 대부분이 Mac에서 돌고, Windows에서 빌드해야 하는 것은 WinUI 화면 층뿐입니다.
- 저장소를 Parallels 공유 폴더로 가상 머신에 연결합니다. Mac에서 코드를 고치면 가상 머신에서 바로 빌드하고 실행할 수 있어 파일을 오갈 필요가 없습니다. 다만 양쪽의 빌드 결과물은 서로 다른 폴더에 두어야 합니다. 그렇지 않으면 `obj`에 기록되는 절대 경로가 서로 덮어씁니다.
- 가상 머신은 스크립트로 다룹니다. `prlctl exec`로 그 안에서 명령을 실행하고, 버튼 클릭과 창 캡처는 UI Automation의 접근성 이름으로 합니다. 좌표에 기대지 않으니 AI가 정확한 컨트롤을 누르고, 화면이 조금 바뀌어도 빗나가지 않습니다.
- ThinkPad에는 UU Remote와 ssh로 접속합니다. 실제 x64, 고해상도 배율, 배터리, SmartScreen, Defender는 이쪽에서 확인하고, 매번 출시 전에 여기에 설치해 한 번씩 눌러 봅니다.
- 명령줄로 닿지 않는 곳은 Claude에서 lcu를 거쳐 Codex의 computer use를 부릅니다. 솔직히 Codex의 computer use는 정말 잘 작동하지만, UAC 확인 창만은 누르지 못해서 그때는 제가 직접 나섭니다.

평소에는 Kaku의 탭 7~10개에서 Agent가 동시에 작업을 돌리고 있습니다.

## Windows 개발자 인증서는 번거롭다

Windows에서 서명되지 않은 설치 파일은 여는 순간 'Windows의 PC 보호'에 막히고, Windows 11의 스마트 앱 컨트롤은 아예 실행을 막기 때문에, 출시 전에 코드 서명 인증서를 사야 했습니다. 알아보니 EV 인증서는 이제 SmartScreen에서 아무런 이점이 없고, 서명한 새 프로그램도 설치한 사람이 충분히 늘어날 때까지는 인식할 수 없는 앱으로 표시됩니다. Microsoft의 Azure Artifact Signing은 월 10달러가 안 되어 가장 간편했지만 개인은 미국과 캐나다에서만 쓸 수 있어 제게는 해당되지 않았고, Certum의 저렴한 오픈 소스용 인증서는 상업적 사용이 허용되지 않습니다.

결국 Certum의 클라우드 OV 인증서를 샀고, 1년에 100~200달러 정도입니다. 키는 Certum의 클라우드 HSM에 있고, 서명할 때는 휴대폰의 SimplySign 앱에서 일회용 코드를 받습니다. 인증서에 적히는 이름은 심사를 거친 법적 명칭이고, SmartScreen 평판도 이 이름으로 쌓입니다. 써 보니 SimplySign 세션이 몇 시간 쉬면 끊겨서 패키징 도중에 서명이 실패한 적이 몇 번 있었고, 그래서 지금은 빌드할 때마다 먼저 파일 하나를 시험 삼아 서명합니다.

## 가장 오래 걸린 건 앱 테스트

정리 도구가 가장 피해야 할 일은 지우면 안 되는 것을 지우는 것인데, Windows는 앱마다 설치 프로그램과 제거 프로그램의 방식이 제각각이라 하나씩 설치해 보는 수밖에 없습니다. 국내외 엔지니어가 자주 쓰는 앱으로 목록을 만들고, 편집기, IDE, 브라우저, 채팅, 클라우드 드라이브, 데이터베이스, AI 도구까지 하나씩 설치하고 열어 써 본 뒤, Mole의 제거, 업데이트, 남은 파일 정리, 시작 프로그램 목록이 그 앱을 제대로 알아보는지 확인했습니다. 지금까지 372개를 테스트했고, 그중 72개에서 문제가 나왔으며, 모두 그 회차 안에 고치고 테스트를 더한 뒤 다시 확인했습니다. 제 환경 때문에 생긴 문제도 있었습니다. VS Code를 처음 테스트할 때 Parallels가 Mac용 VS Code를 위해 만든 같은 이름의 바로 가기까지 VS Code의 남은 파일로 잡아서, 하마터면 지울 뻔했습니다.

<figure class="blog-diagram">
  <img src="/img/windows/uninstall.webp" width="2584" height="1741" loading="lazy" alt="Mole for Windows의 앱 화면. 설치된 앱과 각각의 크기가 나열됨">
</figure>

기능은 Mac 버전과 거의 같습니다. 정리, 앱(제거와 업데이트), 최적화, 분석, 상태 다섯 화면에 트레이 패널, 화면 켜기 유지, 화면 닦기가 더해집니다. Windows 10 22H2와 Windows 11을 지원하고, x64와 ARM64 모두 네이티브 설치 파일이 있습니다.

## 명령줄 버전도 있습니다

데스크톱 앱 말고도, Mole의 Windows용 명령줄 버전은 올해 초부터 만들어 왔습니다. 처음 요청은 인도의 한 개발자에게서 왔고, 그분이 PR까지 보내 주었습니다. 고맙습니다. 9개월 반 동안 9개 버전을 냈고, 최근 한 달은 집중해서 다듬어 와서 사용법과 사용감이 Mac 명령줄 버전과 거의 같아졌습니다. 무료 오픈 소스라서 명령줄을 좋아한다면 [GitHub](https://github.com/tw93/Mole/tree/windows)에서 바로 쓸 수 있습니다. 데스크톱 앱과의 차이는 [이 글](/ko/windows/blog/mole-cli-vs-windows-app)에 정리해 두었습니다.

<figure class="blog-diagram">
  <img src="/img/windows/cli-menu.webp" width="1814" height="741" loading="lazy" alt="PowerShell에서 연 Mole CLI for Windows 메인 메뉴. 정리, 제거, 최적화, 분석, 상태가 나열됨">
</figure>

데스크톱 앱의 다운로드와 가격은 [mole.fit/windows](/windows)에 있고, 모든 기능을 구매 전에 두 번씩 무료로 써 볼 수 있습니다. Windows PC가 있다면 한번 써 보세요.


Canonical: https://mole.fit/ko/windows/blog/building-mole-for-windows-on-a-mac
