제목 그대로, 델파이와 C++빌더의 2007 이상 버전은 버전과 역순으로 설치하는 것은 위험하므로 주의를 요합니다. 즉, 델파이 XE3를 설치한 후 2007 버전을 설치한다든지 하는 걸 말하는데요. 일반적으로는 아주 오래된 버전들(7 이하)의 경우는 역순으로 설치하더라도 문제가 없었는데, 2007 이상의 버전에서는 문제가 되더군요.
제 개발머신인 서버에는 이전에 델파이 7과 RAD 스튜디오 XE, XE2, XE3 버전이 설치되어 있는 상태였는데요. 현재 개발 작업 대부분은 XE 버전을 쓰고 있고, 일부 XE2 버전을 쓰고 있습니다.
며칠전 볼랜드포럼 게시판을 약간 수정할 일이 있어 2007 버전으로 빌드하려고 RAD 스튜디오 2007 버전을 추가로 설치했습니다. 그 후부터 XE와 XE2 버전에서 디버그할 때마다 IDE가 갑자기 이상종료하는 현상들이 줄줄이 발생했습니다. 일정한 패턴이 있는 것은 아니고, 브레이크포인트로부터 트레이스를 하다가 갑자기 오류로 종료되었다는 에러 메시지가 나오고 IDE가 쌱 사라져버립니다. 이게 보통 디버깅 시작부터 5~10초 사이에 일어나니, 도저히 작업 자체가 불가능한 상태였죠.
이런 IDE의 에러 및 종료 현상은 제가 컴포넌트 개발 때에 여러번 겪었던 일이라서, 마침 요즘도 복잡한 컴포넌트 프레임워크를 개발중인 상태라 제가 뭔가 잘못 건드렸나 싶어서 한참 뒤졌습니다. 델파이나 C++빌더에서 컴포넌트는 런타임 뿐만 아니라 델파이 IDE 자체에도 플러그인되기 때문에, 사소한 코딩 실수로 IDE에 문제가 생기는 일이 흔히 있을 수 있습니다.
그래서 어제 하루 내내 제가 최근에 수정한 코드를 뒤졌습니다만 단서가 발견되지 않아 난감한 상태였는데요. 오늘 오전에 문득 든 생각이, 며칠전에 설치한 RAD 스튜디오 2007 때문이 아닌가 싶었습니다. 그래서 이벤트 뷰어를 뒤져봤더니 mscorwks.dll에서 오류가 발생되었다는 메시지가 남아있더군요. 이건 닷넷의 구성 파일입니다.
그러니까, RAD 스튜디오 XE/XE2/XE3 버전이 설치된 상태에서 이전 버전인 2007을 설치하면서 닷넷 2.0 관련 파일들이 엉키거나 깨진 것이었습니다. 델파이, C++빌더는 닷넷 개발툴이 아닌 네이티브 개발툴입니다만, 닷넷 개발 기능이 추가되었던 델파이 8, 2005 버전부터 IDE의 일부 플러그인 기능들이 닷넷으로 개발되어 들어갔습니다.
이후 델파이 2007 버전부터는 닷넷 개발 기능이 제외되었습니다만, 이전에 닷넷으로 개발되었던 기능들은 여전히 그대로 닷넷 기반으로 되어 있습니다. (RAD 스튜디오 IDE의 닷넷 기반 기능으로는 모델링, 오디트/메트릭스, 리팩토링 등이 있습니다.)
결국 시스템에서 닷넷을 날리고 새로 설치하는 작업을 시작했는데요. 오전부터 몇시간에 걸쳐 이 닷넷 2.0과 상위 버전의 닷넷들을 수작업을 동원해 개발 머신에서 싹 날리고 닷넷 2.0을 새로 깔았습니다. (닷넷 3.0~4.5는 RAD 스튜디오와 무관하고 딱히 해당 버전의 닷넷 기반 애플리케이션을 쓰지 않는 이상 설치할 필요가 없죠) 그러고 나서야 델파이가 정상 동작하게 되었습니다.
이런 문제는 델파이나 C++빌더의 2006 버전 이하에서는 생기지 않습니다. 일단 델파이 7 버전까지는 닷넷을 전혀 사용하지 않고, 8, 2005, 2006 버전에서는 닷넷 1.1을 사용하기 때문에 이후 버전에서 사용하는 2.0과 충돌하지 않습니다. 그리고 2007 이후 버전에서는 모두 닷넷 2.0을 사용하죠.
이게 상위 버전이 설치된 상태에서 하위 버전을 설치할 때 반드시 발생하지 않을 수도 있습니다. 하지만 이 닷넷 관련 파일들은 오늘 제가 겪었듯이 임의로 제거하거나 다시 설치하기가 아주 까다롭기 때문에, 어쩌면 전체 포맷후 시스템 재설치가 더 빠를 수도 있습니다. 개발자들의 개발환경 재설정은 길면 며칠씩이나 걸릴 수 있는 대작업이기 때문에, 개발자에게 바쁜 작업 스케줄 중에 시스템 재설치는 아주 악몽같은 일이죠.
사족입니다만, 개인적으로 델파이 8과 2005 버전부터 하나 둘씩 닷넷 기반 기능들이 델파이와 C++빌더에 추가되는 것이 못마땅했었습니다. 바로 이런 식으로 델파이 IDE가 시스템의 닷넷 설치 환경에 영향을 받는 일이 우려되어서였죠. 델파이 2007 버전에서 닷넷 개발을 제거할 때 닷넷으로 개발된 플러그인들도 네이티브로 재개발했었어야 했는데요. 새로운 기능들 추가에도 허덕이고 있는 엠바카데로가 이런 기능들을 네이티브로 재개발하는 건 이제 완전히 물건너간 일이 아닌가 싶습니다.