본문 바로가기

오래된 흔적/Visual Studio.NET

Installer 이야기

요놈 때문에 머리가 무쟈게 아픕니다.. 

울 게임에서 인스톨러의 역할은 별거 없었습니다.. 

1. 폴더 구조대로 유저 피시에 파일을 푼다. 

2. 바탕화면에 바로가기를 설치한다. 

3. 웹에서 게임을 실행하는 방식이라 ActiveX를 사용하고, 이 놈이 참조하는 레지스트리(HKLM, HKCU)에 값을 입력한다.

4. 프로그램 그룹을 등록한다.. (프로그램 메뉴에서 제거하는 것이 목적)

5. 게임에서 PhysX를 사용하기 때문에 NVIDIA PhysX System Software_ver.exe 파일을 자동 설치한다.

이게 다 였습니다.. 

그리하여.. 최초에는 InstallFactory로 작업해서 잘 되었습니다..

XP는 아즈 걍 별 문제 없더군요.. 


Windows Vista와 Windows7이 저의 머리를 아프게 했습니다.. 

새로운 것이 등장했더군요.. 이름하여.. UAC(User Access Control).. 

요놈 때문에 InstallFactory로 만든 압축 해제 파일은 실행이 안 되더군요.. (모르죠.. 업뎃된 놈들이 있는지..)

물론 '관리자 계정으로 실행' 으로 하면 될 수도 있습니다. (테스트를 해 봤는지 안 해 봤는지 지금은 기억이 나질 않네요..)

허나.. 우리의 목적은 더블클릭 만으로 유저가 실행하기를 원했습니다. 

선택할 수 있는 방법은 두가지 였습니다. 

비싼 InstallShield를 사서 쓸 것인가.. 돈 안 드는 MSI(Windows Installer)를 사용할 것인가.. 

당근 돈 안 드는 것을 선택했져.. 

그래서 하나씩 해결해 나가기 시작했습니다.. 

==========================================================================================================

1. 폴더 구조데로 유저 피시에 파일을 푼다. 
=> '파일 시스템' 편집기의 '응용 프로그램 폴더' 안에다 설치되기 원하는 폴더 구조 만들어 주고 드래그 앤 드랍으로 넣으니까 간단하게 마무리

2. 바탕화면에 바로가기를 설치한다. 
=> '파일 시스템' 편집기의 '사용자 바탕 화면'에 바로가기 만들어서 속성의 'Target' 부분에 실행되기 원하는 프로그램 지정하면 끝.

3. 웹에서 게임을 실행하는 방식이라 ActiveX를 사용하고, 이 놈이 참조하는 레지스트리(HKLM, HKCU)에 값을 입력한다.
=> '레지스트리' 편집기에서 Key를 생성하고 그 하위에 필요한 Value들을 만들고 거기에 저장되는 값(속성창의 'Value')을 입력해 주는 방식으로 작성. 
근데, 속성창의 'Value'.. 요게 문제였습니다. 
필요한 것은 '설치된 날짜''설치 경로'.. 요 두개를 시스템으로부터 얻어와서 레지스트리에 입력해야 하는 것이었지요.. 

기본적으로 걍 속성창의 Value부분에 입력하면 입력된 값이 그대로 String으로 저장되는 것을 확인할 수 있었습니다. 

이 문제를 해결하기 위한 솔루션은 Windows Installer가 Install 할 때 사용하는 Global Variables를 활용하는 것입니다. 이것이 이름하여 Properties 입니다. 

사용하는 방식은 [Property] 요런 식이고, 예를 들자면 설치 경로를 구하는 방식은 [TARGETDIR]

좌우지간, 요렇게 해결했습니다. 

4. 프로그램 그룹을 등록한다.. (프로그램 메뉴에서 제거하는 것이 목적)
=> 요건 아직 못 찾아봤구여.. 

5. 게임에서 PhysX를 사용하기 때문에 NVIDIA PhysX System Software_ver.exe 파일을 자동 설치한다.
=> 요것이 현재 골머리를 앓고 있는 가장 큰 문제입니다. 

여러 삽질 끝에.. 현재 알아낸 단어는 MSI Nested Installation이란 단어입니다. 

기본적으로 windows installer는 동시 두개 실행을 막습니다. (Error 1500)

InstallShield는 요 기능을 지원합니다. 직접 사용해 보진 않았지만 관련 레퍼런스(검색어 : Using Msiexec.exe to Launch a Second Windows Installer Setup Nested Installations )가 존재 하더군요.. 


============================================================================================================
유용한 사이트 

* InstallSite : Software and Supprt for Setup Developers
* Windows Installer Error 1500 (주석 : xp에서는 발생하지 않고 vista와 windows7에서만 발생합니다.)
==========================================================================================================

'오래된 흔적 > Visual Studio.NET' 카테고리의 다른 글

_WIN32_WINNT 윈도우 버젼 값  (0) 2009.11.27
Inno Setup  (0) 2009.11.26
Side by Side Assemblies  (0) 2009.10.12
VC++ Debug Option  (0) 2009.09.22
Deployment (C++) - 배포관련  (0) 2009.09.10