이 글은 MiniMacro 시리즈의 5번째 기록입니다. (총 5개)

오늘 한 일

  • PyInstaller(파이썬 코드와 실행기를 통째로 한 파일에 싸는 도구)로 파이썬 없이 도는 하나짜리 실행 파일로 묶고 바탕화면에 바로가기를 걸었다 (약 31MB)
    • 이유: 쓸 때마다 파이썬을 거치는 게 번거로웠다
  • 저장소를 공개할지 따져 보고 비공개 유지로 정했다. 배포도 하지 않고 내 PC에만 둔다
    • 이유: 화면 전체의 입력을 읽고 쓰는 도구라 받는 쪽에서 안전한지 확인할 방법이 마땅치 않다. 그 부담을 지우면서까지 남에게 건넬 이유가 없었다
  • 별도 릴리스 저장소를 만들지도 함께 따졌다가 접었다
    • 이유: 배포를 안 하기로 했으니 필요가 없어졌다. 나중에 남에게 줄 일이 생기면 그때 공개 전환부터 정하기로 하고 조건만 적어 뒀다
  • 작업 지침 문서를 저장소 추적에서 뺐다. 파일은 그대로 두고 기록에만 안 올라가게 했다
  • README를 밖에서 읽을 사람 기준으로 고쳤다 — 필요한 것(윈도우·파이썬), 실행 파일로 묶는 법, 그리고 이 도구가 하는 일과 안 하는 일
    • 이유: 백신 경고가 날 수 있는 종류라, 네트워크 호출이 없고 건드리는 파일이 둘뿐이라는 걸 확인할 자리가 있어야 한다
  • 편집 줄을 아이콘 버튼으로 바꾸려던 것은 안 하기로 했다
    • 이유: 짧은 글자가 그림보다 직접적이라 지금이 더 낫다. 미뤄 둘 일이 아니라 접는 일이어서 다음에 할 일에서도 뺐다

막힌 부분

  • 고친 코드를 다시 묶으려니 권한 오류로 실패했다
    • 원인: 앞서 띄워 둔 실행 파일이 아직 돌고 있어 파일을 물고 있었다
    • 해결: 남은 프로세스를 정리하고 다시 묶었다. 앱을 닫고 묶는 것을 지침에 규칙으로 넣었다

실행 파일이 창을 안 띄우는 줄 알았다

묶은 파일을 실행하니 프로세스는 30초 넘게 살아 있는데 창이 안 보였다. 오류도 없었다. 창 없이 도는 모양이라 코드가 묶이는 과정에서 깨졌다고 봤다.

확인이 어려웠던 건 두 가지가 겹쳐서다. 창 모드로 묶으면 오류가 어디에도 안 나오고, 프로세스 정보로 물어본 창 핸들이 0으로 나왔다.

그래서 단계마다 파일에 찍는 진단본과 콘솔이 붙은 판을 따로 묶어 돌렸다. 결과는 전부 통과였다 — 창을 만드는 것도, 화면을 그리는 것도, 이벤트 루프를 도는 것도 정상이었다.

  • 원인: 창은 처음부터 정상으로 떠 있었다. 전체화면으로 켜 둔 브라우저 뒤에 열려서 안 보였을 뿐이고, 창 핸들이 0으로 나온 건 조회 쪽 문제였다. 창 목록을 뽑아 보니 제목·좌표·크기가 다 멀쩡했다
  • 남은 것: 같은 착각을 되풀이하지 않게 「창 핸들이 0이어도 창이 없는 게 아니다」를 지침에 적어 뒀다

다음에 할 일

  • 실제 반복 작업에 써 보고 부족한 점 확인

Series: MiniMacro


Suggested Posts