scoop으로 앱을 여럿 깔았는데 그중 몇 개는 우클릭 메뉴가 안 나왔다. 설치가 덜 됐나 싶어 재설치하려다 멈추고 ~\scoop\apps\git\current를 먼저 열어 봤다.
Table of contents
Open Table of contents
앱 디렉터리의 등록 파일
디렉터리에 통합용 .reg 파일이 그대로 들어 있었다. install-context.reg로 우클릭 메뉴를 넣는 것과 uninstall-context.reg로 빼는 것과 install-file-associations.reg로 파일 연결을 거는 것 세 종류였다.
이 파일들을 reg import로 반영해야 통합이 걸리는 것이고 설치 시점에 자동으로 되는 것이 아니었다. 파일이 이미 있으니 재설치로 얻을 것은 없었다.
원인 — 자동이 아닌 이유
scoop의 철학이 시스템을 안 건드리는 것이라 앱을 apps\<이름>\current에 풀고 shims로 경로만 잡는다. 레지스트리 수정은 시스템 변경에 해당하므로 사용자가 원할 때만 하게 남겨 둔 것이다. 매니페스트의 Notes 가 이 앱의 공식 문서인데 거기에도 우클릭 메뉴와 파일 연결은 그 .reg 파일을 직접 실행하라고 적혀 있다.
설계로는 합리적인데 그 사실을 모르면 설치가 안 됐다고 오해하게 된다. 반영에 관리자 권한이 필요한지도 확인했는데 파일 내용이 전부 HKEY_CURRENT_USER 아래라 필요 없었다. 전역 설치가 아니라 사용자 설치이기 때문이다.
판단 기준 — 통합의 분리
파일을 전부 반영하려다 하나를 열어 보고 멈췄다. 파일 연결을 거는 쪽이 .sh를 sh_auto_file로 등록해 더블클릭하면 git-bash.exe로 실행되게 만드는 내용이었다.
나는 그 확장자를 편집 대상으로 다루므로 더블클릭하면 편집기가 열려야 한다. 두 가지 방법이 있었는데 같은 앱의 .reg 둘을 다 반영하는 것과 우클릭 메뉴 쪽 하나만 반영하는 것이다. 뒤쪽을 골랐다. 이유는 우클릭 메뉴는 원하고 파일 연결은 원하지 않아서다. 대신 .sh를 더블클릭으로 실행하지 못하는 불편을 감수했다. 통합이라고 뭉뚱그리지 않고 각각이 무엇을 하는지 읽고 정하는 것이 필요했다.
검증 — 전수 점검과 실제 적용 확인
어느 앱에 통합이 있고 없는지를 Get-ChildItem ~\scoop\apps\*\current\*.reg로 한 번에 훑었더니 깐 앱 열 개 남짓 중 통합 파일을 가진 것은 몇 개뿐이었다. 나머지는 애초에 통합을 제공하지 않으므로 우클릭 메뉴가 안 나오는 것이 정상이다.
파일이 있다고 적용된 것은 아니어서 실제 레지스트리 키가 생겼는지도 reg query로 따로 확인했다. 그 몇 개 중 미적용은 하나로 확정됐다. 파일 유무가 제공 안 함과 미적용을 가르고 키 존재가 미적용과 적용됨을 가른다.
재설치가 답이 아닌 이유
처음에 재설치하려던 것이 왜 틀렸는지가 이 조사의 요지다. 재설치해도 등록 파일은 여전히 반영되지 않는데 그것이 설치 단계의 일이 아니기 때문이다.
몇 번 재설치하고 왜 안 되는지 모른 채 다른 앱을 찾게 되는 흐름이 흔하다. 증상의 원인이 그다음 단계에 있으면 앞 단계를 아무리 반복해도 상태가 안 바뀐다.
정리
- 패키지 관리자 설치와 셸 통합은 별개 단계다
- 앱 디렉터리의
.reg파일을reg import로 수동 반영해야 통합이 걸린다 - 사용자 설치의 통합은
HKEY_CURRENT_USER아래라 관리자 권한이 불필요하다 - 우클릭 메뉴와 파일 연결을 분리해 판단한다
- 파일 유무로 제공 안 함과 미적용이 갈린다
- 파일이 있다고 적용된 것이 아니라
reg query로 실제 키를 확인한다 - 재설치는 답이 아니다
- 원인이 그다음 단계에 있으면 앞 단계를 반복해도 안 된다