회사 생활을 하다보니,, 가끔씩 회사 내에서 사용하는 스택 이외의 기술을 사용해야할 때가 생겼습니다.
이런 상황에서는 보통 구현가능성에 대한 리서치를 좀 더 꼼꼼히 하는 편인데,
이번에 있었던 개발 건은 예상 범위를 벗어난 순간이 많아 좀 당황스러웠네요,,
짧게 프로젝트 관련 명세 읊고 가겠습니다.
목적 및 목표
- 설치가 필요한 대상 폰트가 "클릭 하나"로 사용자의 PC에 설치되도록 하는 기능
- 직접 폰트를 등록하는 번거로움 없이 "클릭 하나"로 자동 설치되도록
구현 아이디어
- cmd 명령어를 회사가 사용하는 framework의 인터페이스를 이용해서 사용하는 구조이기에
- cmd 실행 파일(.bat)을 직접 작성하고 그것을 cmd 인터페이스로 실행하는 방식
기대 효과
- 좀 더 편리해짐 (딸깍-딸깍-딸깍-딸깍- 딸깍-딸깍 에서 딸깍-딸깍-딸깍 정도,, 😐) 음..
구현 방법론
첫번째 접근법
C:\Windows\Fonts 위치에 폰트 파일을 직접 copy하는 방식
최악의 경우에도 관리자 권한으로 실행해주면 문제없을 거라 생각했으나..
때려 죽여도 안 깔아짐;;
근데 또 마우스 드래그 앤 드롭으로는 설치됨;;
그렇게 죽어라 다른 설치 우회 명령어, 관리자 권한 영역 디렉토리에서 실행 등등 해봤으나
전부 실패해버렸습니다,,
아하.. 이건 OS적 문제구나..
폰트 파일을 특정 위치에 드래그 앤 드롭할 때 나타나는 이벤트를 이용해야겠구나!
라는 생각이 들었고
이윽고 ChatGPT와 뚜다다다.. 여러번의 질문과 답변이 오간 끝에..
ChatGPT는 의미 심장한 명령어를 알려주었습니다..
FONTINST fontinst.inf
..?
이런 내장 명령어가 있다고?
바로 fontinst를 cmd창에 쳐봤는데,,
.
.
.
없다네요~ 애초에 저 fontinst.inf 라는 파일에 어떤 형식으로 명세되어 있는지도 모르겠고 ㅎㅎ,,
그래서.. 구글링을 해보니 10년 가까이 지난 네이버 블로그가 나왔습니다. ㄷㄱㄷㄱ
https://m.blog.naver.com/hide5h2/220005865974
[Windows] Fontinst를 이용한 쉬운 폰트 설치
Fontinst를 이용한 쉬운 폰트 설치 ------------------------------------------------------------------...
blog.naver.com
나와 똑같은 고민을 한 사람이 10년 전에도 있었구나.. (이 회사에서 10년 동안 안 만들고 미루다 내 차례가 왔구나.. 🙊)
두번째 접근법
MS사에서 배포한 VistaFont_KOR.EXE 라는 실행파일에서 또 다른 실행 파일 FONTINST.EXE를 추출하기
👌🏻 추출 후, 명령어 파일.bat이랑 함께 담아서 배포하기
이렇게 말하면 쉬운데요.. 이 놈의 레거시 framework는 여러 차례 손이 가게 하더군요,,
차례차례 알아가보겠습니다.
먼저, 아래 MS 공식 사이트에서 VistaFont_KOR.EXE 파일을 다운 받아 줍니다. (2024.08.11 현재까지 유효함)

