air application을 프로젝트의 일부로 사용하거나 별도의 설치파일로 설치할 필요가 있을 경우 아래의 방법으로 설치할 수 있습니다.
먼저 release할 때 native installer로 export하거나 .air 파일을 .exe로 변환합니다.
adt -package -target native installer_file air_file
사일런트 모드로 설치합니다.
installer_file -silent -location "\"설치경로\"" -allowDownload
- 실제 설치 위치는 설치경로 하위에 프로그램 디렉토리가 하나 만들어지고 그 위치에 설치됩니다.
- 설치 시점에서 실제 설치 위치(설치경로\프로그램 디렉토리)는 존재하지 않아야 합니다.
- 설치경로에 공백 문자가 있다면 반드시 앞 뒤에 \"을 추가해줘야 합니다.
- -allowDownload는 설치 과정에서 AIR 런타임이 설치될 수 있도록 해줍니다.
- -eulaAccepted를 추가하면 AIR 런타임 설치 과정에서 사용자 라이선스 동의 과정을 생략합니다.
- 일반적인 경우는 라이선스 동의 과정이 필요하기 때문에 옵션을 추가하지 않습니다.
아래 레지스트리 키에 "ParentKeyName"을 REG_SZ로 만들고 별도 설치 프로그램의 Uninstall Key Name을 값으로 넣습니다.
(프로그램 추가/삭제에서 AIR application 기본 삭제 프로그램을 감춥니다.)
Software\Microsoft\Windows\CurrentVersion\Uninstall\[application ID]
제거 과정의 사일런트 모드는 OSID가 필요합니다.
OSID를 얻는 과정은 아래와 같습니다.
- AIR 프로그램을 설치합니다.
- application descriptor xml의 name tag값을 레지스트리의 HKEY_CLASSES_ROOT\Installer\Products에서 검색합니다.
- 검색 결과로 HKEY_CLASSES_ROOT\Installer\Products\[GUID]의 ProductName에 값이 있습니다.
- 검색된 GUID로 HKEY_CLASSES_ROOT\Installer\UpgradeCodes에서 다시 검색합니다.
- 검색 결과로 HKEY_CLASSES_ROOT\Installer\UpgradeCodes[New GUID]에 GUID를 이름으로 하는 값이 있습니다.
- New GUID값을 OSID로 변환 할 수 있습니다.
{D0F23C3F-CA74-460F-9ADB-49CBD57F9688}
- 처음 8문자를 역순으로 변환합니다. F3C32F0D
- 다음 4문자를 역순으로 변환합니다. 47AC
- 다음 4문자를 역순으로 변환합니다. F064
- 다음 2문자를 역순으로 변환합니다. A9
- 다음 2문자를 역순으로 변환합니다. BD
- 다음 2문자를 역순으로 변환합니다. 94
- 다음 2문자를 역순으로 변환합니다. BC
- 다음 2문자를 역순으로 변환합니다. 5D
- 다음 2문자를 역순으로 변환합니다. F7
- 다음 2문자를 역순으로 변환합니다. 69
- 다음 2문자를 역순으로 변환합니다. 88
-> {F3C32F0D-47AC-F064-A9BD-94BC5DF76988}
MsiEnumRelatedProducts(OSID, 0, 0, [product code guid])를 호출합니다.
반환된 product code guid로 MsiExec /q /x [product code guid]를 호출하면 사일런트 모드로 AIR application을 제거할 수 있습니다.
[참고]
http://help.adobe.com/ko_KR/air/build/WS789ea67d3e73a8b22388411123785d839c-8000.html
http://help.adobe.com/en_US/air/redist/WS485a42d56cd19641-70d979a8124ef20a34b-8000.html
http://groups.google.com/group/air-tight/browse_thread/thread/a1555ae15c8d40d3
'개발' 카테고리의 다른 글
Adobe Alchemy 컴파일 환경 설정하기 (0) | 2012.05.03 |
---|---|
Qt 네트워크 프로그래밍 팁 (0) | 2011.06.11 |
Adobe AIR 2의 새로운 기능 (0) | 2010.07.08 |
goto 대신에 do { ... } while (false)를 사용한 에러처리 (0) | 2010.03.25 |
Windows Phone 7 SDK 공개 (0) | 2010.03.19 |
댓글