KR101143027B1 - 자기 기술적 소프트웨어 이미지 업데이트 컴포넌트 - Google Patents

자기 기술적 소프트웨어 이미지 업데이트 컴포넌트 Download PDF

Info

Publication number
KR101143027B1
KR101143027B1 KR1020040107318A KR20040107318A KR101143027B1 KR 101143027 B1 KR101143027 B1 KR 101143027B1 KR 1020040107318 A KR1020040107318 A KR 1020040107318A KR 20040107318 A KR20040107318 A KR 20040107318A KR 101143027 B1 KR101143027 B1 KR 101143027B1
Authority
KR
South Korea
Prior art keywords
package
files
file
information
manifest
Prior art date
Application number
KR1020040107318A
Other languages
English (en)
Other versions
KR20050061380A (ko
Inventor
크로스브라이언
글럼제프리
맥닐로나
마클리마이클
셸스콧
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20050061380A publication Critical patent/KR20050061380A/ko
Application granted granted Critical
Publication of KR101143027B1 publication Critical patent/KR101143027B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates

Abstract

업데이트들을 포함하는 소프트웨어 이미지들이 패키지들로서 제공되는 시스템 및 방법이 기술되어 있다. 패키지는 자기 기술적(self-describing)이어서, 이미지의 컴포넌트 부분들만의 대체를 용이하게 한다. 소프트웨어 구성 처리는 (파일들, 메타데이터, 구성 정보 등을 포함하는) 운영 체제 특징들을 패키지들에 매핑하고, 재배치를 위하여 실행 가능 코드가 처리된다. 최종 패키지는 패키지를 기술하고 종속성 정보(dependency information) 및 세팅의 우선 순위(the priority of settings)에 관한 정보(섀도우 데이터)를 전달하는 디바이스 매니페스트 파일을 포함한다.
자기 기술적, 패키지 종속성, 섀도우 데이터, 디바이스 매니페스트 파일, 구성 매니페스트 파일

Description

자기 기술적 소프트웨어 이미지 업데이트 컴포넌트{SELF-DESCRIBING SOFTWARE IMAGE UPDATE COMPONENTS}
도 1은 본 발명이 병합될 수 있는 컴퓨터 시스템을 일반적으로 나타내는 블럭도이다.
도 2는 본 발명의 일 양태에 따라 자기 기술적 업데이트 패키지들을 구성하는 다양한 컴포넌트들을 나타내는 블럭도이다.
도 3은 본 발명의 일 양태에 따라 이진 이미지 파일로부터 구성 매니페스트 파일(build manifest file)을 생성하는 로직을 나타내는 흐름도이다.
도 4는 본 발명의 일 양태에 따라 등록 세팅으로부터 등록 세팅 관련 파일을 생성하는 로직을 나타내는 흐름도이다.
도 5는 본 발명의 일 양태에 따라 데이터를 XML-포맷 파일로부터 패키지로 기록하는 XML-포맷 파일을 처리하는 로직을 나타내는 흐름도이다.
도 6은 본 발명의 일 양태에 따라 패키지를 생성하는 로직을 나타내는 흐름도이다.
도 7a 및 도 7b는 본 발명의 일 양태에 따라 패키지를 설명하는 디바이스 매니페스트 파일을 생성하는 로직을 나타내는 흐름도를 포함한다.
도 8은 본 발명의 일 양태에 따라 실행가능 파일들에 대한 재배치 정보를 삽 입하는 툴(relmerge)에 의해 수행되는 로직을 나타내는 흐름도이다.
도 9는 본 발명의 일 양태에 따라 패키지를 설명하는 디바이스 매니페스트 파일의 포맷을 나타내는 블럭도이다.
도 10a 및 도 10b는 본 발명의 일 양태에 따라 패키지를 설명하는 디바이스 매니페스트 파일을 구성하는 흐름도들을 포함한다; 및
도 11은 본 발명의 일 양태에 따라 패키지의 생성을 나타내는 흐름도이다.
본 발명은 그 전체 내용이 본 명세서에 병합되는, 2003년 12월 16일에 출원된 미국 가출원 번호 60/530,129의 우선권을 청구한다.
본 발명은 함께 동시에 출원되고 그것들의 전체 내용들이 본 명세서에 병합되는 다음의 미국 특허 출원서들에 관한 것이다:
등록 번호 4271/307,649 "안전장치의 방식으로 맞춤 소프트웨어 이미지 업데이트의 비휘발성 저장장치로의 적용"
등록 번호 4281/307,650 "설치를 위해 유효한 의존적 소프트웨어 업데이트의 최대 집합의 결정"
등록 번호 4291/307,651 "소프트웨어 업데이트가 특정 디바이스 또는 디바이스들의 클래스만에 설치 또는 실행되도록 보장"
등록 번호 4311/307,663 "저장 기술 추상 방식으로 파일 내에 파일 시스템들 의 생성"
본 발명은 일반적으로 컴퓨팅 디바이스들에 관한 것이고, 더 구체적으로, 컴퓨팅 디바이스들의 비휘발성 저장장치를 업데이트하는 것에 관한 것이다.
PDA들, 현대의 휴대폰들, 및 핸드핼드와 포켓 크기 컴퓨터들과 같은 휴대형 컴퓨팅 디바이스들은 중요하고 인기 있는 사용자 툴들이 되고 있다. 일반적으로, 더 적은 전지력(battery power)을 소비하면서 그들은 충분히 소형화되어 매우 편리해지고 동시에 더 강력한 응용 프로그램들을 실행시킬 수 있다.
그런 디바이스들을 제조하는 처리 동안, 임베딩된 운영 체제 이미지들은 통상적으로 단일 이미지 파일로 구성되고, 각각의 디바이스의 비휘발성 저장장치(예를 들어, NAND 또는 NOR 플래쉬 메모리, 하드 디스크 등)에 저장된다. 결과적으로, 그런 디바이스의 업데이트는 때때로 필요하거나 바람직하다.
그러나, 단일 운영 체제는, 업데이트를 설치하기 위해 다량의 자원들(예를 들어, 임시 저장장치 및 대역폭)이 전체 단일 이미지를 대체하기 위해 필요한 점을 포함하여 다수의 단점들이 있다. 동시에, 운영 체제의 일부 부분집합 컴포넌트들의 설치는 다양한 이유들로 어려운 작업이다. 필요한 것은 운영 체제 이미지의 일부 부분집합의 업데이트를 용이하게 하는 메커니즘들이다.
간략하게, 본 발명은 설치 및 업데이트 패키지들을 제공하는 시스템 및 방법에 관한 것이고, 각각의 패키지는 설치 목적으로 동일하게 취급되는 일단의 파일들의 캡슐화를 포함하고, 패키지의 포맷은 자기 기술적이고, 단지 이미지의 컴포넌 트 부분들의 대체만을 용이하게 한다. 이 목적을 위해, 시스템 및 방법은 운영 체제 특징들을(파일들, 메타데이터, 구성 정보 등을 포함함) 소프트웨어 구성 처리의 일부로서 패키지들로 매핑한다.
일 구현에서, 패키징 로직은, 사용자가 상이한 패키지들로 매핑하기 위해 선택하는, 특정 파일들 및/또는 세팅들이 관련된 특징들 간에 공유되는 경우들을 핸들링한다. 일반적으로 로직은, 주어진 다수의 가능한 높은 수준의 패키지 매핑 요구들에서, 개별 파일들/세팅들이 정확한 패키지에 매핑됨을 보장한다. 게다가, 패키지들은 종속성 정보를 선택적으로 전달하므로 패키지들이 종속성 정보를 획득하는 메커니즘이 제공된다(특징 수준의 종속성 명시를 통해). 로직은 특징 수준 아래의 마찰 및 종속성을 해결한다.
구성 처리 동안, 구성 매니페스트 파일은 입력으로서 운영 체제 이미지와 컴포넌트에 대한 이진 이미지 구성자 파일을 패키지 매핑 파일로 가져가서 생성된다. 구성 매니페스트 파일은 특정 패키지에 대한 파일 내용을 명시한다. 이들 파일 내용은 재고찰되고, 임의의 실행가능 코드는 패키지에 삽입하기 전에 처리되어 설치 때에 디바이스에 실행 코드 재배치/픽스-업(fix-up)를 가능하게 한다. 패키지 생성 처리는 구성 매니페스트 및 패키지 정의 파일의 정보에 기초하여 디바이스 매니페스트를 생성한다.
운영 체제 이미지에 대한 등록은 분리되어, 유사 알고리즘에 기초하여 패키지들에 할당되고, XML 파일들은 유사하게 분리되고 특정 패키지들에 할당될 수 있다. 결과는 패키지 정의 파일, 컴포넌트 매핑 파일, 컴포넌트 관계 파일, 구성 매 니페스트 파일, 등록 파일 및 XML 세팅 파일, 을 포함하여 구성될 수 있는 각각의 패키지에 대한 다수의 파일들이다. 이들 파일들로부터, 패키지 생성 처리는, 각각의 패키지를 패키지 정의로 매핑하는 것, 그 패키지에 대한 구성 매니페스트 파일을 읽는 것, 및 그 데이터로부터 패키지를 생성하는 것을 포함하여, 패키지들로부터 패키지 콜렉션을 생성하여 최종 패키지 파일을 구성한다.
자기 기술적인 패키지에 대해, 디바이스 매니페스트 파일은 패키징 처리 동안 생성되고, 패키지 자체에 저장된다. 디바이스 매니페스트 파일은 설치 처리 동안 사용된다. 패키지 종속성 및 섀도우(shadow)(패키지 세팅 우선 순위) 데이터는 또한, 예를 들어, 그것을 디바이스 매니페스트 파일에 기록하여, 패키지에 동반하는 데이터의 일부이다.
다른 장점들은 아래 도면들과 연결된 다음의 상세 설명으로부터 명백해질 것이다.
<운영 환경의 예>
도 1은 처리기(122), 메모리(124), 디스플레이(126), 및 키보드(128)(물리적이거나 가상적인 키보드일 수 있고, 또는 둘 다를 나타낼 수도 있음)를 포함하는 한 개의 핸드핼드 컴퓨팅 디바이스(120)의 기능적 컴포넌트들을 도시한다. 마이크로폰(129)은 오디오 입력을 수신하기 위해 존재할 수 있다. 메모리(124)는 일반적으로 휘발성 메모리(예를 들어, RAM) 및 비휘발성 메모리(예를 들어, ROM, PCMCIA 카드들 등)를 모두 포함한다. 마이크로소프트사의 Windows® 운영 체제 또는 다른 운영 체제와 같은 운영 체제(130)는 메모리(124)에 상주하고, 처리기(122)에서 실행한다.
한 개 이상의 응용 프로그램들(132)은 메모리(124)에 로드되고(또는 ROM에서 제자리에서 실행됨), 운영 체제(130)에서 실행된다. 응용 프로그램들의 예들은 이메일 프로그램들, 스케쥴링 프로그램들, PIM(Personal Information Management) 프로그램들, 문서 편집 프로그램들, 스프레드쉬트 프로그램들, 인터넷 브라우져 프로그램들 등을 포함한다. 핸드핼드 개인용 컴퓨터(120)는 또한 처리기(122)에서 실행하는 메모리(124)에 로드된 통지 관리자(134)를 포함할 수 있다. 통지 관리자(134)는, 예를 들어, 응용 프로그램들(132)로부터 통지 요구들을 핸들링한다. 또한, 아래 설명된 바와 같이, 핸드핼드 개인용 컴퓨터(120)는, 전화를 거는 것을 포함할 수 있는 통신망에 핸드핼드 개인용 컴퓨터(120)를 연결하기에 적절한 통신망 소프트웨어(136)(예를 들어, 하드웨어 드라이버들 등) 및 통신망 컴포넌트들(138)(예를 들어, 무선 및 안테나)을 포함한다.
핸드핼드 개인용 컴퓨터(120)는 한 개 이상의 전지들로서 구현되는 전원(140)을 갖는다. 전원(140)은, AC 아댑터 또는 전력 도킹 크래들(docking cradle)과 같은, 빌트인(built-in) 전지들을 무효화하거나 재충전하는 외부 전원을 더 포함할 수 있을 것이다.
도 1에 나타난 핸드핼드 개인용 컴퓨터의 예(120)는 세 가지 타입들의 외부 통지 메커니즘들로 도시된다: 한 개 이상의 빛 방사 다이오드들(LEDs)(142) 및 오디오 생성기(144). 이들 디바이스들은 전원(140)에 직접 결합되어, 활성화되었을 때, 핸드핼드 개인용 컴퓨터 처리기(122) 및 기타 컴포넌트들이 전지력을 절약하기 위해 가동중지를 할지라도 그들은 통신 메커니즘에 의해 지시된 지속기간 동안 남아있도록 한다. 바람직하게는, LED(142)는 사용자가 액션을 취할 때까지 무한정 기다린다.
기본 핸드핼드 개인용 컴퓨터가 도시되었지만, 휴대 전화와 같이, 프로그램에 의해 사용되기 위해 일부 방식으로 데이터 통신을 수신하고 그 데이터를 처리할 수 있는 사실상 임의의 디바이스는 본 발명의 구현 목적을 위해서 동격임을 주목한다.
<자기 기술적 소프트웨어 이미지 업데이트 컴포넌트들>
본 발명은 일반적으로, 초기 소프트웨어나 소프트웨어 업데이트가, 예를 들어, 플래쉬 메모리와 같은, 임베딩된 디바이스의 비휘발성 메모리에 기록되는 것들을 포함하는 Microsoft Windows® CE-기반 휴대용 디바이스들과 같은 소형 휴대용 컴퓨팅 디바이스들에 저장되는 소프트웨어 설치 및/또는 업데이트에 관한 것이다. 그럼에도 불구하고, 본 발명은 일반적으로 컴퓨팅에 이득을 제공하고, 그러므로, 다양한 타입들의 메모리 및/또는 하드 디스크 드라이브들과 같은 다른 타입들의 저장 매체들을 포함하는 기타 컴퓨팅 디바이스들 및 기타 타입들의 저장장치에 적용될 수 있다. 임의의 저장 메커니즘이 동격임이 이해되지만, 단순성을 위해, 지금 부터 "플래쉬"라는 용어는 디바이스의 업데이트가능한 저장장치로의 참조로 사용될 수 있다. 게다가, "이미지"라는 용어는 일반적으로, 기존 이미지의 일부분만이 업데이트될 때조차, 이미지로의 후속 소프트웨어 업데이트들을 비롯하여 초기 소프트웨어 설치 이미지의 개념을 포함한다.
배경의 방식에 의해, Windows® CE 운영 체제와 같은 현대 운영 체제들은 모듈화된다(구성요소화됨). 그러나, 정확한 파일들 및 세팅을 포함한 결과적 이미지는 단일 운영 체제 이미지이다. 이 목적으로, 구성 시간에, 특징 변수들은 무엇이 결과적 단일 운영 체제 이미지에 포함되었는지를 결정하기 위해 특정 파일들 및 세팅에 매핑된다. 이 매핑을 수행하는 능력은 두 가지 타입들의 구성-시간 구성 파일들을 사용한다: 이진 이미지 구성자(.bib) 및 등록(.reg) 파일들. .bib 파일은 결과적 이미지에 포함되는 파일들의 리스트를 포함하고, .reg 파일은 이미지에 포함된 등록 (세팅) 정보의 리스트를 포함한다. 이들 파일들의 내용은 특징에 의해 콜렉션들로 그룹화되고, 선택적으로 구성 시간에 세팅될 수 있는 조건적 변수들로 포장된다. 조건적 특징 변수가 구성 시간에 세팅될 때, .bib 및 .reg 파일들의 연계된 내용들은 이미지에 포함되고, 그렇게 시스템의 사용자는 미세 특징 수준에서 결과적 이미지가 포함되어야 하는 것을 선택하는 능력을 갖는다.
특징 수준의 종속성들이 자기 기술적이도록, 더 높은 수준의 로직이 또한 조건적 변수들의 선택에 적용된다. 부언하면, 한 개 특징의 선택은 또한, 그 선택된 특징이 의존하는, 선택되는 다른 특징들의 원인이 될 것이다. 그러므로, 구성 시 스템은 자체일관적 단일 운영 체제 이미지는 사용자측에서의 특징들의 임의의 랜덤 선택으로부터 귀결함을 보장한다. 그러나, 상술된 바와 같이, 단일 운영 체제 이미지는 이미지의 부분들이 개별적으로 업데이트될 수 있는 포함된 이미지에 관련된 단점들을 갖는다.
본 발명의 일 양태에 따라, 소프트웨어 업데이트들을 포함하는 이미지들은 자체포함된(self-contained) 보안된 개체들로부터 구성된다. 기본 업데이트 프리미티브(primitive)는 패키지로서 참조되고, 일반적으로, 패키지는 동일한 버전이고 한 단위로서 업데이트되는 일단의 파일들의 캡슐화이다. 본 발명은 이미지들을 업데이트 할 때 자기 기술적이고 주목할 만한 향상이 있는 것, 및 단지 이미지의 컴포넌트 부분만의 교체를 용이하게 하는 것으로서 패키지 포맷을 제공한다.
이미지들은 패키지들로부터 구성되고, 실행가능 코드 및 저장장치에 적용될 수 있는 데이터 모두를 포함한다. 실행가능 코드가 설치 시간에 임베딩된 디바이스의 가상 주소 공간 환경에 맞춤화됨을 주목한다; 예를 들어, 기본적인 플래쉬 메모리 기술에 따라, 일부 디바이스들은 실행가능 코드가 플래쉬로부터 직접 실행되도록 하는 한편(코드는 압축 포맷으로 저장될 수 없음을 의미하는 제자리실행(execute-in-place), 다른 디바이스들은 코드가 실행되기 위해 RAM으로 복사되는 것(필요하면 압축된 코드의 재생을 포함함)을 요구한다. 본 발명의 일 양태를 유지하는데 있어서, 이미지 업데이트 기술은, 임의의 상호 컴포넌트 종속성을 유지하면서, 패키지들을 사용하여 운영 체제 이미지를 업데이트가능한 컴포넌트들로 분리한다.
본 발명의 일 양태에 따라, 소프트웨어 구성 처리의 일부로서 운영 체제 특징들(파일들, 메타데이터, 구성 정보 등을 포함함)을 패키지들로 매핑하는 시스템 및 방법이 제공된다. 패키지들은 초기 디바이스 설치 및 업데이트들을 위해 사용될 수 있다. 아래 기재된 바와 같이, 소프트웨어 업데이트 패키지들은 다양한 형태들일 수 있고, 예를 들어, 일부는 이전 업데이트에의 단지 변경들(델타들)만을 포함할 것이고, 한편 다른 것들은 다른 파일들을 전체적으로 대체하는 파일들을 포함할 수 있다.
여기서 설명된 패키지 개념은 업데이트 처리의 컴포넌트 부분이다. 그에 의해 운영 체제 특징들(특정 파일들, 메타데이터, 구성 정보 등에 대응하는 일반적으로 추상적인 개념)이 패키지들 내로 매핑되는 처리는, 운영 체제 이미지의 최저 수준의 컴포넌트들을 식별해야만 하는 것 대신에 사용자가 운영 체제 이미지의 특정 측면에 대한 관련 파일들, 메타데이터, 구성 정보 등의 전체 집합들을 기술하는 더 높은 수준의 핸들을 참조할 수 있는 것을 포함하여, 사용자에게 편의성을 제공한다. 여기서 사용하는 바로는, "특징(feature)" 및 "컴포넌트(component)" 의 용어들은 보통은 교환적으로 사용될 수 있음을 주목하라. 특징 핸들을 참조함으로써, 사용자는 추상화를 통해 패키징 복잡도를 관리하는 면에서 볼 때 이점을 얻을 수 있다. 예를 들어, 브라우징 컴포넌트 소프트웨어(예로, 인터넷 익스플로러)에 대해 실행가능 모듈, 동적으로 링크된 라이브러리들(DLLs), 자원/데이터 파일들, 등록 정보 등을 특정하게 매핑하고 각각의 부분을 패키지 내로 개별적으로 매핑하기보다는, 본 발명은 사용자로 하여금 단일 "인터넷 익스플로러"로서 이 관 련 정보를 참조할 수 있도록 하여 주고 따라서 이를 특징 수준에서 패키지로 매핑하게 해 준다.
본 발명은 또한 특정 파일들/세팅들이 관련 특징들 사이에서 공유되는 경우들을 취급하는 패키징 로직을 제공하는데, 사용자는 이 관련 특징들을 다음 차례에서 달라지는 패키지들로 매핑하기 위해서 이 특정 파일들/세팅들을 선택한다. (이하 설명될) 여러 알고리즘에서의 로직은, 다수의 가능한 더 높은 수준의 패키지 매핑 요구들이 주어졌을 때 개별 파일들/세팅들이 정확한 요구에 매핑되는 것을 일반적으로는 보장한다. 로직이 정확한 액션 경로를 결정하는 상황에서는, 메시징이 사용자에게 제공되어 사용자 개입이 해결되도록 요구하는 임의의 이슈들을 표시한다.
또한, 패키지들은 선택적으로 종속성 정보를 운반한다. 예를 들어, 패키지의 내용들이 또다른 패키지의 내용들에 의존할 때 이 관계는 구성 처리 동안에 포착되고 설치 처리 동안에 이후의 분석을 위해 패키지 내로 인코딩된다. 본 발명은 또한 그에 의해 패키지들이 종속성 정보를 획득하는 (특징 수준 종속성 정보를 통한) 메커니즘을 제공한다.
본 발명의 한 특징에 따라서, 특징 선택들이 패키지들의 (하나 또는 그 이상의 ) 배열로 매핑될 수 있어서, 특정 파일들 및 세팅들이 적합한 패키지로 매핑되는 것으로 귀결된다. 이를 정확히 성취하기 위해서, 로직은 특징 수준 이하의 충돌들 및 종속성들을 해결한다. 예를 들어, 만일 두개의 특징들이 동일한 특정 파일을 논리적으로 참조하고 이 특징들이 다른 패키지들로 매핑된다면, 이 로직은 공 유된 파일이 어느 패키지 내에 배치되어야 하는 지를 결정한다.
일 구현예에서, 패키지 파일들은 세개의 다른 파일들 -패키지 정의 파일(pkd), 컴포넌트 매핑 파일(cpm), 및 컴포넌트 관계 파일(crf)- 에 의해 구성 시간에 규정된다. pkd 파일은 패키지의 내용들의 전역 속성들을 규정한다. pkd 파일은 다음의 XSD에 관해서 구성 처리 동안에 확인되는 XML 파일이다.
Figure 112004059478180-pat00001
.pkd 파일의 한 예가 이하에 제시되었다.
Figure 112004059478180-pat00002
이 정의 파일에서 전역적으로 고유한 ID(GUID) 와 패키지 이름의 존재를 주목하라. GUID는 패키지를 또다른 것으로부터 구별해 주기 위해 참조될 수 있는 패키지의 고유한 이름을 제공한다. 패키지 이름은 운영 체제 특징/컴포넌트를 패키지로 매핑할 때 사용되는 핸들을 제공하도록 기능한다.
예시적 구현에서, cpm 파일은 컴포넌트 대 패키지 매핑 정보를 포함하는 콤마(comma)로 분리된 값 파일이다. 이는 다음 형태를 갖는다:
<컴포넌트 변수>, <패키지 이름>
또는,
<컴포넌트 파일 이름>, <패키지 이름>.
다음은 몇몇의 컴포넌트 대 패키지 매핑 정보 예들을 제공한다.
Figure 112004059478180-pat00003
컴포넌트 관계 파일(crf)은 컴포넌트들 사이의 종속성 및 섀도우 관계들(섀도우는 세팅들에 대한 순위 순서화(precedence ordering)를 참조함)을 표시한다. 컴포넌트 관계 파일은 다음의 형태를 갖는다:
<컴포넌트 변수> DEPENDSON <컴포넌트 변수>
또는
<컴포넌트 변수> SHADOWS <컴포넌트 변수>.
이것의 예는 다음과 같다:
APPS_MODULES_OMADMCLIENT SHADOWS APPS_MODULES_MMS
다음의 표들이 여기 설명된 용어들 및 파일 유형들의 몇몇에 대한 일반적이고 비제한적인 정의들을 요약한다.
용어
용어 일반적 정의
모듈 단일 실행 가능 파일(.EXE, .DLL 등)
세팅들 등록 세팅들, 파일 시스템 초기화 명령들(.DAT 파일), 데이터베이스 초기화들, 및 임시 XML 을 포함할 수 있는 구성 정보의 집합.
컴포넌트 특징 유닛을 구성하는, 모듈들, 파일들(템플릿들, 폰트들 등을 포함하는 비 모듈 파일들), 및 세팅들의 집합. 컴포넌트들은 전형적으로는 시스겐(sysgen) MODULES_tags 들과 관련됨.
패키지 배포를 위해 서명되고 패키지화된 컴포넌트들의 집합
매니페스트(manifest)(패키지, 구성, 디바이스) 패키지의 내용들을 설명하는 파일. 구성 환경에서 패키지 내의 각각의 파일의 이름들을 설명하는 엔트리들을 포함하는 패키지 매니페스트 파일(.BIB 확장자를 가짐)이 있고; 다른 매니페스트 파일인 디바이스측 매니페스트(.DSM 확장자를 가짐)는 패키지에 관한 정보의 완전한 집합을 설명하는 이진 파일(도9을 참조하여 이하 설명됨)이 있다는 것을 주목하라. 도3을 참조해 설명한 대로, 구성 매니페스트 파일은 패키지 매니페스트 파일로부터 생성되고, 디바이스 매니페스트 파일(및 패키지의 나머지)을 산출하는 패키지 산출 처리에 의해 사용된다.
섀도우 주문 툴 컴포넌트 관계 파일을 처리하고 패키지 섀도우 파일들을 산출하는 구성 툴
파일 유형
확장자 파일 유형 일반적 설명
.bib 이진 이미지 구성자 귀결 이미지에 포함되어야 만 하는 파일들의 리스트를 포함함
.reg 등록 파일 파일이 이미지에 포함될 등록(세팅) 정보 리스트를 포함함
.pkd.xml 패키지 정의 파일 어떤 패키지들이 존재하는지(패키지 이름, guid, 버젼, loc buddy)를 정의하는 구성 트리 내의 XML 파일
.cpm.csv 컴포넌트 대 패키지 매핑 파일 MODULES 태그들과 파일들을 패키지들로 매핑하는 구성 트리 내의 CSV 파일
.crf.csv 컴포넌트 관계 파일 MODULES 태그들 사이의 관계들(섀도우 및 종속성)을 정의하는 구성 트리 내의 텍스트 파일
.bsm.xml 구성측 매니페스트 파일 .bib(이진 이미지 구성자)파일의 XML 파일 번역
.psf 패키지 섀도우 파일 이름지워진 패키지에 의해 섀도우될 필요가 있는 패키지들을 리스팅하는 구성 환경 내의 중간 파일(<packagename>.psf와 같이 패키지 당 하나임)
.dsm 디바이스측 매니페스트 파일 패키지를 설명하는 (패키지 당 하나의) 디바이스 상의 파일(패키지 내의 파일들, 이름, guid, 서명, 버젼, 섀도우들, 종속성들, CRC, 루트 서트(cert)들 등)
.pkg.cab 정규형 패키지 파일 패키지 내의 모든 파일들에 대한 전체 파일을 포함하는 패키지의 전체 버젼
.pku.cab 업데이트 패키지 파일 단일 패키지의 특정 버젼으로부터 동일 패키지의 다른 버젼에 이르기까지의 디바이스의 업데이트를 촉진하는 파일. 이 파일은, 업데이트 패키지의 크기를 최소화하는 것은 무엇이든, 개별 파일들 또는 전체 파일들의 이진 디프(diff)들을 포함할 수 있다.
.pks.cab 슈퍼 패키지 파일 업데이트 패키지들 및/또는 정규형 패키지들의 집합을 포함하는 파일
도 2를 다시 참조하면, 전체적 패키지 발생 처리의 일부로서, 구성 처리 동안에 구성 매니페스트 파일(202)은, 운영 체제 이미지에 대한 이진 이미지 구성자 파일(204)(.bib 파일, 패키지 매니페스트 파일로도 불림)과 패키지 매핑 파일(206)에 대한 컴포넌트를 입력들로 취함으로써 생성된다. 앞서 설명한 대로, 구성 매니페스트 파일(206)은 특정 패키지에 대한 파일 내용들을 명시한다.
도3은 그에 의해 구성 매니페스트 파일(202)이 이진 이미지 구성자 파일(204)로부터 생성되는 예시적 구성 매니페스트 파일 생성 처리(208)를 도시하였다. 도3으로부터 알 수 있듯이, 일반적으로, 이진 이미지 구성자 파일(204) 내의 각각의 라인은 파스(parse)되고; (제자리실행 표에서 탐색할 때(단계 310 및 312)) 유효 태그들을 갖는 .bib 파일 엔트리로서 구문 분석되는 라인들은 설명한 대로 압축될 수 있고(단계 318), 구성 매니페스트 파일(202)에 기입될 수 있다(단계 320).
귀결되는 구성 매니페스트 파일(202)은 다음의 XSD로서 확인되는 XML 파일이 다.
Figure 112004059478180-pat00004
구성 매니페스트 파일(202)이 생성되는 방식과 유사하게, 운영 체제 이미지에 대한 등록은 (때때로 RGU 파일들로 언급되는 것들 내로) 분리되어 유사한 알고리즘에 기초하여 패키지들에 할당된다. 이런 처리(210)(도2)의 한 예가 도 4에 도시되었는데, 여기서 유효 태그들(단계 414)와 관련된 등록 세팅들(212)(도 2)은, 적절한 대로 이들의 등록 키 이름들을 포함하여, 패키지 RGU 파일(단계422) 내로 기입된다. 패키지가 처리된 변화들인 때는 언제든지(단계 418 및 420) 등록 키 이름들이 이 패키지의 RGU 파일에 기입된다는 것을 주목하라.
또한, XML 파일들(218)(도2, 예로 그밖의 세팅들을 포함함)은 분리되고 특정 패키지들에 할당될 수 있다. 이를 행하는 예시적 처리(220)는 도 5에 도시되었는데, 여기서 자식 노드들에 대한 유효 태그들(단계 508에서 평가됨)은 패키지 노드 에 할당된다(단계 514).
패키지 생성 처리의 이 중간 단계의 결과는, 도 2에 도시된 바와 같이, 구성된 각 패키지에 대한 다수의 파일들인데, 다음을 포함한다.
Figure 112004059478180-pat00005
이 파일들로부터, (예를 들어, XSD(203)와 XSD(225)를 통한 검증을 포함) 패키지 생성 처리(230)는 일반적으로 도 6에 표시된 순서도에 따라 최종 패키지 파일(232)을 구성한다. 도 6에 개략적으로 나타낸 바와 같이, 소정의 체크 및 검증(단계 600-610) 후, 패키지들로부터 패키지 콜렉션이 생성되는데(단계 612), 각각의 패키지를 패키지 정의에 매핑하고, 그 패키지에 대한 구성 매니페스트 파일을 판독하고, 그 데이터로부터 패키지를 생성하는 일련의 단계들(618-622)을 포함한다.
구성 매니페스트 파일을 최종 패키지 파일 리스트 형태로 변환하고, 그 각각을 릴머지 툴(relmerge tool: 250)(도 8을 참조하여 하기에서 설명되는 바와 같이 재배치 정보를 실행가능 파일에 삽입하는 툴)로 처리하는 처리는 도 7a 및 도 7b에 개략적으로 도시된다. 도 7a 및 도 7b에 개략적으로 나타낸 바와 같이, 지시 파일이 생성되고 구성 매니페스트 파일이 위치되어 파스된다(오류가 발생하지 않는 것으로 가정). 파싱이 성공적이면(단계 716), 디바이스 매니페스트 오브젝트가 단계 720에서 생성되고, 처리는 도 7b의 단계 726으로 이어져서, 디바이스 매니페스트 오브젝트가 적절하게 생성되었는지를 확실히 한다.
단계 732 및 756을 통해, 구성 매니페스트 파일에 리스트된 각각의 파일이 처리된다. 이를 위해, 단계 734에서 파일이 발견되고, 단계 738에서 실행 가능한지 여부를 판정한다. 실행 가능하지 않다면, 파일은 임시 구성 디렉토리에 복사되고, 실행 가능하다면, 설치 시에 디바이스 상에 실행 가능 코드 재배치/ 픽스-업을 활성화하는 툴(250)(도 2, 예를 들면 relmerge.exe로 명명됨)에 의해 처리될 필요가 있다. 파일이 릴머지 처리를 필요로 한다면, 도 8a 및 도 8b를 참조하여 하기에서 설명되는 바와 같이, 이 툴은 단계 744에서 호출되고, 성공적으로 실행된다면 파일명이 디바이스 매니페스트에 추가된다.
따라서, 도 7a 및 도 7b를 참조하여 상기에서 설명한 바와 같이, 구성 매니페스트 파일(208)에 리스트된, 패키지를 위한 파일 내용이 검토되고, 임의의 실행 가능 코드가, 설치 시에 실행 가능 코드를 디바이스 상에 재배치/픽스-업하는 것을 활성화하기 위해, 패키지에 삽입하기 전에 처리된다. 구성 매니페스트 파일을 최종 패키지 파일 리스트 형태로 변환하기 위해, 각각의 실행 가능 파일은 릴머지 툴(250)로 처리되는데, 릴머지 툴(250)은 이미 파일 내에 있는 재배치 정보를 압축하고, 옵션으로(.REL 파일이 제공된다면), 운영 체제가 코드와 데이터 섹션을 불연속적인 메모리 영역들에 분리시키도록 해주는 보다 상세한 재배치 정보를 제공한다.
릴머지 툴 동작이 도 8의 순서도에 개략적으로 도시된다. 단계 802에 나타낸 바와 같이, 입력 파일의 복사본이 만들어지는데, 이는 입력 파일이, 실행에 의해서도 변경될 것이기 때문이다. 따라서, 릴머지 툴(250)은 입력 파일의 복사본을 만들고, 그 복사본에서 작업하는데, 그 복사본은 프로그램이 퇴출(exit)될 때 삭제 된다.
단계 804에서, 서명이 제거되는데, 그 이유는, 그렇지 않으면 서명이 처리의 후반부(하기에서 설명되는 스페이스 어카운팅 체크)가 실패하도록 야기하기 때문이다. 툴(250)이 완전히 다른 파일을 출력하고 있을 것이기 때문에, 서명은 임의의 이벤트에서 출력 파일과 연관성이 없을 것임을 유의한다. 이동가능 실행 파일에서(.EXE 및 .DLL 파일들용 파일 포맷), 서명은 파일 내의 임의의 섹션 외부의 파일 끝에 저장되는데, 여기서 각각의 섹션은 데이터가 로더(loader)에 의해 메모리 내에 로드되는 단위에 해당한다. 각각의 섹션은 O32 헤더라고 불리는, 혹은 IMAGE_SECTION_HEADER 구조로 식별되는 헤더를 갖는다. 단계 806에 의해 일반적으로 표시된 바와 같이, 파일의 조작을 용이하게 하기 위해, 툴(250)은 PE 파일용 PE 파일 헤더 및 그의 섹션들을 적당한 내부 데이터 구조에 파스한다. IMAGE_SECTION_HEADER 구조는 이미지 섹션 헤더 포맷을 나타낸다(IMAGE_SECTION_HEADER에 관한 추가적인 상세한 내용은 msdn.microsoft.com에서 찾 을 수 있음).
Figure 112004059478180-pat00006
파일이 새로운 헤더와 함께, 그리고 패딩이 제거되어, 다시 정리될 것이기 때문에, 파일들의 섹션들 내에 포함되지 않는 파일 내의 정보가 없음을 검증하기 위해, 스페이스 어카운팅 체크(단계 808)가 수행된다. 파일 서명 및 코드뷰(Codeview) 오류수정 디렉토리 엔트리(이들은 툴(250)에 의해 핸들링됨)를 포함하여, 데이터가 섹션들의 외부의 .EXE 또는 .DLL 파일 내에 저장되는 소정의 상황이 있음을 유의한다. .EXE 자체 후에 추출될 데이터를 저장한 자체-추출 실행가능 파일처럼, 섹션의 외부에 데이터를 저장할 수 있는 다른 응용 프로그램들이 있다. 압축된 데이터는 섹션 내에 저장되지 않는데, 그렇지 않으면 로더는 압축된 데이터를 메모리에 로드하려고 시도할 것이고, 이것은 자체-추출 실행 파일이 작동해야 하는 방법이 아니다. 툴은 이러한 인스턴스들을 지원하지 않는다.
스페이스 어카운팅은 CSpaceAccounting 클래스의 인스턴스에 의해 구현되는데, CSpaceAccounting 클래스는 SpaceBlock 구조들의 배열을 보유하며, SpaceBlock 구조들 각각은 파일 내의 데이터 블럭을 설명한다. 스페이스 어카운팅을 구현하기 위해, 설명될 수 있는 파일 내의 영역들이 개별의 블럭들로서 SpaceAccounting에 추가된다. 이것은 파일 헤더들(E32 및 O32 헤더들을 포함)에 대해, 그리고 파일 내의 섹션들 각각에 대해 행해진다. CodeView 오류수정 엔트리들을 수용하기 위해, 이들 각각도 역시 개별적인 블럭으로서 추가된다. 그런 다음, 블럭들은 파일 내의 그들의 오프셋에 의해 정렬된다. 새로운 순서화에서 인접하는 블럭들(예를 들면, 블럭(2)은 블럭(1)의 마지막 바이트 직후에서 시작함)이 병합된다. 처리의 끝에서, 파일 내의 모든 스페이스가 설명될 수 있다면, 리스트는 단지 하나의 블럭을 포함해야 하며, 이 블럭은 오프셋 0에서 시작하고, 전체 파일의 길이를 갖는다. 그러한 조건이 맞으면, 테스트가 통과된다. 그렇지 않으면, 오류가 보고되고 툴은 퇴출한다.
스페이스 어카운팅 체크가 통과되면, 단계 810에 의해 표시된 바와 같이, 툴(250)은 입력 파일이 명시되어 있는 동일 디렉토리 내에서 .REL 파일을 검색한다. 검색되면, 단계 812를 통해 처리되고, 그렇지 않으면 PE 파일의 재배치 섹션이 단계 814를 통해 처리된다. 더 구체적으로, 재배치 파싱 툴은 두개의 다른 타입의 재배치 정보, 즉 목적지 섹션 정보를 포함하는 .REL 파일 내의 재배치 정보와, 목적지 섹션 정보를 포함하지 않는 PE 파일의 .reloc 섹션 내의 재배치 정보를 파스할 수 있다. 이를 위해, 재배치 파싱은 .REL 파일 또는 PE 파일 내의 내부 재배치 중 하나를 파싱하는 것에 대응하는 두개의 엔트리 포인트를 갖는다. 본 구현에서는, 하나 혹은 다른 하나를 호출하는 것이 정당하고, 둘다를 호출하는 것은 정당하 지 않다.
재배치들을 저장하기 위해, CRelocData 클래스들의 이차원 배열이 유지되는데, 여기서 이 배열의 이차원은 문제의 재배치를 위한 소스 섹션과 목적지 섹션이다. 재배치를 위한 소스 섹션은 재배치가 위치되는 섹션이며, 여기서 재배치는, 특정 주소에 로드하도록 파일이 수정될 때 파일 내의 특정 데이터 피스를 업데이트하기 위한 명령이다. 소스 섹션은 그 데이터 부분이 있는 섹션이 어느 것인지를 식별한다. 소스 섹션은, 재배치의 상대적인 가상 주소를 보고, 파일 내의 섹션들의 상대적인 가상 주소 범위들을 비교함으로써 추측된다.
재배치를 위한 목적지 섹션은 재배치가 지적하는 데이터 부분을 포함한 섹션이 어느 것인지를 식별한다. 검사 기술은 항상 유효하지는 않은데, 그 이유는 최적기(optimizers)가, 재배치들이 다른 섹션들을 지적하는 것으로 보이도록 하는 방식으로 코드를 최적화하는 것으로 알려져 있기 때문인데, 예를 들면, 최적기는 가산 혹은 감산을 최적화하여 그것을 코드 내에가 아니라 레퍼런스 내에 배치할 것이다. 이러한 이유 때문에, 목적지 섹션은 데이터로부터 추측되지 않는다. 두개의 재배치 포맷들(.REL 혹은 .reloc) 간의 차이점은 재배치를 위한 목적지 섹션이 알려져 있는지의 여부이다. .REL 파일은 목적지 섹션을 명백히 식별하지만, .reloc 섹션은 그렇지 않다.
그 결과, .reloc 섹션 내에 재배치 정보만을 갖는 파일들에 대해, 그 전체 파일이 함께 리로케이트될 필요가 있다. 목적지 섹션 정보가 없으면, 두개의 섹션들을 분리하고, 다른 얼마만큼씩 이들을 리로케이트하는 것이 불가능하다. 따라서, 이 툴은 각각의 재배치를 위한 소스 및 목적지 섹션 모두를 유지하고, 목적지 섹션들이 유효한지의 여부를 잘 파악할 필요가 있다.
이를 위해, 처리는 CRelocData 클래스들의 이차원 배열을 유지하고, 각각의 CRelocData 클래스는 그 자체의 재배치 데이터 스트림을 생성한다. 이 배열은 양쪽 차원에서 고정된 크기를 갖는데, 이것은 이 툴이 소정의 최대(예를 들면, 16) 섹션들을 갖는 PE 파일들만을 처리할 수 있음을 의미한다. 그러한 제한을 가지고, 재배치를 지속하기 위한 데이터 포맷은 소스 및 목적지 섹션들 각각에 대해 8비트를 저장하고, 256 섹션들을 위한 데이터 포맷의 가능성을 남긴다. 그러면, 두개의 다른 함수(CalculateRelocSize 및 WriteRelocationsToFile)가 적어도 하나의 재배치를 갖는 소스 및 목적지 섹션의 조합 각각에 대해 블럭 헤더를 기록함으로써 개별의 스트림들을 결합한다.
재배치 인코딩은 CRelocData 클래스에서 구현된다. 이 클래스는 재배치 주소들의 스트림을 취하여(CRelocData::AddReloc 방법에 대한 개별적인 호출로서), 그 재배치들을 인코드하기에 필요한 명령들을 나타내는 바이트 스트림을 생성한다. 그 바이트 스트림은 나중에 검색될 수 있다. 이를 구현하기 위해, 클래스는 하나의 명령 뒤에 효과적으로 머물고, 단일의 재배치를 나타내는 "Single" 명령으로 항상 시작한다. 그런 다음, 새로운 재배치들이 도달하면(AddReloc 방법에서), 이전의 명령과 새로운 위치를 이용하여 패턴이 형성될 수 있는지를 알아보기 위해, 이들이 분석된다. 이전의 명령이 "Single" 명령이면, 새로운 재배치 주소가 DWORD로 얼라인(align)되고 패턴 명령의 최대 스킵 범위(3DWORDs) 내이면, 이전의 명령은 "Single" 명령으로부터 "Pattern" 명령으로 변환시킴으로써, 확장될 수 있을 뿐이다. 이전의 명령이 패턴 명령이면, 그 패턴은 설립된 형태를 갖고, 패턴 내의 그 다음 엘리먼트가 추측될 수 있다. 새로운 주소가 그 패턴 내의 그 다음 엘리먼트와 정합한다면, 그 패턴은 한 사이클만큼 연장된다. 그렇지 않으면, 새로운 Single 명령이 시작된다.
도 8의 전체 흐름도로 되돌아가서 보면, 파일의 섹션들이 헤더들을 뒤따라 선형적으로 발생하기 때문에, 전체 파일은 새로운 헤더 포맷 및 섹션들 사이의 모든 패딩 제거를 수용하기 위해 재정리될 필요가 있다. 이를 위해, 단계 818에 나타낸 바와 같이, 구 RELOC 섹션이(존재한다면) 제거되고, 추가될 임의의 재배치가 있다면, 새로운 CRELOC 섹션이 끝에 부가된다. 단계 818에서 완성된 파일 레이아웃을 이용하여, 출력 파일이 단계 820에서 최종적으로 생성되고, 그런 다음 각각의 섹션에 대한 데이터의 헤더들을 출력 파일에 기록한다.
단계 822에서, relmerge.exe는 이제 타깃 출력 파일이 nk.exe인지를 확인하기 위해서 테스트한다. 출력파일이 nk.exe라면, relmerge 툴(250)은 (이하 기술된) pTOC 정보 및 RomExt 정보를 기록함으로써, 두개 파일들의 내용을 처리한다. nk.exe는 오류수정 구성에 기초하여 다른 파일들을 복사함으로써 생성되기 때문에 relmerge 툴(250)은 출력 파일을 주시한다. 첫번째로 처리된 파일은 config.bsm.xml이다. 이 파일은 이미지 업데이트 처리(Image Update processing)동안 MakePkg.exe에 의해 생성된다. 이것은 시스템 커널 내의 FIXUPVARS에 대한 소정의 값들 및 이름의 문자 표현을 포함한다. 이 파일의 내용은 이후의 사용을 위해서 파싱되어 저장된다. 두번째 파일은 입력 파일에 대한 맵 파일이다. 이 파일은 ProcessFixupVars에 의해 처리된다. 이것은 소스 파일 경로를 취하고, 복사하고 .exe를 .map으로 대체하며 맵 파일을 오픈하려고 한다(맵 파일은 PE 파일 내의 함수들 및 변수들의 물리적 및 가상 주소에 대한 대량의 정보를 보유한 문자 파일이다). 맵 파일이 성공적으로 오픈되면, 맵 파일의 시간소인(timestamp)을 검색하기 위해서 제1 라인이 파싱된다. 이후에 이 시간 소인은 PE 파일 내의 시간소인과 비교된다. 이들이 다르다면, 경고가 발생되고 맵 파일 처리가 중단된다. 시간소인이 일치한다면, 이 파일의 각 라인이 판독되고 각 FIXUPVAR를 찾기 위해서 정규 표현 스트링이 사용된다. 일치가 발견되면, 주소 정보가 맵 파일로부터 취해지고 수정 위치에서 (config.bsm.xml로부터의) 새로운 변수값을 소스 파일에 기록하는데 사용된다. 동시에, ProcessFixupVars도 pTOC(TOC는 내용 표를 나타냄)와 다음 처리를 위한 RomExt 변수들을 찾는다. pTOC가 발견될 때, (1 베이스에서 0 베이스로 조정된) 맵 파일로부터 검색된 섹션에 구성된 bSrcSection, 254로 구성된 bDstSection 및 4의 길이로 새로운 .creloc 헤더가 생성된다. 이 헤더는 4 바이트 RVA+Base 주소 정보가 뒤따르는 타깃 파일에 기록된다. RomExt에 대해서, 이 헤더는 bSrcSection이 253으로 구성되는 것을 제외하고는 동일하다.
운영 체제 커널이 Roms 내의 파일들에 대한 정보를 필요로 하기 때문에 pTOC/RomExt 파싱 동작이 사용되며, 이는 pTOC 변수를 통해 제공된다. 이 변수는 DiskImage 툴과 디바이스 상에서 구동하고 있는 업데이트 응용 프로그램에 의해 업데이트될 필요가 있다. 이 변수에 대한 정보는 시스템 구축의 컴파일 및 링크 단 계 중에 생성된 .MAP 파일을 통해서 검색될 수만 있다. 이 파일은 이 정보를 검색하기 위해서 파싱된다.
특정 런타임 툴들은 커널 데이터 구조 내에 선언된 변수에 대한 액세스를 필요로 한다. 이 변수를 RomExt라 부른다. 이 변수는 DiskImage 툴과 디바이스 상에서 구동하고 있는 업데이트 응용프로그램에 의해 업데이트될 필요가 있다. 이 변수에 대한 정보는 시스템 구축의 컴파일 및 링크 단계 중에 생성된 .MAP 파일을 통해서 검출될 수만 있으므로, 이 파일은 이 정보를 검색하기 위해 파싱된다.
본 발명의 일 양태에 따라서, 자기-기술적 패키지에 대해서, 디바이스 매니페스트 파일(260)(도 2, 보다 상세히 도 9에 도시됨)은 패키징 처리 중에 생성되고 패키지 자체 내에 저장된다. 디바이스 매니페스트 파일(260)은 설치 처리 중에 사용된다. 디바이스 매니페스트 파일 내에 포함된 포맷 및 정보가 도 9에 도시되며 또한 이 구조 정의에 관하여 기술된다.
Figure 112004059478180-pat00007
일 구현에서는, 상술한 바와 같이, 디바이스 매니페스트 파일의 내용이 pkd 및 (일단 처리된 psf 파일(280)을 호출하는) 처리된 crf 파일로부터 얻어지는 것은 물론, (예를 들면, 파일 리스트 및 속성 정보에 대한) 구성 매니페스트 파일로부터 얻어진다. crf 파일은 컴포넌트 수준 종속성을 기술하며, 패키지-수준 종속성을 기술하는 형태로 처리된다.
또한, 컴포넌트 세팅(구성 정보)은 서로를 섀도잉할 수 있다(바꾸어 말하면, 두개의 관련 세팅들이 시스템 상에 존재하고, 단지 하나만이 획득할 경우에 우선 순위가 존재함). 컴포넌트 수준에서의 종속성과 섀도잉 정보는 섀도우 오더 툴에 의해 패키지 수준 관계로 변환된다.
섀도우 오더 툴은 컴포넌트 관계 파일(226)에 따라 다른 패키지들을 섀도잉하는 각 패키지에 대해서 패키지 새도우 파일(packagename.psf)을 생성한다(도 2). 패키지에 대한 .psf 파일은 섀도잉된 패키지의 GUID를 (라인당 하나) 열거한다. 섀도우 오더 툴의 입력은 패키지 매핑 파일(.cpm), 병합형 컴포넌트 관계 파일(.crf) 및 병합형 패키지 정의 파일(.pkd)에 대한 병합형 컴포넌트이다. 그 출력은 다음의 형태의 포맷된 텍스트 라인을 포함하는, 텍스트 파일이다.
<shadowed pkg GUID>, <shadowed pkg name>, <rule>
(여기서 rule = SHADOWS 또는 DEPENDSON)
예제 라인이 아래 도시된다.
273ce4bf-d4ef-4771-b2ce-6fe2fa2b2666, SMARTFON, SHADOWS
이 정보로부터, 패키지 생성기는 디바이스 매니페스트 파일 생성 처리(262)에 의해 도 2에 도시한 바와 같이, 그리고 도 10a 및 10b에 일반적으로 기술된 바와 같이, 디바이스 매니페스트 파일을 생성한다. 이를 위해서는, 도 10a의 단계 1010을 통해 일반적으로 나타낸 바와 같이, .psf 파일 내의 각 GUID가 디바이스 매니페스트 파일에 부가된다. 일 구현에서 유의할 점은, GUID가 종속성 GUID 또는 섀도우 GUID인지를 결정하는 단계 및 디바이스 매니페스트 오브젝트 상의 적절한 부가 기능을 호출하는 단계가 포함된다는 점이다. 도 10b의 단계 1030을 통해 일반적으로 나타낸 바와 같이, GUID가 추가될 때, 디바이스 매니페스트 오브젝트는 디바이스 매니페스트 파일을 임시 디렉토리에 기록한다.
도 11에 기술한 바와 같이, 지시 파일, rgu 파일(들)(214), xml 파일(들)(218) 및 디바이스 매니페스트 파일(260) 내에 기술된 처리된 파일들을 포함하며, CAB 파일 API(CABAPI)와 같은 패키지 파일 생성 처리를 이용하는 다른 패키지 내용(282)과 함께, 패키지 파일(232)이 생성된다. CABAPI는 이미지 업데이트 처리의 일부로서 이미지 업데이트에 관련된 파일들에 대한 전송 메커니즘으로서 사용되는 Cabinet 파일들의 내용에 대한 액세스를 제공하고자 한다.
패키지를 생성하기 위해서, PackageDefinition 클래스는 패키지의 전체 생성을 관리할 책임이 있다. 생성 처리의 일부로서, PackageDefinition 오브젝트는 '_FLATRELEASEDIR' 환경 변수에 의해 지정된 디렉토리 아래에 새로운 서브디렉토리를 생성한다. 디렉토리명은 패키지명이며, 예를 들어, --"LANG"--으로 명명된 주어진 패키지에 스트링 "_PACKAGE_FILES"이 부가되어, "LANG_PACKAGE_FILES"로 명명된 디렉토리가 생성된다. 이 디렉토리는, 메소드(method) SetDirectoryBase가 오브젝트 상에 호출될 때 셍성된다. PackageDefinition 오브젝트는 패키지를 생성하고, 결과 패키지 파일명은 ".PKG" 확장자를 갖는 친화적 패키지명이다. 패키지 파일은 CAB 버전 1.3용 Microsoft CAB 파일 명세서에 따른다.
PackageDefinition 클래스는 다음의 공용 메소드(public method)를 제공한다.
ㆍ PackageDefinition (XipPackage pkg) - XipPackage 오브젝트에 기초한 패키지를 생성하는 생성자.
ㆍ SetDirectoryBase(string path) - 지정된 디렉토리 아래에 새로운 서브디렉토리를 생성함.
ㆍ Validate() - 패키지가 두개의 필요한 필드들, 이름 및 GUID를 갖는지를 결정함.
ㆍ ReadManifest() - 이 패키지와 관련된 BuildManifest로 하여금 적절한 build manifest file을 파싱하도록 함.
ㆍ MakePackage() - 이 패키지 정의를 위해서 실제 패키지 파일을 생성함.
또한, 패키지 내의 산입(inclusion)을 위해서 다양한 파일들과 함께 실행할 때, 실행 코드 및 데이터가 개별 파일들 내에 정렬될 수 있음에 유의하여야 한다. 이것의 중요한 장점 하나는, 특징의 언어 지정부들이 언어 지정된 개별 패키지들 내에 위치되는 다중 언어 시스템을 용이하게 한다는 점이다. 이는 시스템의 실행 코드를 포함하는 패키지들이 시스템의 언어 지정 컴포넌트들을 포함하는 패키지로부터 분리되는 시스템을 생성한다. 결과적으로, 특징의 실행 코드용 패치(patch)는 그 디바이스 상에 설치된 언어의 임의의 조합에 독립적인, 임의의 디바이스에 적용될 수 있다.
특히, 구성에 의해서, 특징이 구성될 때, 실행 코드(및 언어 독립형 데이터)는 파일들의 한 집합으로 분리되고, 언어 종속형 데이터(및 잠재적으로 코드)는 또다른 파일의 집합으로 분리된다. 이들 파일들은 특징의 일부로서 태그되지만, 언 어 종속형 데이터 파일들은 언어 종속형으로서 또한 태그된다. 이후에, 시스템은 이들 파일들을 개별 패키지(예를 들어, pkd 파일 내의 LocBuddy 태그에 의해 기술됨)로 이동한다.
예로서, 전화기반 특징(telephone-based feature)은 언어 독립적인 라이브러리(예를 들어, tpcutil.dll)내에 있을 수 있다. 전화 특징에 대한 언어 종속형 자원은, 각 언어에 대해서 또한 탐색되는, 예를 들면, tapres.dll로 명명된 다른 자원 dll 내에 구성되며, 예를 들어, tapres.dll.0409.mui(US 영어용), tapres.dll.0407.mui(독일어용) 등이 된다. 이들 파일들은 전화 특징의 일부로서 태그되지만, 언어 지정 파일들은 또한 적절한 파일명을 가지며, 언어 지정됨으로서 태그된다. 예를 들어, 파일명은, tapres.dll.%LOCID%.mui로 나타낸 바와 같이, 적절한 언어 태그들을 명칭 내의 위치 기반 변수로 대신함으로써 생성될 수 있다. 이후에, 파일은 지원되는 각 언어에 대해서 처리되고, 다중 LANGPHONE(locbuddy) 패키지들이 생성되는데, 예를 들면, LANGPHONE_0409(US 영어용), LANGPHONE_0407(독일어용) 등이다. 결과적으로, 시스템은 tpcutil.dll에서의 오류를 수정하기 위해서 LANGPHONE 영역을 이후에 업데이트할 수 있으며, 어떤 언어들에 대한 독립성이 (다른 LANGPHONE_xxxx 패키지를 통해서) 전화 상에서 설치된다.
부가적으로, 이 시스템의 유연성은 언어 지정 실행 코드가 필요에 따라 허용된다는 점이다. 예를 들어, 다른 언어 및 지역은 그 언어 내의 텍스트를 캡처링하기 위해 사용되는 다른 Input Method Editors(IMEs)를 갖는다. 이들 IMEs는 각 언어에 대한 특별 코드를 필요로 하기 때문에, LANG 영역들 중 하나의 내부에 배치된 다.
마지막으로, 캐비넷 검증이 수행될 수 있다는 점에 주목하자. 캐비넷 검증 모듈은 최종 패키지 파일(232)(캐비넷 파일)로부터 디바이스 매니페스트 파일(260)을 추출하며 디바이스 매니페스트(260)의 내용에 대해 캐비넷을 검증한다.
전술한 상세 설명으로부터 알 수 있는 바와 같이, 운영 체제 이미지의 몇몇 부분집합의 업데이트를 용이하게 하는 다양한 메커니즘이 제공된다. 자기 기술 패키지 파일이 제공되며, 종속성, 섀도우 및 이미지의 업데이트를 수월하고 정확하게 하는 다른 특징들을 포함한다.
본 발명이 다양한 변형들 및 대체 구성이 가능한 가운데, 특정 예시된 실시예들이 도면에 도시되고 상세히 기술되었다. 그러나, 개시된 특정 형태가 본 발명을 제한하려는 것은 아니며, 그와 반대로, 모든 변형들, 대체 구성들, 및 본 발명의 정신 및 범주에 들어가는 동등물들을 포함하려는 의도임을 이해해야 한다.
본 발명은 설치 및 업데이트 패키지들을 제공하는 시스템 및 방법에 관한 것이고, 패키지 포맷은 자기 기술적이고, 소프트웨어 구성 처리 시에 운영 체제의 특징들(파일, 메타데이터, 구성정보 등)을 사용하고, 재배치를 위해 실행가능 코드가 실행된다. 구성 처리 동안, 특정 패키지에 대한 파일을 명시하는 구성 매니페스트 파일이 생성되고, 구성 매니페스트 파일과 패키지 정의 파일의 정보를 기초하여 종속성 정보 및 세팅의 순위에 관한 정보(섀도우 데이터)를 포함하는 디바이스 매니페스트를 생성하여 패키지 자체에 저장되고, 설치 처리 동안 사용된다.

Claims (32)

  1. 운영 체제 파일들 및 다른 관련 소프트웨어 어플리케이션 파일들을 포함하는 소프트웨어 이미지를 포함하는 모바일 컴퓨팅 시스템에서, 상기 소프트웨어 이미지 내의 상기 파일들의 일부를 업데이트하는 방법으로서 - 상기 소프트웨어 이미지는 임베디드 시스템 메모리에 저장되어 있음 -,
    자기-기술적(self-describing) 패키지를 구성하는(building) 단계 - 상기 패키지는 운영 체제 이미지의 부분에 대응하며 파일 및 레지스트리 설정들을 포함하고, 상기 패키지는 상기 패키지가 통합될 상기 이미지의 이진 구조를 기술하는 패키지 매니페스트 파일을 포함하며, 상기 패키지는, 언어-의존적 데이터 파일들과 별도인 임의의 언어로 처리하도록 구성된 적어도 일부의 언어-독립적 실행가능 코드 파일들을 포함하여, 그 실행가능 코드의 적어도 일부는 언어-특정 처리(language-specific processing)에 독립적임 -;
    상기 자기-기술적 패키지에 대한 파일 내용들을 특정하는 구성 매니페스트 파일(build manifest file)을 생성하는 단계;
    상기 모바일 컴퓨팅 시스템에 대한 종속성 정보 및 패키지 설정의 우선 순위(priority) 정보를 포함하는, 상기 패키지에 관한 정보의 집합을 기술하는 디바이스 매니페스트 파일을 생성하는 단계 - 상기 디바이스 매니페스트 파일은 상기 자기-기술적 패키지 내에 저장되어 있고 상기 구성 매니페스트 파일로부터 리스트 및 속성 정보를 수신하도록 구성되어 있음-;
    하나 이상의 특징 핸들(feature handles)을 상기 생성된 디바이스 매니페스트 파일에 삽입하는 단계 - 상기 특징 핸들은 상기 패키지에 포함되어야 할 하나 이상의 소프트웨어 특징을 특정하며, 상기 소프트웨어 특징들을 포함하고 이 특징과 맵핑되는 개개의 파일들, 레지스트리 설정들, 및 라이브러리들이 상기 디바이스 매니페스트 파일에 자동으로 포함되도록 하며, 개개의 특징 맵핑은 생략됨 -;
    설치 메커니즘이 상기 패키지를 디바이스에 어떻게 설치하는지 판단할 수 있도록, 상기 패키지 매니페스트 파일, 상기 구성 매니페스트 파일, 및 상기 삽입된 특징 핸들을 포함하는 상기 디바이스 매니페스트 파일 내의 정보를, 상기 패키지의 내용을 기술하는 상기 자기-기술적 패키지와 결합하는 단계(associating); 및
    대응하는 매니페스트 파일들에 따라 상기 자기-기술적 패키지를 설치하는 단계 - 상기 자기-기술적 패키지 내에서 식별된 파일들만이 상기 소프트웨어 이미지에 덮어쓰기됨 -
    를 포함하는, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하는 방법.
  2. 제1항에 있어서,
    상기 패키지와 결합된 상기 정보는 디바이스 매니페스트 파일을 포함하고, 상기 디바이스 매니페스트 파일을 상기 패키지에 부가하는 단계를 더 포함하는, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하는 방법.
  3. 제2항에 있어서,
    상기 패키지의 적어도 일부의 내용이 다른 엔티티(entity)에 대하여 가지는 종속성을 기술하는 종속성 정보를 포함하는 데이터를 상기 디바이스 매니페스트 파일들에 기록하는 단계를 더 포함하는, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하는 방법.
  4. 제3항에 있어서,
    상기 다른 엔티티는 다른 패키지를 포함하고, 상기 패키지로부터 상기 디바이스 매니페스트 파일들을 추출하고 상기 다른 패키지로부터 다른 디바이스 매니페스트 파일들을 추출하는 단계를 더 포함하는, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하는 방법.
  5. 제2항에 있어서,
    다른 설정 데이터에 대한 설정 데이터의 우선 순위(precedence)를 기술하는 섀도우(shadow) 정보를 포함하는 데이터를 상기 디바이스 매니페스트 파일들에 기록하는 단계를 더 포함하는, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하는 방법.
  6. 제1항에 있어서,
    상기 패키지를 구성하는 단계는, 어느 파일들이 실행가능 파일들인지를 판단하고 상기 실행가능 파일들에 대해 재배치 처리(relocation process)를 수행하는 단계를 포함하는, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하는 방법.
  7. 제1항에 있어서,
    상기 패키지의 내용을 기술하는 정보를 상기 패키지와 결합하는 단계는, 상기 패키지의 적어도 일부 내용이 다른 엔티티에 대하여 가지는 종속성을 기술하는 종속성 정보를 결합시키는 단계를 포함하는, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하는 방법.
  8. 제1항에 있어서,
    상기 패키지의 내용을 기술하는 정보를 상기 패키지와 결합하는 단계는, 다른 설정 데이터에 대한 설정 데이터의 우선 순위(precedence)를 기술하는 섀도우 정보를 결합하는 단계를 포함하는, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하는 방법.
  9. 제1항에 있어서,
    상기 패키지를 구성하는 단계는, 기존 파일들을 정의하는 패키지에 대한 정의에 해당 패키지를 매핑하는 단계와, 해당 패키지에 대한 상기 파일 내용들을 특정하는 구성 매니페스트 파일들을 판독하는 단계와, 상기 패키지 정의 및 상기 구성 매니페스트 파일들에 기초하여 상기 패키지를 생성하는 단계를 포함하는, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하는 방법.
  10. 제9항에 있어서,
    패키지 매핑 파일들에 대한 컴포넌트 및 상기 운영 체제 이미지에 대한 이진 이미지 구성자 파일들(binary image builder file)로부터 상기 구성 매니페스트 파일들을 작성하는 단계를 더 포함하는, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하는 방법.
  11. 제10항에 있어서,
    디바이스로의 설치 시에 실행가능 코드 재배치를 가능하게 하기 위하여, 상기 구성 매니페스트 파일들에서 식별된 실행가능 코드를 처리하는 단계를 더 포함하는, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하는 방법.
  12. 제1항에 있어서,
    상기 패키지를 구성하는 단계는, 구성될 때 상기 패키지에 포함될 파일들의 리스트를 포함하는 이진 이미지 구성자 파일들을 판독하는 단계를 포함하는, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하는 방법.
  13. 제1항에 있어서,
    상기 패키지를 구성하는 단계는, 이진 이미지 구성자 파일들에 대응하는 구성 매니페스트 파일들을 작성하고 상기 구성 매니페스트 파일들을 판독하는 단계를 포함하는, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하는 방법.
  14. 제1항에 있어서,
    상기 패키지를 구성하는 단계는, 구성될 때 상기 패키지에 포함될 설정 정보의 리스트를 포함하는 설정 파일들을 판독하는 단계를 포함하는, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하는 방법.
  15. 제1항에 있어서,
    상기 패키지를 구성하는 단계는, 모듈 관련 정보 및 파일들을 상기 패키지에 매핑하는 컴포넌트 매핑 파일들을 판독하는 단계를 포함하는, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하는 방법.
  16. 제1항에 있어서,
    상기 패키지를 구성하는 단계는, 섀도우 관계를 정의하는 컴포넌트 관계 파일들을 판독하는 단계를 포함하는, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하는 방법.
  17. 제16항에 있어서,
    상기 패키지와 결합된 정보는 디바이스 매니페스트 파일들을 포함하고, 상기 섀도우 관계에 기초하여 상기 디바이스 매니페스트 파일들에 정보를 기록하는 단계와, 상기 디바이스 매니페스트 파일들을 상기 패키지에 부가하는 단계를 더 포함하는, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하는 방법.
  18. 제1항에 있어서,
    상기 패키지를 구성하는 단계는, 종속성 관계를 정의하는 컴포넌트 관계 파일들을 판독하는 단계를 포함하는, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하는 방법.
  19. 제16항에 있어서,
    상기 패키지와 결합된 정보는 디바이스 매니페스트 파일들을 포함하고, 상기 종속성 관계에 기초하여 상기 디바이스 매니페스트 파일들에 정보를 기록하는 단계와, 상기 디바이스 매니페스트 파일들을 상기 패키지에 부가하는 단계를 더 포함하는, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하는 방법.
  20. 제1항에 있어서,
    상기 패키지를 구성하는 단계는, 어떤 패키지들이 존재하는지를 정의하는 패키지 정의 파일들을 판독하는 단계를 포함하는, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하는 방법.
  21. 실행시 제1항의 방법을 수행하는 컴퓨터 판독가능 명령어를 포함하는 적어도 하나의 컴퓨터 판독가능 저장 매체.
  22. 운영 체제 파일들 및 다른 관련 소프트웨어 어플리케이션 파일들을 포함하는 소프트웨어 이미지를 포함하는 모바일 컴퓨팅 시스템에서, 상기 소프트웨어 이미지 내의 상기 파일들의 일부를 업데이트하기 위한 시스템으로서 - 상기 소프트웨어 이미지는 임베디드 시스템 메모리에 저장되어 있음 -,
    시스템 메모리;
    파일들 및 레지스트리 설정을 포함하는 자기-기술적 패키지를 구성하는 패키지 생성 처리 수단 - 상기 패키지는 상기 패키지가 통합될 상기 이미지의 이진 구조를 기술하는 패키지 매니페스트 파일들을 포함하며, 상기 패키지는, 언어-의존적 데이터 파일들과 별도인 임의의 언어로 처리하도록 구성된 적어도 일부의 언어-독립적 실행가능 코드 파일들을 포함하여, 그 실행가능 코드의 적어도 일부는 언어-특정 처리(language-specific processing)에 독립적임 -;
    상기 자기-기술적 패키지에 대한 파일 내용들을 특정하는 구성 매니페스트 파일들을 생성하는 구성 매니페스트 파일 생성 처리 수단;
    상기 모바일 컴퓨팅 시스템에 대한 종속성 정보 및 패키지 설정의 우선 순위 정보를 포함하는, 상기 패키지에 관한 정보의 집합을 기술하는 디바이스 매니페스트 파일들을 생성하는 디바이스 매니페스트 파일 생성 처리 수단 - 상기 디바이스 매니페스트 파일들은 상기 자기-기술적 패키지에 저장되어 있고 상기 구성 매니페스트 파일들로부터 리스트 및 속성 정보를 수신하도록 구성되어 있음 -;
    하나 이상의 특징 핸들을 상기 생성된 디바이스 매니페스트 파일들에 삽입하는 특징 핸들 삽입 처리 수단 - 상기 특징 핸들은 상기 패키지에 포함되어야 할 하나 이상의 소프트웨어 특징을 특정하며, 상기 소프트웨어 특징들을 포함하고 이 특징과 맵핑되는 개개의 파일들, 레지스트리 설정들, 및 라이브러리들이 상기 디바이스 매니페스트 파일들 내에 자동으로 포함되도록 하며, 개개의 특징 맵핑은 생략됨 -;
    상기 패키지의 내용을 기술하기 위하여, 상기 패키지 매니페스트 파일들, 상기 구성 매니페스트 파일들, 및 상기 삽입된 특징 핸들을 포함하는 상기 디바이스 매니페스트 파일들 내의 정보를 상기 자기-기술적 패키지와 결합하는 패키지 결합 처리 수단 - 상기 정보는 컴포넌트 관계 정보를 포함함 -; 및
    대응하는 매니페스트 파일들에 따라 상기 자기-기술적 패키지를 설치하는 설치 처리 수단 - 상기 자기-기술적 패키지 내에서 식별된 파일들만이 상기 소프트웨어 이미지에 덮어쓰기됨 -
    을 포함하는, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하기 위한 시스템.
  23. 제22항에 있어서,
    상기 컴포넌트 관계 정보는 다른 엔티티에 대한 종속성을 기술하는, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하기 위한 시스템.
  24. 제23항에 있어서,
    상기 다른 엔티티는 다른 패키지인, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하기 위한 시스템.
  25. 제22항에 있어서,
    상기 컴포넌트 관계 정보는 다른 엔티티와의 섀도우 관계를 기술하는, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하기 위한 시스템.
  26. 제25항에 있어서,
    상기 다른 엔티티는 다른 패키지인, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하기 위한 시스템.
  27. 제22항에 있어서,
    상기 패키지 생성 처리 수단은 어느 파일들이 실행가능 파일들인지를 결정하고 상기 실행가능 파일에 대해 재배치 처리를 수행하는, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하기 위한 시스템.
  28. 제22항에 있어서,
    상기 패키지 생성 처리 수단은 적어도 일부의 실행가능 코드와 데이터간의 구별을 허용함으로써, 상기 실행가능 코드의 적어도 일부가 임의의 언어에 독립적이 되도록 하는, 소프트웨어 이미지 내의 파일들의 일부를 업데이트하기 위한 시스템.
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
KR1020040107318A 2003-12-16 2004-12-16 자기 기술적 소프트웨어 이미지 업데이트 컴포넌트 KR101143027B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US53012903P 2003-12-16 2003-12-16
US60/530,129 2003-12-16
US10/837,024 2004-05-01
US10/837,024 US7549148B2 (en) 2003-12-16 2004-05-01 Self-describing software image update components

Publications (2)

Publication Number Publication Date
KR20050061380A KR20050061380A (ko) 2005-06-22
KR101143027B1 true KR101143027B1 (ko) 2012-05-24

Family

ID=34556577

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040107318A KR101143027B1 (ko) 2003-12-16 2004-12-16 자기 기술적 소프트웨어 이미지 업데이트 컴포넌트

Country Status (5)

Country Link
US (1) US7549148B2 (ko)
EP (1) EP1548587A3 (ko)
JP (1) JP5208350B2 (ko)
KR (1) KR101143027B1 (ko)
CN (1) CN1641583B (ko)

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050132357A1 (en) * 2003-12-16 2005-06-16 Microsoft Corporation Ensuring that a software update may be installed or run only on a specific device or class of devices
US7568195B2 (en) * 2003-12-16 2009-07-28 Microsoft Corporation Determining a maximal set of dependent software updates valid for installation
US7549042B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US7614051B2 (en) * 2003-12-16 2009-11-03 Microsoft Corporation Creating file systems within a file in a storage technology-abstracted manner
JP4479324B2 (ja) * 2004-04-19 2010-06-09 コニカミノルタビジネステクノロジーズ株式会社 情報処理装置
US7853742B2 (en) * 2004-04-26 2010-12-14 Intel Corporation System and method to conditionally shrink an executable module
US7661102B2 (en) * 2004-08-20 2010-02-09 Smith Micro Software, Inc. Method for reducing binary image update package sizes
US20060288055A1 (en) * 2005-06-08 2006-12-21 Johnson Michael K Methods, systems, and computer program products for provisioning software via a networked file repository in which a parent branch has a shadow associated therewith
US8255363B2 (en) * 2005-06-08 2012-08-28 rPath Methods, systems, and computer program products for provisioning software using dynamic tags to identify and process files
US8255362B2 (en) * 2005-06-08 2012-08-28 rPath Methods, systems, and computer program products for provisioning software using local changesets that represent differences between software on a repository and a local system
US8490082B2 (en) * 2005-11-03 2013-07-16 International Business Machines Corporation System and method for representing user processes as software packages in a software package management system
US8869142B2 (en) * 2006-01-27 2014-10-21 Microsoft Corporation Secure content publishing and distribution
KR100772399B1 (ko) * 2006-02-28 2007-11-01 삼성전자주식회사 패치 파일 생성 방법 및 그 방법을 수행하는 프로그램을기록한 컴퓨터 판독 가능한 기록매체
US8452981B1 (en) * 2006-03-01 2013-05-28 Nvidia Corporation Method for author verification and software authorization
US7971182B1 (en) * 2006-05-09 2011-06-28 Vmware, Inc. Application environment specifications for provisioning application specific runtime environments using undefined symbols
US7779401B2 (en) * 2006-06-26 2010-08-17 Research In Motion Limited Method and system for generating a reverse binary patch for undoing a software update
US7567984B1 (en) * 2006-08-31 2009-07-28 Symantec Operating Corporation Operating system and application deployment based on stored user state and organizational policy
KR100810358B1 (ko) * 2007-01-30 2008-03-04 삼성전자주식회사 컨테이너의 무결성을 확인하는 방법 및 그 dvb―h 단말
US8577937B1 (en) 2007-05-09 2013-11-05 Vmware, Inc. Repository including exclusion list
US8219987B1 (en) 2007-08-24 2012-07-10 Vmware, Inc. Optimized virtual machine specification for provisioning application specific runtime environment
US9015180B1 (en) 2007-05-09 2015-04-21 Vmware, Inc. Repository including file identification
US11262996B2 (en) 2007-05-09 2022-03-01 Vmware, Inc. Repository including exclusion list
US8347263B1 (en) * 2007-05-09 2013-01-01 Vmware, Inc. Repository including installation metadata for executable applications
US8146076B1 (en) * 2007-09-17 2012-03-27 Symantec Corporation Systems and methods for customizing boot disk images using prioritization
US20090106730A1 (en) * 2007-10-23 2009-04-23 Microsoft Corporation Predictive cost based scheduling in a distributed software build
US8335682B2 (en) * 2007-10-30 2012-12-18 Sercomm Corporation Multi-language interfaces switch system and method therefor
US8291402B2 (en) * 2007-11-29 2012-10-16 Red Hat, Inc. Using system fingerprints to accelerate package dependency resolution
US9424323B2 (en) * 2008-01-31 2016-08-23 Oracle International Corporation Application tier data dictionary
GB0820427D0 (en) * 2008-11-07 2008-12-17 Inq Entpr Ltd Mobile communication device and method
US8170706B2 (en) * 2009-02-27 2012-05-01 Xerox Corporation Package generation system
US20130167136A1 (en) * 2009-03-18 2013-06-27 Adobe Systems Incorporated Component-based installation
WO2011014623A1 (en) * 2009-07-29 2011-02-03 Reversinglabs Corporation Portable executable file analysis
US9703550B1 (en) * 2009-09-29 2017-07-11 EMC IP Holding Company LLC Techniques for building code entities
US20110119570A1 (en) * 2009-11-18 2011-05-19 Xerox Corporation Automated variable dimension digital document advisor
CN101834885A (zh) * 2010-03-10 2010-09-15 华为技术有限公司 一种软件下载方法和装置
US8533701B2 (en) * 2010-03-15 2013-09-10 Microsoft Corporation Virtual machine image update service
US8495614B2 (en) * 2010-05-28 2013-07-23 Red Hat, Inc. Mechanism for dynamically generating spec files for software package managers
US8732690B1 (en) * 2011-10-27 2014-05-20 Crimson Corporation Computing device configured for installing an application
US8984502B2 (en) * 2011-10-28 2015-03-17 Hewlett-Packard Development Company, L.P. Systems and methods for composing or decomposing a composite image for firmware update images
US8825722B2 (en) * 2012-01-13 2014-09-02 Microsoft Corporation Calculation of properties of objects/shapes across versions of applications
US8757479B2 (en) 2012-07-31 2014-06-24 Xerox Corporation Method and system for creating personalized packaging
WO2014165538A2 (en) 2013-04-01 2014-10-09 Nebula, Inc. Update management for a distributed computing system
US9760659B2 (en) 2014-01-30 2017-09-12 Xerox Corporation Package definition system with non-symmetric functional elements as a function of package edge property
US9892212B2 (en) 2014-05-19 2018-02-13 Xerox Corporation Creation of variable cut files for package design
US9996339B2 (en) * 2014-06-04 2018-06-12 Microsoft Technology Licensing, Llc Enhanced updating for digital content
DE102014216464A1 (de) * 2014-08-19 2016-02-25 Continental Automotive Gmbh Vorrichtung und Verfahren zur Computerprogramminstallation für ein Kraftfahrzeug
US20160139909A1 (en) * 2014-11-13 2016-05-19 Martin Pospischil Delta patch process
CN104657184B (zh) * 2015-03-11 2018-09-28 成都广达新网科技股份有限公司 一种文件对应多嵌入式设备的升级方法
US9916401B2 (en) 2015-05-18 2018-03-13 Xerox Corporation Creation of cut files for personalized package design using multiple substrates
US9916402B2 (en) 2015-05-18 2018-03-13 Xerox Corporation Creation of cut files to fit a large package flat on one or more substrates
EP3179688A1 (en) * 2015-12-11 2017-06-14 Koninklijke KPN N.V. Updating part of a manifest file on the basis of patches
US10503486B2 (en) * 2016-12-09 2019-12-10 Vmware, Inc. Methods and apparatus to reduce application deployments sizes
US10402192B2 (en) 2017-07-25 2019-09-03 Aurora Labs Ltd. Constructing software delta updates for vehicle ECU software and abnormality detection based on toolchain
CN107608710B (zh) * 2017-08-31 2021-08-31 华为技术有限公司 基于Jenkins工具的软件项目构建任务配置方法及装置
US11269606B2 (en) * 2017-12-13 2022-03-08 Absolute Software Corporation Firmware publication of multiple binary images
US10360017B1 (en) * 2018-01-02 2019-07-23 Microsoft Technology Licensing, Llc Updating program packages at distribution endpoint
US20190265959A1 (en) * 2018-02-23 2019-08-29 Microsoft Technology Licensing, Llc Automatically synchronizing the install and build directories of a software application
US20190384585A1 (en) * 2018-06-14 2019-12-19 Microsoft Technology Licensing, Llc Modification package
US20210349708A1 (en) * 2020-05-05 2021-11-11 Caterpillar Inc. System and method involving multiple software targets packaged into one file

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835777A (en) 1996-03-20 1998-11-10 Hewlett-Packard Company Method of automatically generating a software installation package
KR20000041146A (ko) * 1998-12-21 2000-07-15 구자홍 네트워크 컴퓨터의 소프트웨어 업데이트 방법
US20010029605A1 (en) 1998-06-19 2001-10-11 Jonathan A. Forbes Software package management

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4974149A (en) * 1985-08-02 1990-11-27 Wang Laboratories, Inc. Data distribution apparatus and method having a data description including information for specifying a time that a data distribution is to occur
US5303384A (en) 1990-01-02 1994-04-12 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration High level language-based robotic control system
US5421006A (en) 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US6157721A (en) 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US5625693A (en) 1995-07-07 1997-04-29 Thomson Consumer Electronics, Inc. Apparatus and method for authenticating transmitting applications in an interactive TV system
US5757914A (en) 1995-10-26 1998-05-26 Sun Microsystems, Inc. System and method for protecting use of dynamically linked executable modules
US5721824A (en) 1996-04-19 1998-02-24 Sun Microsystems, Inc. Multiple-package installation with package dependencies
WO1999026123A1 (en) 1997-11-18 1999-05-27 Christopher Benjamin Wakely Improvements relating to software protection systems
US7503072B2 (en) 1998-04-29 2009-03-10 Microsoft Corporation Hardware ID to prevent software piracy
US6243468B1 (en) 1998-04-29 2001-06-05 Microsoft Corporation Software anti-piracy system that adapts to hardware upgrades
US6330670B1 (en) 1998-10-26 2001-12-11 Microsoft Corporation Digital rights management operating system
US6327652B1 (en) 1998-10-26 2001-12-04 Microsoft Corporation Loading and identifying a digital rights management operating system
US6802006B1 (en) 1999-01-15 2004-10-05 Macrovision Corporation System and method of verifying the authenticity of dynamically connectable executable images
US6697948B1 (en) 1999-05-05 2004-02-24 Michael O. Rabin Methods and apparatus for protecting information
JP3852538B2 (ja) 1999-05-14 2006-11-29 富士通株式会社 コンピュータシステム、コンピュータネットワークシステム、コンピュータ及び記録媒体
US6675382B1 (en) 1999-06-14 2004-01-06 Sun Microsystems, Inc. Software packaging and distribution system
US6324692B1 (en) 1999-07-28 2001-11-27 Data General Corporation Upgrade of a program
JP2001142683A (ja) * 1999-11-16 2001-05-25 Oki Electric Ind Co Ltd プログラム更新媒体の作成方法及び更新プログラムのインストール方法
EP1238334A1 (en) 1999-12-15 2002-09-11 Sun Microsystems, Inc. Preparation of a software configuration using an xml type programming language
US6871344B2 (en) * 2000-04-24 2005-03-22 Microsoft Corporation Configurations for binding software assemblies to application programs
US7140013B2 (en) 2000-06-01 2006-11-21 Aduva, Inc. Component upgrading with dependency conflict resolution, knowledge based and rules
DE10028500A1 (de) 2000-06-08 2002-01-03 Deutsche Telekom Ag Verfahren zur Installation von Software in einer Hardware
DE60140644D1 (de) * 2000-06-13 2010-01-14 Microsoft Corp Mehrspachige Benutzerschnittstelle für ein Betriebssystem
US7000230B1 (en) * 2000-06-21 2006-02-14 Microsoft Corporation Network-based software extensions
US7117371B1 (en) 2000-06-28 2006-10-03 Microsoft Corporation Shared names
DE10037397A1 (de) 2000-08-01 2002-02-14 Daimler Chrysler Ag Verfahren zum Laden von Software
US6832373B2 (en) * 2000-11-17 2004-12-14 Bitfone Corporation System and method for updating and distributing information
US6912591B2 (en) 2001-05-02 2005-06-28 Science Application International Corporation System and method for patch enabled data transmissions
FI114416B (fi) 2001-06-15 2004-10-15 Nokia Corp Menetelmä elektroniikkalaitteen varmistamiseksi, varmistusjärjestelmä ja elektroniikkalaite
US6947052B2 (en) * 2001-07-13 2005-09-20 Texas Instruments Incorporated Visual program memory hierarchy optimization
US8200988B2 (en) 2001-08-03 2012-06-12 Intel Corporation Firmware security key upgrade algorithm
US20030063896A1 (en) 2001-09-28 2003-04-03 Gonzalez Tovar Victor Manuel System utility interface for software upgrades and system diagnostics in automotive or portable DVD players
US20030217358A1 (en) 2002-05-17 2003-11-20 Sun Microsystems, Inc. Method, system, and article of manufacture for firmware downloads
US8447963B2 (en) 2002-06-12 2013-05-21 Bladelogic Inc. Method and system for simplifying distributed server management
US20040060035A1 (en) * 2002-09-24 2004-03-25 Eric Ustaris Automated method and system for building, deploying and installing software resources across multiple computer systems
US7085957B2 (en) 2002-11-21 2006-08-01 Texas Instruments Incorporated Upgrading of firmware with tolerance to failures
US7228541B2 (en) * 2003-01-17 2007-06-05 National Instruments Corporation Creation of application system installer
US7478385B2 (en) * 2003-01-17 2009-01-13 National Instruments Corporation Installing software using programmatic component dependency analysis
WO2004073332A1 (en) 2003-02-11 2004-08-26 Unisys Corporation Method and apparatus for updating a control file
US7072807B2 (en) * 2003-03-06 2006-07-04 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7117304B2 (en) 2003-06-03 2006-10-03 Sun Microsystems, Inc. System and method for determining a file system layout
US7644404B2 (en) 2003-06-04 2010-01-05 Hewlett-Packard Development Company, L.P. Network having customizable generators and electronic device having customizable updating software
US7478381B2 (en) * 2003-12-15 2009-01-13 Microsoft Corporation Managing software updates and a software distribution service
US7549042B2 (en) 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US7614051B2 (en) 2003-12-16 2009-11-03 Microsoft Corporation Creating file systems within a file in a storage technology-abstracted manner
US7568195B2 (en) 2003-12-16 2009-07-28 Microsoft Corporation Determining a maximal set of dependent software updates valid for installation
US7765592B2 (en) * 2004-01-10 2010-07-27 Microsoft Corporation Changed file identification, software conflict resolution and unwanted file removal
US7853609B2 (en) * 2004-03-12 2010-12-14 Microsoft Corporation Update distribution system architecture and method for distributing software

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835777A (en) 1996-03-20 1998-11-10 Hewlett-Packard Company Method of automatically generating a software installation package
US20010029605A1 (en) 1998-06-19 2001-10-11 Jonathan A. Forbes Software package management
US20020144248A1 (en) 1998-06-19 2002-10-03 Microsoft Corporation Software package management
KR20000041146A (ko) * 1998-12-21 2000-07-15 구자홍 네트워크 컴퓨터의 소프트웨어 업데이트 방법

Also Published As

Publication number Publication date
EP1548587A2 (en) 2005-06-29
JP5208350B2 (ja) 2013-06-12
CN1641583A (zh) 2005-07-20
CN1641583B (zh) 2010-09-29
KR20050061380A (ko) 2005-06-22
JP2005182790A (ja) 2005-07-07
EP1548587A3 (en) 2007-11-07
US20050132356A1 (en) 2005-06-16
US7549148B2 (en) 2009-06-16

Similar Documents

Publication Publication Date Title
KR101143027B1 (ko) 자기 기술적 소프트웨어 이미지 업데이트 컴포넌트
US9569286B2 (en) Method and system for improving startup performance and interoperability of a virtual application
US7614051B2 (en) Creating file systems within a file in a storage technology-abstracted manner
US7568195B2 (en) Determining a maximal set of dependent software updates valid for installation
KR101104035B1 (ko) 자원 매니페스트
US6609248B1 (en) Cross module representation of heterogeneous programs
CN100559346C (zh) 用于实例化抽象类的系统和方法
US7584462B2 (en) System for optimizing application start-up
US7305376B2 (en) Multiple language-dependent resources compacted into a single resource file
CN101002174B (zh) 在便携式装置中加载具有面向对象的中间语言的软件的方法
CN108139896A (zh) 扩展虚拟机指令集体系架构
JP2000047874A (ja) プレロ―ドクラスのフットプリント低減装置及び方法
US20090260000A1 (en) Method, apparatus, and manufacture for software difference comparison
US20040123286A1 (en) Method for integrating Linux kernel and application software packages and generating installation file list based on CML2 computer language
KR101615295B1 (ko) 클래스 파일 내에 네이티브 코드를 임베드시킴으로써 가상 머신에서의 플랫폼 의존성 루틴의 적용
US20080141219A1 (en) Multiple inheritance facility for java script language
CN115237805A (zh) 测试案例数据准备方法及装置
US20050081189A1 (en) Aggregation of document elements into runtime code
CN115794214B (zh) 应用模块元数据管理方法、设备、存储介质及装置
CN107577476A (zh) 一种基于模块划分的安卓系统源码差异性分析方法、服务器及介质
CN112148746A (zh) 生成数据库表结构文档的方法、装置、电子装置和存储介质
JP2005251045A (ja) 情報処理装置及び格納位置管理方法及びプログラム
CN117111998A (zh) 一种按需加载模块化前端代码的方法
CN115756487A (zh) 目标类型变量查找方法、电子设备及存储介质
KR20050016256A (ko) 저장 기술-추출 방식으로 파일 내에 파일 시스템 생성하기

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee