소개
MkShim은 Windows 환경에서 실행 파일의 별칭(별명)을 생성하는 간단한 오픈소스 도구입니다. Linux의 심볼릭 링크와 유사한 기능을 제공하여, Chocolatey 패키지 관리자의 ShimGen.exe와 동일한 기능을 독립적으로 사용할 수 있도록 설계되었습니다. 이 도구는 MIT 라이선스로 배포됩니다.
상세정보
MkShim란 무엇인가요?
MkShim은 Windows 시스템에서 실행 파일의 ‘심(shim)’ 또는 별칭을 쉽게 생성하기 위한 커맨드라인 인터페이스(CLI) 도구입니다. Linux에서는 심볼릭 링크를 통해 프로그램의 별칭을 만들기 쉽지만, Windows에서는 실행 파일의 의존성을 잘 처리하지 못하는 한계가 있습니다. Chocolatey 패키지 관리자도 이 문제를 해결하기 위해 자체적인 심 생성 도구(ShimGen.exe)를 제공하지만, Chocolatey가 설치된 시스템에서만 사용할 수 있습니다.
MkShim은Chocolatey와 독립적으로 배포되며, 동일한 심 생성 기능을 MIT 오픈소스 라이선스로 제공합니다. 이를 통해 사용자는 시스템 PATH에 심을 배치하여 명령줄에서 짧은 이름으로 실행 파일을 호출할 수 있습니다.
주요 기능
- 실행 파일 심 생성: 특정 실행 파일을 가리키는 새로운 심(.exe) 파일을 명령줄에서 빠르게 생성할 수 있습니다.
- 기본 인자 지정 (–params): 심을 실행할 때 항상 전달할 기본 매개변수를 미리 설정할 수 있습니다. 예를 들어, 브라우저에 특정 사용자 데이터 디렉토리를 지정하여 실행하는 심을 만들 수 있습니다.
- 환경 변수 지원: 대상 실행 파일 경로에 환경 변수(예:
{env:ProgramFiles})를 사용할 수 있으며, 실행 시점에 자동으로 확장됩니다. - 커스텀 아이콘 적용 (–icon): 심 파일에 특정 아이콘을 포함시켜 시각적으로 구분할 수 있습니다.
- 상대 경로 지원 (–relative): 심 파일의 위치를 기준으로 대상 실행 파일을 상대 경로로 지정할 수 있습니다.
- 실행 유형 제어 (–win, –console): 심이 GUI 애플리케이션으로 실행될지, 콘솔 애플리케이션으로 실행될지 강제로 지정할 수 있습니다.
설치 및 시작하기
MkShim은 단일 실행 파일로 배포되어 설치가 간단합니다.
- 직접 다운로드: GitHub 릴리스 페이지에서 최신 MkShim.exe를 다운로드한 후 원하는 폴더에 넣어 실행하면 됩니다.
- WinGet을 통한 설치: WinGet 패키지 관리자를 사용하여 자동으로 설치 및 업그레이드할 수 있습니다. 다음 명령줄을 사용합니다:
winget install --id=oleg-shilo.mkshim -e
기본 사용법
심을 생성하는 기본 명령 형식은 다음과 같습니다:
mkshim <심_이름> <대상_실행파일> [옵션]
예를 들어, 시스템의 메모장(notepad.exe)을 ‘ntp’라는 짧은 이름으로 실행하는 심을 만들려면 다음과 같이 입력합니다:
mkshim C:ProgramDatachocolateybinntp.exe C:WindowsSystem32notepad.exe
심 생성 후에는 명령줄에서 ntp라고 입력하면 바로 메모장이 실행됩니다.
이런 경우에 유용합니다
- 자주 사용하는 도구의 명령어 축약: 긴 경로나 파일명을 가진 실행 파일을 짧은 명령어로 빠르게 호출하고 싶을 때 유용합니다.
- 기본 매개변수가 포함된 실행 파일 준비: 특정 설정 옵션이 항상 필요한 프로그램(예: 특정 데이터베이스에 연결되는 SQL 관리 도구, 특정 테마로 실행되는 PowerShell 터미널)을 설정 없이 바로 실행할 수 있는 심을 만들 수 있습니다.
- Chocolatey 미설치 환경에서의 심 생성: Chocolatey를 설치하지 않은 시스템에서도 동일한 심 생성 기능을 사용해야 할 때 대안으로 활용할 수 있습니다.
지원 환경
MkShim은 Windows 운영 체제에서 개발 및 테스트되었습니다. C#으로 작성되었으며, 최신 Windows 버전에서 정상 작동하는 것으로 확인됩니다.
제한 사항·확인 사항
- 심 파일은 대상 실행 파일을 별도의 프로세스로 실행합니다.
- 대상 실행 파일의 경로에 리터럴 문자 ‘
}‘가 포함된 경우, 명령줄에서 이를 이스케이프 처리해야 합니다. - 실행 파일의 타입(콘솔/GUI)에 따라 심의 동작 방식이 결정되나,
--win이나--console옵션을 통해 강제로 변경할 수 있습니다.
시스템 요구사항
별도의 시스템 요구사항이 등록되지 않았습니다.


