윈도우 제어판의 프로그램 추가/삭제의 항목들은 레지스트리를 통해 제어된다.

 

레지스트리의 기본 위치는 프로그램이 32비트냐 64비트냐에 따라 달라진다.

 

32비트: "HKEY\_LOCAL\_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall"
64비트: "HKEY\_LOCAL\_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall"

자주 사용하는 레지스트리 항목을 정리하면 다음과 같다.

형식 예제 데이터 설명
AuthorizedCDFPrefix SZ http://updates.example.com 소프트웨어 업데이트 채널에 사용되는 URL의 화이트리스트. 만약 "http:"로 적혀있으면 http로 통신하는 모든 호스트라는 의미가 된다. 대부분 비어있음.
Comment SZ Caution. Removing this product might prevent some applications from running. 프로그램 설명
Contact SZ NVIDIA Corporation 연락할 회사명
DisplayIcon SZ   아이콘 파일 경로. 실행파일경로(+리소스인덱스) 또는 ico 파일 경로.
DisplayVersion SZ "10.1.17763.132" SemVer 문자열
HelpLink SZ   도움말 URL
InstallDate SZ(%YYYYMMDD%) "20200930" 프로그램이 설치/패치된 날짜.
InstallLocation SZ E:\\games\\Steam\\steamapps\\common\\City of Heroes 프로그램이 설치된 기본 디렉터리. 디렉터리 구분자는 \\
InstallSource SZ   설치본 경로. CD로 설치하지 않으니 쓸 일이 거의 없음.
Language DWORD LangId 00(중립), 0x409(영어), 0x412(한국어)
docs.microsoft.com/en-us/windows/win32/intl/language-identifiers 참고
ModifyPath SZ   설치 수정 프로그램 경로
NoModify=0 DWORD 1 제어판 선택시 '복구, 수정, 삭제'를 표시할지 여부. 1이면 표시안함
NoRemove=0 DWORD 1 "
NoRepair=0 DWORD 1 "
Publisher SZ   개발사.URLInfoAbout의 텍스트
QuietUninstallString SZ   그냥 삭제시키는 프로그램 경로
Readme SZ   Readme 파일 경로.
UrlInfoAbout SZ    
UrlUpdateInfo SZ    
Version DWORD(0xMMmmBBBB)   MSI 에서 사용되는 version string. Major.minor.build
WindowsInstaller DWORD   MSI인지 아닌지를 나타내는 불린 값. 1이면 MSI

 

Inno Setup을 이용하여 설치프로그램을 만들었으면 "Inno Setup"이라는 접두어를 가진 필드를 생성한다. 예를 들어 프로그램 옵션은 "Inno Setup CodeFile: Bash Terminal Option", 기본 Inno Setup 옵션은 "Inno Setup: User"으로 생성한다.

 

MementoSection_ 접두어를 사용하는 경우도 있는데, 이는 확장자 연결 프로그램을 롤백할 때 사용하기 위한 것이다.

 

EstimatedSizesms(DWORD) KB 단위로 프로그램의 전체 용량을 기록하는데, Win7+에서는 아무데서도 사용되지 않는다.

HelpTelephone(SZ)은 전화번호이지만, 요즘 세상에 고객응대를 전화로 하는 곳이 있을까.

 


눈큰아이입니다.

소프트웨어를 개발하다보면 최종적으로 빌드라는 과정을 거친후 실행모듈들이 나오게 되고,
이러한 실행모듈들이 정상적으로 동작할 수 있도록 부가 파일들을 묶어서 설치함으로써 사용자는 소프트웨어의 가치를 누리게 됩니다.

결국 소프트웨어의 가치는 존재하는 것이 아니라 설치해서 사용해야 하는 것이지요.
특히 설치과정과 관련하여 늘 언급되는 것은 바로 "사용자에게 첫경험은 바로 설치 UI라는 점"이죠. 그만큼 첫인상을 심는 가장 중요한 요소중의 하나이기도 하지요.

국내에서도 개발측면의 빌드 자동화는 많이 논의되는데, 패키징(배포) 자동화는 아직 논의가 별로 없는것 같습니다. 정확히 말하자면 아직까지는 중요성에 대한 인식이 낮고, 이슈화가 안되는 것이죠.

그런데 개발현실을 살펴보면 국내 대다수 소프트웨어들이 인스톨쉴드라는 특정 제품으로 패키징이 되는데, 이 프로그램의 가격이 생각보다는 좀 비싼(개발자 PC에 모두 설치하기엔 비싸다는 의미임) 이 상용프로그램을 아무곳에나 설치할 수 없기 때문에 빌드 담당자와 패키징 담당자가 분리되게 되고, 여기에서 릴리즈 준비를 하면서 병목이 발생하게 됩니다.

또한 QA팀이 존재할 경우(저희회사에는 전문적인 QA팀이 있지요.), 실행가능성이 아니라, 사용자의 입장에서 테스트를 진행해야 하므로 설치과정에서 시작하는데...패키징작업을 개발자들이 통합할 수 있어야 속도나 여러가지 측면에서 편리해지겠더군요.

그래서 가격이 저렴하거나 공짜인 오픈소스 진영에서 개발한 패키징 도구를 찾아본 적이 있습니다. 결국 세개를 찾았는데요. 이를 공유해 볼까 합니다.


만약 윈도우 버전만 존재한다라고 하면 MS의 WiX(Windows Installer XML)을 고려해봄직 합니다.
Wix는 마이크로소프트사에서 오픈소스로 개발하는 패키징 소프트웨어입니다.
XML로 작성한 규칙에 따라 MSI파일이 생성됩니다.
사실 문서들에서는 간단한 XML로 패키징이 이루어진다고는 하지만, 글쎄요..조금 공부는 필요합니다.



간단하게 만들고 싶다면 NSIS도 괜찮습니다.
WinAmp를 만든 널소프트에서 개발한 인스톨러입니다.
간단한 스크립트와 INI파일을 통해 단일설치파일을 만들 수 있습니다.
GUI와 CUI를 모두 지원하기 때문에 편리하구요. 다른 의존성이 없습니다.
개발스크립트는 이클립스를 IDE로 사용하여 개발이 가능합니다.






룩앤필이 인스톨쉴드와 유사하죠?  곰플레이어도 이걸 쓰는것 같더군요.



그리고 마지막으로 우연찮게 알게된 패키징 소프트웨어.
IZPACK. 이지팩은 자바로 동작하며 JRE가 필요합니다.
장점은...아무래도 자바로 개발된 솔루션 패키징에 적합할 것 같고,
자바의 특성을 이어받은 관계로 크로스플랫폼을 지원합니다.
즉, 윈도우나 리눅스 등에서도 동일한 룩앤필을 가지는 인스톨러를 만들 수 있습니다.

IzPack / X Windows

깔끔하죠?



눈큰아이는 IZPACK을 제외하고 WIX와 NSIS를 사용해 보았는데요.
아무래도 NSIS가 편한 느낌을 주더군요. 제가 예전에 사용하던 방식과 유사해서 그런 느낌을 받았을 수 있어요.
한번씩 사용들 해보시고...도움이 되는 정보였으면 좋겠군요 :)

  1. Favicon of http://6feetsong.tistory.com 하얀사자 2008.04.11 18:44

    NSIS쓰면서 깝깝했는데, 좋은 정보 얻었습니다.
    지금 WIX설치중입니다. ^^

+ Recent posts