사실 제가 전에 한번 리눅스용 압축 프로그램을 하나 만들어보려고 했습니다(참고: 리눅스에서 주로 사용되는 닷넷 UI 프레임워크?). 그런데 그건 때려쳤습니다. 왜냐하면 리눅스를 메인으로 쓰는걸 포기했었거든요.
그런데 이번에는 윈도우가 문제네요. 저는 반디집을 쓰는데, 몇 년 전부터 업데이트할 때 마다 계속 광고가 생겨서 짜증납니다. 그렇다면 유료 버전을 쓰기에는 압축 프로그램 하나에 3만원을 쓰는게 조금 아깝습니다.
제가 반디집을 쓰는 이유는 딱 하나, ‘알아서 풀기’ 기능 때문입니다. 최신 윈도우 11에는 파일 탐색기 자체에 많이 사용되는 압축 포맷들을 푸는 기능이 들어갔지만 이 알아서 풀기 기능은 없는 것 같더군요.
그래서 직접 만들기로 했습니다. 압축 파일을 푸는 기능 자체는 SharpCompress라는 훌륭한 라이브러리가 있으니 그걸 쓰고, WinUI 3로 UI를 만드는 거죠. 물론 Bluehill.NativeCom(참고: C#과 닷넷(8+)로 윈도우 셸 확장을 만드는 방법)으로 셸 확장도 같이…
암튼 zip 파일을 푸는 기능과 알아서 풀기 우클릭 메뉴만 구현되어 있는 버전을 완성했습니다. 아직까지는 저 기능들이 답니다. 심지어 압축 파일에 뭐가 들어있는지 보여주는 기능도 없습니다. 하지만 나중에는 더 많은 기능들이 구현되겠죠. 그런데 파일들을 어떤 컨트롤로 보여줘야 할지 모르겠네요.
지금은 문제가 하나 있는데 Unpackaged 방식으로 빌드해야만 작동합니다. Windows App SDK 1.8 Preview 버전을 쓰는데, 여기에 포함된 FilePicker가 Packaged 앱에서 문제가 있는 것 같더군요. 그래서 작동하지를 않습니다. 셸 확장도 Packaged 방식으로만 작동하도록 만들어 놨는데 잘 되는지 모르겠습니다(…)