https://www.microsoft.com/ko-kr/download/details.aspx?id=10490
이제 이 파일에서,, fontinst.exe 파일을 추출하면 되는데,
아래 명령어를 저 VistaFont_KOR.EXE 파일이 위치한 폴더에 cmd창을 열고 입력해 줍니다.
VistaFont_KOR.EXE /q /c /t:[추출 폴더 위치]
이러면 대상 위치 폴더에 fontinst.exe 파일이 띡 하고 나와요 ㅎㅎ
이 fontinst 명령어는 특정 양식의 파일을 읽어 들이는데, 이걸 좀,, 따라줘야 잘 동작합니다.
폰트 파일들의 확장자는 .ttf인데 (Window11 기준 아마 다른 버전도 똑같을 듯 ㅎㅎ)
대상 폴더 내에 위치한 .ttf 파일들로 .inf 파일 명세를 작성해주는 명령어를 만들어 봤습니다.
echo [fonts] > fontinst.inf
for %%a in (*.ttf) do echo %%a >> fontinst.inf
위에 것은 .bat 파일에 들어갈 .inf 파일 생성 명령어들이네요 🤔
저것으로 fonstinst.inf 파일이 만들어지면 fontinst.exe랑 연계 돼서 아까 보여드린 명령어가 드디어.. 동작을 합니다..!
FONTINST fontinst.inf
평소대로라면 이대로 끝일 텐데,,
아무래도 회사 시스템과 연동이 잘되도록 기타 부대 설정들을 완료해줘야겠죠,,
사실 오류 없이 동작하게 하느라,, 그게 더 오래 걸림;;
그 작업 중 하나가 .bat 파일을 만들어서 이 파일 실행 한 번으로 모든 작업이 다 끝나는 것을 목표로 했습니다,,
(서버에서 파일 다운로드 및 로컬 기기 내 실행은 플랫폼의 함수를 사용)
그렇게 끝끝내 완성했네요 ㅋ

본업무랑 병행하느라 한달 정도.? 잡아 먹은 듯 하네요.. 뭔가 많이 성장한 기분.. (이쯤되면 이건 레거시도 아닌 듯 ㅎㅎ)
마주한 문제들
<문제 1>
.zip 파일 압축 해제
.bat 파일에서 셸 스크립트로 압축파일 푸는 법을 발견했는데 얘네 조건부인지 상황따라 동작도 안함;;
<해결>
아무래도 Powershell 명령어는 .bat 파일에서 한 번만 써야하나 봅니다 ㅎㅎ 👌🏻
;; 아니 그럴리가 없는데, 시간 없어서 대충 인정하고 넘어감;;
<문제 2>
사용자가 관리자 사용자로 접속을 안하면, fontinst 기능이 안먹힘;;
정확히 말하자면, 관리자 권한 실행을 안하면 fontinst.exe는 명령을 걍 씹음;; 근데 그게 맞아 ㅎㅎ
<해결>
그래서 .bat 파일 속성 창에서 관리자 실행을 하고 저장하면 됨 ㅎㅎ
<문제 2-1>
근데 그러면 서버에 넣었다 다운로드 받으면 관리자 권한 실행 설정이 풀려요;;; 뭐죠 ㄹㅇ,,
<해결>
그래서 찾아낸 방법은 .lnk로 .bat 파일에 대한 바로 가기 파일을 만들어 주는 것,,
그리고 .lnk 파일의 속성으로 들어가서 관리자 설정을 해주면 얜 안 풀리더라구요 ㅋ

(솔직히 이거 발견하고 스스로 대견해서 좀 몸이 떨림 ㅋ)
문제 몇 개 더 있긴한데,, 이건 저희 시스템 문제여서 각설하도록 하죠,,
그것도 몇 가지 우회하는 방법으로 해결함 ㅋ
말은 쉽게 했는데,,
처음에 프로젝트 윤곽을 잡을 때의 예상과 다르게 계속 흘려가서,, 고생 좀 했네요,,
진짜 1주일 컷 날 줄 알았는데;; 아니 애초에 기능 이식이 불가능한 줄 알고
완전 조마조마하면서 한달을 보냄 ㅠㅠ
잘 하죠,, 앞으로도 계속,,
.
.
.
감사합니다..
업무에 도움이 되셨길..
'회사생활' 카테고리의 다른 글
[시스템 운영 기록] 하드코딩 최소화를 위한 접근법 (0) | 2025.02.13 |
---|---|
[JavaScript] html2pdf를 사용하면서 겪은 margin 설정 문제 (1) | 2024.08.31 |
[생각 정리] 선물 청산 분류 중 깨달은 것,, (0) | 2024.08.24 |