본문 바로가기

끄적끄적.

마구잡이식 설치프로그램에 관하여..


요즘 한창 포터블 프로그램 이라던지 무설치 프로그램이라던지 계속 이슈가 되고 있다..


필자는 본격적인 윈도우시대가 열리면서 처음에는 윈도우라는 OS에 매우 적응을 못했다..

 

이전 도스 환경에서 대개의 프로그램은 셋업 이라는 과정이 거의 필요없는 프로그램들이 많이 있었다.
(물론 설치라는것을 통해 정품인증하려고 했던 프로그램도 다수 있었지만)

 

설치과정이 있다해도 단순히 자동으로 압축풀어주는 역할로 설치과정이 투명하고 대게 Copy And Run 이라는 것이 가능했다.

윈도우 3.1 일때도 덩치큰 유명 어플리케이션을 제외하면 통신에서 내려받은 프로그램의 대다수가 압축해제, 실행 이었다.

그러나 윈도우95시대로 넘어오면서 본격적으로 멀티태스킹을 지원하면서 소프트웨어 개발사들은
설치프로그램이라는 것을 마구잡이로 도입한듯하다.

 

보통 설치가 필요한 환경이라는것은 어떤것이 있을까...
ㅇ 공용라이브러리를 사용하는경우 설치될 컴퓨터에 공용라이브러리가 없다면 애써 만든 프로그램이 무용지물이 될것이다.
  가령 예를 들자면 닷넷 프레임워크에서 돌아가는 프로그램이 있다고 하자.
  닷넷 프레임워크가 설치되어 있지 않은 컴퓨터에서 오작동하리라는 것은 불보듯 뻔하다.

 

ㅇ 설치과정을 이용해서 프로그램의 구조를 숨기려고 하는 목적에 이용한다.
  보통 소프트웨어가 쉽게 복제, 유통되는 것을 방지하고자 시스템 환경에다가 설치라는 과정을 통해 여기저기 흔적을 남겨놓고
  실제 프로그램이 실행될때 그 흔적을 점검해서 이상이 없으면 돌아가고 그렇지 않으면 안돌아가게끔 만드는 것이다.

 

ㅇ 특정 환경이 필요한 경우
  시스템의 특수한 설정이나 상태가 해당 프로그램의 실행에 영향을 끼친다면 이를 위해 사전 준비된 소스코드(인스톨러)를
  실행하기위해서 이다. 가령 특정 폰트가 시스템에 있어야한다던지, 레지스트리상의 어떤 값이 존재한다던지,
  서비스로 미리 프로세스가 돌아가야한다던지, 등등 여러가지의 사전 준비가 필요한경우가 있다.
  이런경우 이런 작업들은 사용자가 수작업으로 하기에는 너무 어렵거나 불편하기 마련이다.


본인 역시 소프트웨어 개발이라는것으로 먹구 살고 있긴 하지만 설치라는 것은 상당히 불편하고 불합리 하다는 생각이 든다.
가령 같은 소스코드라도 최신의 컴파일러를 사용하여 컴파일한다면 그에 필요한 런타임 라이브러리가 바뀌어야하고
그렇다면 역시 인스톨과정이나 아니면 같은폴더에 해당 런타임을 설치해주어야한다.

 

그전 비베와 델파이를 단순 비교하였을때 델파이의 강점은 exe 하나만 있으면 된다는 것이었다.
물론 요즘엔 비베 런타임인 msvbvmxx.dll 이 윈도XP안에 내장되어 있긴해도
한글버전으로 컴파일한경우 vbxko.dll 을 필요로 하기 때문이다.
최근의 OS에서는 대중적인 런타임을 자체 내장하고 있다.
그렇지만 최신버전 컴파일러의 런타임은 내장되어있지 않기 때문에 개개의 프로그램에서
이 런타임 라이브러리들을 너나 할 것 없이 내장하고 있다. 프로그램의 덩치가 커지는 것이다.
일예로 아주 간단한 비베6의 프로그램은 실제 코드가 몇KB 에 불과하지만 딸려가는 런타임은 1MB 이상이 된다.

 

최신의 컴파일러를 이용한 IDE(Integrated Development Environment)는 그 사용법이 이전버전의 그것보다 편하다.
가령 구구단 프로그램을 하나 만들더라도 최신의 컴파일러를 이용한다면 실제 소스코드의 수십배에 달하는 런타임이 따라 다녀야 한다.
그러나 이전의 컴파일러라면 해당 런타임이 이미 OS에 존재하기 때문에 실제 컴파일된 결과만 있으면 되는것이다.

이런 저런 절차로 필자는 프로그램의 설치를 셋업이라는 과정을 거치는것에 대해 반감을 가지고 있다.
무얼 그리 숨기려드는지 알수가 없기 때문이다.
따라서 각종모니터링 툴등으로 시스템의 변경사항을 일일이 체크하는것또한 보통일이 아닌것이다.

이런것에 둔감한 사용자라면 그냥 설치해서 쓰면된다. 혹시라도 악성코드가 들어간다면 어쩔수 없는 일이겟지만..
광우병 파동을 바라보는 요즘 100%신뢰 VS 100%위험 이라는것처럼 '아'다르고 '어' 다르겟지만 말이다.


보통 GPL쪽의 응용 프로그램은 항상 바이너리와 인스톨러를 동시에 배포하고 바이너리를 사용할경우 무엇무엇을 어떻게 해야하는지
문서가 따라다닌다. 실로 투명하다. 

 

무작정 인스톨만이 대안은 아니라고 생각한다.

 

단지 뽀대(?)를 위해 인스톨러는 없어져야 한다고 주장하고 싶다..


2008년 어느날...