KR20160013883A - 번들 패키지 서명 기법 - Google Patents

번들 패키지 서명 기법 Download PDF

Info

Publication number
KR20160013883A
KR20160013883A KR1020157034009A KR20157034009A KR20160013883A KR 20160013883 A KR20160013883 A KR 20160013883A KR 1020157034009 A KR1020157034009 A KR 1020157034009A KR 20157034009 A KR20157034009 A KR 20157034009A KR 20160013883 A KR20160013883 A KR 20160013883A
Authority
KR
South Korea
Prior art keywords
package
resource
bundle
app
signed
Prior art date
Application number
KR1020157034009A
Other languages
English (en)
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 KR20160013883A publication Critical patent/KR20160013883A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Storage Device Security (AREA)
  • Packages (AREA)

Abstract

번들 패키지를 생성하는 것, 번들 패키지를 디지털로 서명하는 것, 번들 패키지를 선택적으로 교란시키는 것 및/또는 번들 패키지로부터 인출되는 하나 이상의 리소스 패키지를 인덱싱하는 것을 위한 하나 이상의 기법 및/또는 시스템이 제공된다. 즉, 번들 패키지(가령, 애플리케이션 또는 게임 번들 패키지)는 다양한 컴퓨팅 환경(가령, 운영 체제, 프로세서 등등) 상에서 실행되도록 구성된 애플리케이션 코드를 포함하는 하나 이상의 앱 패키지를 포함한다. 번들 패키지는 애플리케이션을 위한 수의적 사용자 경험 기능성(가령, 프랑스어 지원, 고해상도 텍스처, 게이밍 패드 지원 등등)을 제공하기 위해 사용되는 부가 데이터를 포함하는 하나 이상의 리소스 패키지를 포함할 수 있다. 이런 방식으로, 클라이언트 디바이스는 관련될 수 있는 번들 패키지의 부분을 선택적으로 다운로드할 수 있는데, 이는 그렇지 않다면 번들 패키지의 불필요한 부분을 획득하기 위해 사용되는 다운로드 대역폭, 저장 공간 또는 리소스를 경감시킬 수 있다(가령, 태블릿 디바이스는 저해상도 텍스처를 다운로드할 뿐일 수 있음).

Description

번들 패키지 서명 기법{BUNDLE PACKAGE SIGNING}
많은 사용자가 이메일을 점검하기, 비디오 게임을 플레이하기(playing), 사진을 공유하기, 소셜 네트워크를 통해 소통하기, 은행 업무(banking) 및/또는 허다한 다른 활동과 같은 다양한 활동을 수행하기 위해 애플리케이션을 이용한다. 사용자는 다양한 디바이스 및/또는 컴퓨팅 환경을 통해 그러한 애플리케이션을 실행할 수 있기 때문에, 애플리케이션 개발자는 다수의 프로세서, 운영 체제, 언어, 디스플레이 스케일, 해상도, 그래픽 카드 등등을 지원하는 애플리케이션 배치 패키지(application deployment package)를 제작할 수 있다. 그러므로, 애플리케이션 배치 패키지는 특정한 디바이스 또는 컴퓨팅 환경에 의해 전부가 사용되지는 않을 수 있는 상대적으로 많은 양의 데이터를 포함할 수 있다. 예를 들어, 사용자는 드로잉 애플리케이션(drawing application)을 앱 마켓플레이스(app marketplace)로부터 태블릿 디바이스(tablet device) 상으로 다운로드할 수 있다. 드로잉 애플리케이션은 태블릿 디바이스와 잘 작동할 수 있는 중간해상도(medium resolution) 텍스처를 포함할 수 있으나, 더 작은 스마트 폰용의 저해상도(low resolution) 텍스처 및 개인용 컴퓨터용의 고해상도(high resolution) 텍스처를 포함할 수도 있다. 드로잉 애플리케이션은 10개 언어를 위한 지원을 포함할 수 있다. 태블릿 디바이스는 사용자에 의해 사용되는 언어와 중간해상도 텍스처를 이용할 수 있으나, 저해상도 텍스처, 고해상도 텍스처 및 다른 9개의 언어는 이용하지 않을 수 있다. 드로잉 애플리케이션의 그러한 사용되지 않는 특징은 태블릿 디바이스 상에서의 드로잉 애플리케이션의 다운로드, 배치 및 실행 동안에 다운로드 대역폭, 저장 공간 및 컴퓨팅 리소스를 불필요하게 소모할 수 있다.
이 개요는 상세한 설명에서 추가로 후술되는 개념 중 선택된 것을 단순화된 형태로 소개하기 위해 제공된다. 이 개요는 청구된 대상(claimed subject matter)의 중요 인자 또는 필수적 특징을 식별하기 위해 의도된 것이 아니고, 청구된 대상의 범주를 한정하기 위해 사용되도록 의도된 것도 아니다.
무엇보다도, 애플리케이션을 위한 번들 패키지(bundle package)를 생성하는 것, 번들 패키지를 디지털로(digitally) 서명하는 것, 번들 패키지의 부분을 선택적으로 인출하는 것(retrieving), 애플리케이션과 연관된 리소스 패키지를 인덱싱하는 것(indexing), 그리고 게임을 위한 게임 번들 패키지를 배포하고 설치하는 것을 위한 하나 이상의 시스템 및/또는 기법이 본 문서에서 제공된다.
애플리케이션을 위한 번들 패키지를 생성하는 몇몇 실시예에서, 애플리케이션을 위한 번들 패키지 내에 포함하기 위한 하나 이상의 앱 패키지(app package)가 식별될 수 있다. 제1 앱 패키지는 특정한 컴퓨터 아키텍처(computer architecture)(가령, 제1 프로세서 아키텍처, 제2의 상이한 프로세서 아키텍처 등등) 및/또는 특정한 운영 체제(operating system)(가령, 태블릿 운영 체제, 데스크톱 운영 체제, 클라우드 기반 운영 체제 등등)와 같은 제1 컴퓨팅 환경 상에서 실행되도록 구성된 제1 애플리케이션 코드(application code)(가령, 실행가능한 바이너리 파일(executable binary file))를 포함할 수 있다. 번들 패키지 내에 포함될 하나 이상의 리소스 패키지(resource package)가 식별될 수 있다. 리소스 패키지는 애플리케이션을 위한 수의적 사용자 경험 기능성(optional user experience functionality)을 포함할 수 있다(가령, 해상도 텍스처 데이터(resolution texture data), 언어 데이터, DirectX®와 같은 멀티미디어 애플리케이션 프로그램 인터페이스(Application Program Interface: API) 버전 데이터, 지역 관련 데이터(region related data)(현대 리소스 기술(Modern Resource Technology: MRT)에 의해 로드될(loaded) 수 있음) 및/또는 임의의 다른 리소스, 데이터 등등(사용자의 경험 등등을 맞추는 것(tailoring)을 가능하게 하기 위해 사용될 수 있음)). 예를 들어, 제1 리소스 패키지는 애플리케이션을 위한 제1 사용자 경험 기능성을 제공하기 위해 사용되는 제1 부가 데이터(supplemental data)를 포함할 수 있다. 번들 패키지는 하나 이상의 앱 패키지 및 하나 이상의 리소스 패키지를 포함하도록 생성될 수 있다. 이런 방식으로, 앱 패키지 및/또는 하나 이상의 리소스 패키지가 애플리케이션의 설치를 위해 선택적으로 다운로드될 수 있다(가령, 태블릿 디바이스는 제1 프로세서 아키텍처 앱 패키지 및 중간해상도 텍스처 리소스 패키지를 다운로드할 수 있음).
번들 패키지를 디지털로 서명하는 몇몇 실시예에서, 애플리케이션과 연관된 번들 패키지를 위해 제1 디지털 시그니처 동작(digital signature operation)이 수행된다. 번들 패키지는 제1 앱 패키지 및 제1 리소스 패키지를 포함한다. 일례에서, 번들 패키지는 하나 이상의 앱 패키지 및/또는 하나 이상의 리소스 패키지를 포함한다. 디지털 시그니처 동작은 제1 앱 패키지, 제1 리소스 패키지 및 번들 패키지를 디지털로 서명하기 위해 수행될(가령, 단일 디지털 서명 인증서(digital signing certificate)를 사용하는 단일 서명 동작으로서 수행될) 수 있다. 예를 들어, 제1 앱 패키지는 디지털 서명 인증서를 이용하여 제1 앱 패키지 시그니처(app package signature)로써 서명되고, 제1 리소스 패키지는 디지털 서명 인증서를 이용하여 제1 리소스 패키지 시그니처(resource package signature)로써 서명되며, 번들 패키지는 디지털 서명 인증서를 이용하여 번들 패키지 시그니처(bundle package signature)로써 서명된다. 디지털 시그니처 동작은 동일한 디지털 서명 인증서를 사용하여(가령, 그리고/또는 단일 서명 동작을 통해) 제1 앱 패키지, 제1 리소스 패키지 및 번들 패키지를 서명하기 때문에, 시그니처 속성의 세트(set)가 제1 앱 패키지 시그니처, 제1 리소스 패키지 시그니처 및/또는 번들 패키지 시그니처에 의해 공유될 수 있다(가령, 디지털 서명 인증서 소유자, 인가의 연쇄 인증(chain certification of authority), 키 사용(key usage), 시그니처 유효화 일자(signature validate date), 암호화 강도(encryption strength) 및/또는 타임스탬프(timestamp)). 이런 방식으로, 번들 패키지 및/또는 이의 부분은 클라이언트 디바이스에 의해 선택적으로 및/또는 별개로 다운로드되고, 공유된 시그니처 속성에 기반하여 효율적인 방식으로 클라이언트 디바이스에 의해 확증될(authenticated) 수 있다.
애플리케이션과 연관된 번들 패키지의 부분을 선택적으로 인출하는 몇몇 실시예에서, 설치를 위한 애플리케이션과 연관된 번들 패키지가 식별될 수 있다. 예를 들어, 번들 패키지는 앱 마켓플레이스를 통해 다운로드를 위해 이용가능한 사진 공유 적용가능한 것과 연관될 수 있다. 애플리케이션이 클라이언트 디바이스 상에서 실행되기 위한 적용가능성 콘텍스트(applicability context)가 판정될 수 있다. 예를 들어, 적용가능성 콘텍스트는 클라이언트 디바이스를 위한 해상도, 스크린 스케일(screen scale), 관심 언어의 세트, 멀티미디어 API 특징 세트, 그래픽 처리 유닛(Graphics Processing Unit: GPU), 또는 다른 사용자 경험 콘텍스트(user experience context)를 지정할 수 있다(가령, 독일어를 말하는 사용자의 스마트 폰을 위한 적용가능성 콘텍스트는 영어를 말하는 사용자의 데스크톱을 위한 적용가능성 콘텍스트와는 언어, 하드웨어 능력, 디스플레이 능력 등등을 기반으로 상이할 수 있음). 제1 앱 패키지는 제1 앱 패키지가 적용가능성 콘텍스트에 의해 지정된 컴퓨팅 환경 콘텍스트(가령, 프로세서 아키텍처, 운영 체제 유형 등등)에 대응하는 애플리케이션 코드를 포함하는 것에 기반하여 번들 패키지로부터 선택적으로 인출될 수 있다. 적용가능성 콘텍스트가 번들 패키지의 리소스 패키지의 세트 내의 제1 리소스 패키지에 대응하는 것에 응답하여, 제1 리소스 패키지는 번들 패키지로부터 선택적으로 인출될 수 있다(가령, 독일어 리소스 패키지가 스마트 폰을 위해 인출될 수 있음). 이런 방식으로, 적용가능성 콘텍스트에 대응하는 하나 이상의 리소스 패키지가 선택적으로 인출될 수 있으나, 적용가능성 콘텍스트에 대응하지 않는 리소스 패키지는 인출되지 않는다(가령, 고해상도 게이밍(gaming) 텍스처는 스마트 폰을 위해 인출되지 않을 수 있는데, 이는 만약 인출된다면 불필요하게 다운로드 대역폭을 소모하고/하거나 스마트 폰에 의해 사용가능하지 않은 애플리케이션의 부분/특징의 저장을 요구할 수 있음).
클라이언트 디바이스 상의 애플리케이션을 위한 리소스 패키지를 인덱싱하는 몇몇 실시예에서, 클라이언트 디바이스 상에서 제1 리소스 패키지 및 제2 리소스 패키지가 식별된다. 일례에서, 제1 리소스 패키지 및 제2 리소스 패키지는 애플리케이션을 위해 선택적으로 및/또는 개별적으로 다운로드되었을 수 있고, 따라서 애플리케이션에 맞춤식 사용자 경험(tailored user experience)을 제공하기 위해 어떻게 제1 리소스 패키지 및 제2 리소스 패키지가 사용될 수 있는지를 지정하는 논리적 관계 없이 클라이언트 디바이스 상에 초기에 저장될 수 있다. 제1 리소스 패키지는 애플리케이션을 위한 제1 수의적 사용자 경험 기능성을 제공하기 위해 사용되는 제1 부가 데이터(가령, 소셜 네트워크 앱(social network app)에 독일어 사용자 인터페이스 경험을 제공하기 위해 사용되는 하나 이상의 독일어 텍스트 문자열(text string))를 포함한다. 제2 리소스 패키지는 애플리케이션을 위한 제2 수의적 사용자 경험 기능성을 제공하기 위해 사용되는 제2 부가 데이터(가령, 소셜 네트워크 앱을 위한 프랑스어 사용자 인터페이스 경험을 제공하기 위해 사용되는 하나 이상의 프랑스어 텍스트 문자열)를 포함한다.
제1 리소스 패키지를 위한 제1 리소스 인덱스(resource index)는 제1 리소스 데이터(가령, 하나 이상의 독일어 문자열) 및/또는 제1 리소스 적용가능성 데이터(가령, 독일어를 말하는 사용자를 위한 텍스트를 디스플레이하기 위해 독일어 데이터를 사용함)를 서술할 수 있다. 제2 리소스 패키지를 위한 제2 리소스 인덱스는 제2 리소스 데이터(가령, 하나 이상의 프랑스어 문자열) 및/또는 제2 리소스 적용가능성 데이터(가령, 프랑스어를 말하는 사용자를 위한 텍스트를 디스플레이하기 위해 프랑스어 데이터를 사용함)를 서술할 수 있다. 제1 리소스 인덱스 및 제2 리소스 인덱스는 병합된 리소스 인덱스(merged resource index)로 병합될 수 있다. 병합된 리소스 인덱스는 제1 리소스 패키지 및/또는 제2 리소스 패키지 내의 개별적인 리소스, 이를테면 독일어 텍스트 문자열 및/또는 프랑스어 텍스트 문자열을 서술할 수 있다. 병합된 리소스 인덱스는 애플리케이션의 실행을 위한 하나 이상의 리소스를 선택적으로 이용하기 위해 평가될 수 있다. 일례에서, 병합된 인덱스에 대한 참조(reference)가 소셜 네트워크 앱을 위한 앱 패키지 내에 생성될 수 있다. 앱 패키지를 사용하는 소셜 네트워크 앱의 실행 시에, 병합된 인덱스는 소셜 네트워크 앱을 실행하는 데에 어느 리소스가 이용가능하고/하거나 관련 있는지를 식별하기 위해 그 참조를 사용하여 참고될 수 있다(가령, 제1 리소스 패키지 내에서 독일어로 된 환영 메시지(welcome message) 텍스트 문자열은 독일어를 말하는 현재의 사용자를 위한 환영 메시지 윈도우에 대해 관련 있을 수 있음, 고대비(high contrast) 디스플레이 리소스 패키지 내의 고대비 사용자 인터페이스 요소는 현재의 디스플레이 설정이 고대비 모드로 설정된 경우 관련 있을 수 있음, 기타 등등).
게임 번들 패키지를 통하여 게임을 배포하는 몇몇 실시예에서, 게임을 위한 게임 번들 패키지가 생성될 수 있다. 게임 번들 패키지는 하나 이상의 코어 게임 패키지(core game package)를 포함할 수 있다. 제1 코어 게임 패키지는 제1 컴퓨팅 환경(가령, x86 프로세서) 상에서 실행되도록 구성된 게임 코드(가령, 실행가능한 바이너리 파일)를 포함한다. 게임 번들 패키지는 하나 이상의 리소스 게임 패키지를 포함할 수 있다. 제1 리소스 게임 패키지는 게임을 위한 제1 수의적 사용자 경험 기능성을 제공하기 위해 사용되는 제1 부가 하드웨어 인지 데이터(supplemental hardware-aware data)를 포함할 수 있다(가령, 디스플레이 품질의 텍스처 화상(texture imagery), 지형 데이터(terrain data), 캐릭터 기하구조(character geometry) 및/또는 특정한 다른 게임 시각화 데이터). 하나 이상의 코어 게임 패키지 및/또는 하나 이상의 리소스 게임 패키지는 게임의 선택적인 다운로드 및/또는 설치를 위해 노출될(exposed) 수 있다. 이런 방식으로, 클라이언트 디바이스는 클라이언트 디바이스 상에서 원하는 게이밍 경험을 제공할 수 있는 어떤 리소스 게임 패키지를 선택적으로 다운로드할 수 있다(가령, 태블릿 디바이스는 다운로드 대역폭 및/또는 저장 공간을 보존하기 위해 중간 품질 텍스처를 다운로드할 수 있는 반면, PC는 고품질 텍스처를 다운로드할 수 있음).
전술한 그리고 관련된 목표의 성취를 위하여, 이하의 설명 및 첨부된 도면은 어떤 설명적인 양상 및 구현을 개진한다. 이들은 하나 이상의 양상이 활용될 수 있는 다양한 방식 중 단지 몇 개를 나타낸다. 첨부된 도면과 함께 고려되는 경우 이하의 상세한 설명으로부터 개시의 다른 양상, 이점 및 신규한 특징이 명백하게 될 것이다.
도 1은 애플리케이션을 위한 번들 패키지를 생성하는 예시적인 방법을 도시하는 흐름도(flow diagram)이다.
도 2는 번들 패키지를 생성하기 위한 예시적인 시스템을 도시하는 컴포넌트 블록도(component block diagram)이다.
도 3은 리소스 패키지 제작 트랜잭션(resource package creation transaction)을 가능하게 하는 일례의 예시이다.
도 4는 번들 패키지의 부분을 선택적으로 배포하기 위한 예시적인 시스템을 도시하는 컴포넌트 블록도이다.
도 5는 번들 패키지를 디지털로 서명하는 예시적인 방법을 도시하는 흐름도이다.
도 6은 추출 기법을 이용하여 번들 패키지를 서명하기 위한 예시적인 시스템을 도시하는 컴포넌트 블록도이다.
도 7은 서명된 번들 패키지를 새로운 번들 패키지로부터 생성하기 위한 예시적인 시스템을 도시하는 컴포넌트 블록도이다.
도 8은 번들 패키지 내의 패키지를 제자리에서(in-place) 디지털로 서명하기 위한 예시적인 시스템을 도시하는 컴포넌트 블록도이다.
도 9는 서명된 번들 패키지 및/또는 그 내부의 서명된 패키지를 배포하기 위한 예시적인 시스템을 도시하는 컴포넌트 블록도이다.
도 10은 애플리케이션과 연관된 번들 패키지의 부분을 선택적으로 인출하는 예시적인 방법을 도시하는 흐름도이다.
도 11은 애플리케이션과 연관된 번들 패키지의 부분을 선택적으로 인출하기 위한 예시적인 시스템을 도시하는 컴포넌트 블록도이다.
도 12는 애플리케이션과 연관된 번들 패키지의 부분을 선택적으로 인출하기위한 예시적인 시스템을 도시하는 컴포넌트 블록도이다.
도 13은 클라이언트 디바이스 상의 애플리케이션을 위한 리소스 패키지를 인덱싱하는 예시적인 방법을 도시하는 흐름도이다.
도 14는 클라이언트 디바이스 상의 애플리케이션을 위한 리소스 패키지를 인덱싱하기 위한 예시적인 시스템을 도시하는 컴포넌트 블록도이다.
도 15는 병합된 인덱스를 애플리케이션의 실행 동안에 이용하기 위한 예시적인 시스템을 도시하는 컴포넌트 블록도이다.
도 16은 게임 번들 패키지를 통하여 게임을 배포하는 예시적인 방법을 도시하는 흐름도이다.
도 17은 게임 번들 패키지를 통하여 게임을 설치하는 예시적인 방법을 도시하는 흐름도이다.
도 18은 게임 번들 패키지를 통하여 게임을 배포하기 위한 예시적인 시스템을 도시하는 컴포넌트 블록도이다.
도 19는 본 문서에 개진된 조목 중 하나 이상을 구현화하도록 구성된 프로세서 실행가능 명령어(processor-executable instructions)가 포함될 수 있는 예시적인 컴퓨터 판독가능 매체(computer readable medium)의 예시이다.
도 20은 본 문서에 개진된 조목 중 하나 이상이 구현될 수 있는 예시적인 컴퓨팅 환경을 도시한다.
유사한 참조 번호가 일반적으로 유사한 구성요소를 시종일관 나타내도록 사용되는 도면을 참조하여 이제 청구된 대상이 기술된다. 이하의 서술에서, 설명의 목적으로, 청구된 대상의 이해를 제공하기 위해서 다수의 특정 세부사항이 개진된다. 그러나, 청구된 대상은 이들 특정 세부사항 없이 실시될 수 있음은 분명할 수 있다. 다른 사례에서, 청구된 대상을 기술하는 것을 수월하게 하기 위해서 구조 및 디바이스가 블록도 형태로 도시된다.
본 문서에서 제공되는 바와 같이 소프트웨어 컴포넌트, 이를테면 리소스 패키지, 앱 패키지 등등은, 중복이 거의 내지 전혀 없이, 최종 사용자 머신(end user machine)에 선택적으로 제공될 수 있으니, 최종 사용자 머신은 불필요한 소프트웨어 컴포넌트를 최종 사용자 머신이 다운로드, 저장 및/또는 설치할 필요 없이 그저 최종 사용자 머신에 의해 사용되는 소프트웨어 컴포넌트를 제공받는다. 예를 들어, 클라이언트 디바이스와 같은 최종 사용자 머신은 매우 다양한 소프트웨어 및/또는 하드웨어 특성을 포함할 수 있다(가령, 태블릿은 데스크톱 게이밍 디바이스와는 상이한 프로세서, 운영 체제, 그래픽 처리 유닛 및/또는 다양한 특성을 포함할 수 있음). 그러한 클라이언트 디바이스 상의 호감 가는 경험을 제공하기 위하여, 많은 앱은 각자의 클라이언트 디바이스를 위해 애플리케이션 자산(가령, 특정한 앱의 텍스처, 문자열, 이미지, 사용자 인터페이스 요소 및/또는 다른 소프트웨어 컴포넌트)을 맞춤화할(customize) 수 있다. 유감스럽게도, 이것은 개발자 및/또는 사용자에 대해 문제가 있을 수 있는데 개발자는 그러한 대단히 다양한 클라이언트 디바이스를 위해 별개의 설치 패키지들을 제작하는 데에 상당한 시간 및/또는 리소스를 써버릴 지도 모르기 때문이다. 대안적으로, 개발자는 애플리케이션 자산 전부를 포함하는 단일 설치 패키지를 제작할 수 있는데, 이는 숱하게 많은 애플리케이션 자산(단지 그 애플리케이션 자산의 (가령, 작은) 부분이 클라이언트 디바이스에 의해 이용됨)을 다운로드하고/하거나 저장하기 위해 사용자 및/또는 클라이언트 디바이스에 부담을 지울 수 있다.
이에 따라, 본 문서에서 제공되는 바와 같이, 앱의 각각의 애플리케이션 자산(가령, 리소스 패키지 및/또는 앱 패키지 내의 자산)에 대해, 개발자는 클라이언트 디바이스로의 다운로드를 위해 소프트웨어 컴포넌트를 선택(가령, 리소스 패키지 및/또는 앱 패키지를 선택적으로 다운로드)하는 데에 사용될 수 있는 클라이언트 디바이스의 특성을 식별할 수 있다. 일례에서, 앱 패키지는 클라이언트 디바이스 내의 CPU의 아키텍처(가령, x86, x64 등등)에 달려 있을 수 있는 앱 바이너리(binary)들 및/또는 실행가능물(executable)들을 포함할 수 있다. 다른 예에서, 그래픽 리소스 패키지는 클라이언트 디바이스 내의 그래픽 처리 유닛의 레벨 또는 세대(가령, DX9, DX10 또는 DX11)에 달려 있을 수 있는 텍스처(texture) 및/또는 쉐이더(shader) 애플리케이션 자산을 포함할 수 있다. 다른 예에서, 사용자 인터페이스 리소스 패키지는 클라이언트 디바이스의 디스플레이 해상도(가령, 96*1.0, *1.4, 또는 *1.8과 같은 모니터 DPI)에 달려 있을 수 있는 다이얼로그 박스 및/또는 다른 사용자 인터페이스 요소 자산을 포함할 수 있다. 다른 예에서, 텍스처 리소스 패키지는 클라이언트 디바이스의 언어에 달려 있을 수 있는 설명용(instructional) 자산을 포함할 수 있다.
개발자는 애플리케이션 자산을 제출할(submit) 수 있으며, 클라이언트 디바이스의 특성에 의해 애플리케이션 자산을 구분표시할(label) 수 있다. 소프트웨어 배포 시스템은 클라이언트 디바이스에 의한 인출을 위해 개발자로부터의 그러한 정보를 실을(on-board) 수 있다. 클라이언트 디바이스 상에서 설치가 일어나는 경우, 클라이언트 디바이스의 디바이스 특성이 식별된다. 설치기(installer)는 클라이언트 디바이스의 디바이스 특성과 매칭되는 (가령, 하나 이상의 리소스 패키지 내에 포함된) 애플리케이션 자산의 세트를 설치할 수 있고, 매칭되지 않는 애플리케이션 자산을 설치하는 것을 삼갈(refrain) 수 있다. 이런 방식으로, 개발자는 단지 클라이언트 디바이스에 의한 설치를 위해 한 번 애플리케이션 자산을 제공할 수 있고, 사용자는 단지 클라이언트 디바이스에 의해 사용될 애플리케이션 자산을 클라이언트 디바이스 상에 다운로드하고/하거나 설치할 수 있다.
애플리케이션을 위한 번들 패키지를 생성하는 일 실시예가 도 1의 예시적인 방법(100)에 의해 도시된다. 102에서, 그 방법은 시작한다. 104에서, 하나 이상의 앱 패키지가 애플리케이션을 위한 번들 패키지 내에의 포함을 위해 식별될 수 있다. 예를 들어, 제1 앱 패키지는 제1 컴퓨팅 환경(가령, 제1 프로세서 유형, 태블릿 운영 체제 등등) 상에서 실행되도록 구성된 제1 애플리케이션 코드를 포함할 수 있음, 제2 컴퓨팅 환경(가령, 제2 프로세서 유형, 데스크톱 운영 체제 등등) 상에서 실행되도록 구성된 제2 애플리케이션 코드를 포함할 수 있음 등등이다. 이런 방식으로, 애플리케이션은 하나 이상의 앱 패키지에 기반하여 컴퓨터 아키텍처 또는 운영 체제와 같은 다양한 컴퓨팅 환경을 지원할 수 있다. 일례에서, 앱 패키지는 클라이언트 디바이스 상에서 애플리케이션의 코어 버전(core version)을 구동하도록(run) 실행될 수 있는 실행가능한 바이너리 파일을 포함할 수 있다. 애플리케이션은 애플리케이션을 위한 매우 다양한 수의적 사용자 경험 기능성을 지원할 수 있기 때문에, 그러한 기능성은 하나 이상의 앱 패키지로부터 분리될 수 있으며, 애플리케이션 코드와 별개인 선택적(selective) 및/또는 수의적(optional) 다운로드를 위해 노출될 수 있다. 이런 방식으로, 클라이언트 디바이스는 단지 클라이언트 디바이스 또는 클라이언트 디바이스의 사용자와 관련 있을 수 있는 수의적인 기능성(가령, 사용자의 특정한 언어에 대한 지원, 게이밍 디바이스를 위한 고해상도 텍스처, 태블릿 디바이스를 위한 저해상도 텍스처 등등)을 다운로드할 수 있다. 이에 따라, 그러한 수의적 사용자 경험 기능성은 리소스 패키지를 통해 제공될 수 있다.
106에서, 하나 이상의 리소스 패키지가 번들 패키지 내에의 포함을 위해 식별될 수 있다. 예를 들어, 제1 리소스 패키지는 애플리케이션을 위한 제1 수의적 사용자 경험 기능성을 제공하기 위해 사용되는 제1 부가 데이터(가령, 텍스쳐 데이터, 아이콘 데이터, 특정한 언어로 된 문자열, 멀티미디어 API 기능성, 특정한 해상도로 된 이미지 등등)를 포함할 수 있음, 제2 리소스 패키지는 애플리케이션을 위한 제2 수의적 사용자 경험 기능성을 제공하기 위해 사용되는 제2 부가 데이터를 포함할 수 있음 등등이다. 리소스 패키지는 본 문서에 제공된 예에 한정되지 않는다는 점, 그리고 리소스 패키지는 언어, 디스플레이 기능성, 하드웨어 기능성, 소프트웨어 기능성, 사용자 인터페이스 기능성 및/또는 사용자의 경험을 맞추기 위해 사용될 수 있는 임의의 다른 기능성(가령, 현대 리소스 기술에 의해 로드될 수 있는 임의의 데이터 등등)에 관련될 수 있는 것과 같은 매우 다양한 임의의 하나 이상의 리소스를 포함할 수 있다는 점이 인식될 수 있다. 일례에서, 리소스 패키지는 애플리케이션을 위한 수의적 언어 사용자 경험 기능성을 포함할 수 있다. 다른 예에서, 리소스 패키지는 사용자에게 맞춰질 수 있는 수의적 사용자 경험 기능성을 포함할 수 있다(가령, 선호되는 사용자 입력 모드, 고대비 설정, 사용자의 위치 등등). 다른 예에서, 리소스 패키지는 애플리케이션을 위한 수의적 디스플레이 품질 사용자 경험 기능성을 포함할 수 있다(가령, 해상도 데이터, 스크린 스케일 데이터, 멀티미디어 API 데이터 등등). 다른 예에서, 리소스 패키지는 클라이언트 디바이스의 하드웨어 능력에 달려 있을 수 있는 수의적 하드웨어 인지 기능성을 포함할 수 있다(가령, 카메라를 포함하는 클라이언트 디바이스를 위한 이미지 캡처(image capture) 기능성, 마이크(microphone) 또는 헤드세트(headset)를 포함하는 클라이언트 디바이스를 위한 오디오 기능성, 무선 주변기기(peripheral)를 포함하는 클라이언트 디바이스를 위한 무선 기능성 등등). 다른 예에서, 리소스 패키지는 다수의 사용자 경험 기능성과 연관된 콘텐트(content)를 포함한다(가령, 고해상도 독일어 이미지, DX9 기능성 세트를 이용하는 고대비 상호작용적(interactive) 사용자 인터페이스 등등).
몇몇 실시예에서, 리소스 패키지는 애플리케이션을 위해 자동으로 생성될 수 있다. 예를 들어, 제1 앱 패키지로부터 제1 세트의 수의적 데이터(optional data)를 식별하기 위해 앱 패키지가 파싱될(parsed) 수 있다(가령, 애플리케이션은 본래 영어로 된 문자열을 제공할 수 있으나, 수의적 언어 지원으로서 프랑스어로 된 문자열을 포함할 수도 있음). 제1 세트의 수의적 데이터는 제1 앱 패키지로부터 추출될 수 있다. 리소스 패키지는 프랑스어 리소스 패키지와 같은 제1 세트의 수의적 데이터에 기반하여 생성될 수 있다. 일례에서, (가령, 자동으로 생성되거나 그렇지 않은) 리소스 패키지는 한 유형의 다수의 인스턴스(instance)들을 포함할 수 있다(가령, 영어 리소스 패키지, 미국 영어 리소스 패키지 및/또는 영국 영어 리소스 패키지 등등).
108에서, 번들 패키지는 하나 이상의 앱 패키지 및/또는 하나 이상의 리소스 패키지를 포함하도록 생성될 수 있다. 일례에서, 번들 패키지, 하나 이상의 앱 패키지 및/또는 하나 이상의 리소스 패키지는 (가령, 단일 디지털 서명 동작 중에) 디지털 서명 인증서로써 디지털로 서명될 수 있어서 그 패키지들은 시그니처 속성의 세트(가령, 디지털 서명 인증서 소유자, 인가의 연쇄 인증, 키 사용, 시그니처 유효화 일자, 시그니처 암호화 강도, 시그니처 타임스탬프 등등)를 공유할 수 있는데, 이는 클라이언트 디바이스로 하여금 그 패키지들이 선택적으로 및/또는 개별적으로 다운로드되었는지와 무관하게 그 패키지들을 효율적으로 확인하게 할 수 있다. 일례에서, 번들 재적목록(bundle manifest)이 번들 패키지 내에의 포함을 위해 생성될 수 있다. 번들 재적목록은 하나 이상의 앱 패키지에 대한 하나 이상의 앱 서술(app description) 및/또는 하나 이상의 리소스 패키지에 대한 하나 이상의 리소스 서술(resource description)을 포함할 수 있다. 일례에서, 번들 패키지는 그 내부의 앱 패키지 및/또는 리소스 패키지를 추가, 제거 및/또는 수정하도록 업데이트될 수 있다. 예를 들어, 번들 패키지를 위해 번들 업데이트가 수신될 수 있다. 번들 업데이트는 번들 패키지 내에의 포함을 위한 새로운 리소스 패키지를 포함할 수 있다. 번들 패키지는 새로운 리소스 패키지를 포함하도록 업데이트될 수 있으며, 번들 재적목록은 새로운 리소스 패키지가 수의적 인출(optional retrieval)을 위해 이용가능함을 명시하도록 업데이트될 수 있다. 번들 패키지가 앱 마켓플레이스 인증 프로세스(가령, 올바른 기능성 및/또는 앱 마켓플레이스와의 부합을 확인하기 위한 자동화된 및/또는 수동인 시험 프로세스)에 의해 인증된 일례에서, 번들 패키지를 재인증하는 것과는 대조적으로, 단지 새로운 리소스 패키지가 인증될 수 있다.
번들 패키지는 앱 마켓플레이스를 통해 선택적 다운로드를 위해 노출될 수 있다. 예를 들어, 하나 이상의 리소스 패키지는 애플리케이션을 위한 수의적 다운로드로서 노출될 수 있다. 즉, 앱 패키지는 클라이언트 디바이스 상에서의 애플리케이션의 설치를 위해 다운로드될 수 있고, 하나 이상의 리소스 패키지는 애플리케이션을 위한 수의적 사용자 경험 기능성(가령, 프랑스어에 대한 지원)을 제공하기 위해 수의적으로 다운로드되거나 배치될 수 있다. 이에 따라, 번들 취득 요청이 클라이언트 디바이스로부터 수신될 수 있다. 일례에서, 번들 취득 요청은 제1 앱 패키지를 지정할 수 있다. 제1 앱 패키지는 설치를 위해 클라이언트 디바이스에 선택적으로 제공될 수 있다. 일례에서, 번들 취득 요청은 번들 패키지 내의 제2 리소스 패키지를 지정할 수 있다. 제1 리소스 패키지는 그렇지 않으나 제2 리소스 패키지는 애플리케이션의 설치를 위해 번들 패키지로부터 클라이언트 디바이스에 선택적으로 제공될 수 있다. 다른 예에서, 번들 취득 요청은 번들 패키지 내에 포함된 리소스 패키지의 서브세트를 지정한다. 리소스 패키지의 서브세트는 번들 패키지 내의 하나 이상의 리소스 패키지 중 적어도 몇몇이나 그 전부보다는 적은 수의 리소스 패키지를 지정할 수 있다. 이런 방식으로, 리소스 패키지의 서브세트는 애플리케이션의 설치를 위해 번들 패키지로부터 클라이언트 디바이스에 선택적으로 제공될 수 있다. 110에서, 그 방법은 종료한다.
도 2는 번들 패키지(208)를 생성하기 위한 시스템(200)의 일례를 도시한다. 시스템(200)은 번들 생성 컴포넌트(bundle generation component)(206)를 포함할 수 있다. 번들 생성 컴포넌트(206)는 애플리케이션을 위한 하나 이상의 앱 패키지(가령, 드로잉 애플리케이션의 앱 개발자에 의해 제공되는 앱 패키지 데이터(202))를 식별하도록 구성될 수 있다. 번들 생성 컴포넌트(206)는 애플리케이션을 위한 하나 이상의 리소스 패키지(가령, 앱 개발자 또는 다른 출처(source), 이를테면 리소스 패키지 개발자에 의해 제공되는 리소스 패키지 데이터(204))를 식별하도록 구성될 수 있다. 일례에서, 번들 생성 컴포넌트(206)는 리소스 패키지를 생성하기 위해 사용되고/되거나 추출될 수 있는 수의적 데이터를 식별하기 위해 앱 패키지를 파싱할 수 있다. 예를 들어, 드로잉 애플리케이션을 위한 수의적 디스플레이 기능성을 제공할 수 있는 멀티미디어 API 버전 2.2의 특징 세트를 식별하기 위해 앱 패키지가 파싱될 수 있고, 따라서 특징 세트를 위해 리소스 패키지가 생성될 수 있다.
번들 생성 컴포넌트(206)는 드로잉 애플리케이션이 하나 이상의 앱 패키지 및/또는 하나 이상의 리소스 패키지를 포함하도록 번들 패키지(208)를 생성할 수 있다. 예를 들어, 번들 패키지(208)는 예컨대, 제1 프로세서 아키텍처 상에서 실행되도록 구성된 애플리케이션 코드를 포함하는 제1 앱 패키지(210), 제2 프로세서 아키텍처 상에서 실행되도록 구성된 애플리케이션 코드를 포함하는 제2 앱 패키지(212), 클라우드 운영 체제 상에서 실행되도록 구성된 애플리케이션 코드를 포함하는 제3 앱 패키지(214) 및/또는 다양한 컴퓨터 아키텍처 및/또는 운영 체제 상에서 실행되도록 구성된 다른 앱 패키지를 포함할 수 있다. 번들 패키지(208)는 독일어 문자열을 포함하는 제1 리소스 패키지(216), 프랑스어 문자열을 포함하는 제2 리소스 패키지(218), 1440 x 900(가령, 또는 중간 품질 픽셀 밀도)에서의 중간 품질 해상도 화상을 포함하는 제3 리소스 패키지(220), 1920 x 1080(가령, 고품질 픽셀 밀도)에서의 고품질 해상도 화상을 포함하는 제4 리소스 패키지(222), 멀티미디어 API 버전 2.2의 특징 세트를 포함하는 제5 리소스 패키지(224)(가령, 제5 리소스 패키지(224)는 앱 패키지로부터 추출된 수의적 디스플레이 기능성에 기반하여 자동으로 생성될 수 있음), 그리고/또는 드로잉 애플리케이션을 위한 수의적 사용자 경험 기능성을 제공하기 위해 사용되는 부가 데이터를 포함하는 다른 리소스 패키지를 포함할 수 있다. 번들 생성 컴포넌트(206)는 번들 패키지(208)를 통해 이용가능한 하나 이상의 앱 패키지 및/또는 하나 이상의 리소스 패키지를 서술하는 번들 재적목록(226)을 생성할 수 있다. 이런 방식으로, 번들 패키지(208)는 드로잉 애플리케이션의 설치를 위해 번들 패키지(208) 또는 그 내부의 부분의 선택적 다운로드를 위해 노출될 수 있다(가령, 도 4).
도 3은 리소스 패키지 제작 트랜잭션을 가능하게 하는 일례(300)를 도시한다. 즉, 애플리케이션의 앱 개발자(가령, 드로잉 애플리케이션의 드로잉 애플리케이션 개발자(302))는 영어로 드로잉 애플리케이션을 실행하도록 구성된 애플리케이션 코드를 포함하는 앱 패키지를 제작할 수 있다. 앱 패키지는 앱 마켓플레이스 인증 프로세스를 통해 인증될 수 있으며, 따라서 번들 패키지 내에 번들화되고(bundled) 다운로드를 위해 앱 마켓플레이스를 통해 노출될 수 있다. 일례에서, 드로잉 애플리케이션 개발자(302)는 드로잉 애플리케이션을 스페인어를 말하는 사용자가 액세스가능하게 하기를 바랄 수 있으나, 그러한 번역(translation)을 수행하는 리소스가 부족할 수 있다. 이에 따라, 리소스 패키지 아웃소싱 인터페이스(resource package outsourcing interface)(306)가 드로잉 애플리케이션 개발자(302)에게 노출될 수 있다(가령, 드로잉 애플리케이션 개발자(302)는 리소스 패키지 아웃소싱 인터페이스(306)를 호스팅할(host) 수 있는 웹사이트(website)를 액세스할 수 있음).
리소스 패키지 제작 요청(304)이 드로잉 애플리케이션 개발자(302)로부터 수신될 수 있다(가령, 스페인어 리소스 패키지의 제작에 대한 의뢰(solicitation)). 리소스 패키지 제작 요청(304)이 리소스 패키지 아웃소싱 인터페이스를 통해 복수의 리소스 패키지 개발자에게 노출될 수 있다. 예를 들어, 리소스 패키지 개발자 (A)(308), 리소스 패키지 개발자 (B)(310) 및 리소스 패키지 개발자 (C)(312)는 리소스 패키지 아웃소싱 인터페이스(306)를 호스팅하는 웹사이트를 통해 리소스 패키지 제작 요청(304)을 액세스할 수 있다. 하나 이상의 리소스 패키지 제작 입찰(resource package creation bid)이 리소스 패키지 아웃소싱 인터페이스(306)를 통해 수신될 수 있다(가령, 리소스 패키지 개발자 (A)(308)로부터의 리소스 패키지 제작 입찰 (A)(314) 및 리소스 패키지 개발자 (B)(310)로부터의 리소스 패키지 제작 입찰 (B)(316)). 리소스 패키지 제작 입찰의 선택(가령, 리소스 패키지 제작 입찰 (B)(316)의 선택)에 응답하여, 리소스 패키지 제작 트랜잭션이 드로잉 애플리케이션 개발자(302) 및 리소스 패키지 개발자 (B)(310) 간에 가능하게 될 수 있다(가령, 지불 트랜잭션 및/또는 스페인어 리소스 패키지의 전송이 가능하게 될 수 있음). 이런 방식으로, 스페인어 리소스 패키지는 드로잉 애플리케이션을 위한 번들 패키지 내에의 포함을 위해 리소스 패키지 개발자 (B)(310)로부터 수신될 수 있다.
도 4는 번들 패키지(208)의 부분을 선택적으로 배포하기 위한 시스템(400)의 일례를 도시한다. 시스템(400)은 하나 이상의 앱 패키지(가령, 제1 앱 패키지(210), 제2 앱 패키지(212), 제3 앱 패키지(214) 등등) 및/또는 하나 이상의 리소스 패키지(가령, 독일어 문자열을 위한 제1 리소스 패키지(216), 프랑스어 문자열을 위한 제2 리소스 패키지(218), 1440 x 900의 중간해상도 텍스처를 위한 제3 리소스 패키지, 1920 x 1080의 고해상도 텍스처를 위한 제4 리소스 패키지, 멀티미디어 API 버전 2.2를 위한 제5 리소스 패키지 등등)를 클라이언트 디바이스(406) 상에서의 드로잉 애플리케이션의 선택적인 다운로드 및/또는 배치를 위해 노출하도록 구성된 앱 배포 컴포넌트(app distribution component)(402)를 포함할 수 있다. 예를 들어, 앱 배포 컴포넌트(402)는 본래 1440 x 900 해상도를 지원하고 독일어를 말하는 사용자에 의해 사용되는 태블릿 디바이스와 같은 클라이언트 디바이스에 번들 재적목록(226)을 노출할 수 있다. 번들 재적목록(226)은 하나 이상의 앱 패키지 및/또는 하나 이상의 리소스 패키지와 같은 번들 패키지(208)를 기술할 수 있다.
일례에서, 번들 취득 요청은 클라이언트 디바이스(406)로부터 수신된다. 클라이언트 디바이스(406)가 제2 앱 패키지(212)를 사용하여 드로잉 애플리케이션을 실행할 수 있는 제2 프로세서 아키텍처를 가지기 때문에 번들 취득 요청은 제2 앱 패키지(212)를 지정할 수 있다. 사용자가 독일어를 말하기 때문에 번들 취득 요청은 제1 리소스 패키지(216)를 지정할 수 있다. 일례에서, 번들 취득 요청은 제2 리소스 패키지(218)를 지정하지 않아서 그렇지 않다면 사용자가 말하지 않는 프랑스어를 위한 제2 리소스 패키지(218)를 다운로드하고 배치하는 데에 사용될 다운로드 대역폭, 저장 공간 및/또는 컴퓨팅 리소스를 클라이언트 디바이스(406)가 소모하지 않는다. 클라이언트 디바이스(406)가 본래 1440 x 900 해상도를 지원하기 때문에 번들 취득 요청은 제3 리소스 패키지(220)를 지정할 수 있다. 일례에서, 번들 취득 요청은 제4 리소스 패키지(222)를 지정하지 않아서 그렇지 않다면 클라이언트 디바이스(406)에 의해 지원되지 않는 해상도를 위한 제4 리소스 패키지(222)를 다운로드하고 배치하는 데에 사용될 다운로드 대역폭, 저장 공간 및/또는 컴퓨팅 리소스를 클라이언트 디바이스(406)가 소모하지 않는다. 이런 방식으로, 앱 배포 컴포넌트(402)는 드로잉 애플리케이션의 설치를 위해 번들 패키지(208)로부터 클라이언트 디바이스(406)에 제2 앱 패키지(212), 제1 리소스 패키지(216) 및/또는 제3 리소스 패키지(220)를 선택적으로 제공한다.
번들 패키지를 디지털로 서명하는 일 실시예가 도 5의 예시적인 방법(500)에 의해 도시된다. 502에서, 그 방법은 시작한다. 애플리케이션을 위한 번들 패키지는 하나 이상의 앱 패키지 및/또는 하나 이상의 리소스 패키지를 포함할 수 있다. 앱 패키지는 특정한 컴퓨팅 환경에서 애플리케이션을 구동하기 위해 실행될 수 있는 애플리케이션 코드를 포함할 수 있다(가령, 제1 앱 패키지는 모바일 운영 체제(mobile operating system) 및/또는 제2 프로세서 아키텍처에 의해 실행될 수 있는 실행가능한 바이너리 파일을 포함할 수 있음). 리소스 패키지는 애플리케이션을 위한 수의적 사용자 경험 기능성을 제공하도록 구성된 부가 코드를 포함할 수 있다. 일례에서, 제1 리소스 패키지는 독일어로 된 문자열을 포함할 수 있다. 다른 예에서, 디스플레이 리소스 패키지는 해상도 데이터, 스크린 스케일 데이터, 멀티미디어 API 버전 데이터, 그리고 애플리케이션을 위한 맞춤식 시각적 경험을 제공할 수 있는 다른 데이터를 포함할 수 있다. 번들 패키지, 하나 이상의 앱 패키지 및/또는 하나 이상의 리소스 패키지는 설치를 위해 클라이언트 디바이스에 의해 선택적으로 및/또는 개별적으로 다운로드될 수 있기 때문에(가령, 클라이언트 디바이스는 제1 앱 패키지 및 프랑스어로 된 문자열을 포함하는 제2 리소스 패키지를 다운로드 할 수 있으나, 클라이언트 디바이스의 사용자가 독일어를 말하지 않기 때문에 제1 리소스 패키지를 다운로드하지 않을 수 있음), 유사한 시그니처 특성(가령, 디지털 서명 인증서 소유자, 인가의 연쇄 인증, 키 사용, 시그니처 유효화 일자, 시그니처 암호화 강도, 시그니처 타임스탬프 등등)을 가지는 디지털 시그니처로써 번들 패키지, 하나 이상의 앱 패키지 및/또는 하나 이상의 리소스 패키지를 서명하는 디지털 서명 동작이 수행될 수 있다. 디지털 시그니처는 애플리케이션의 설치를 위해 클라이언트 디바이스에 의해 번들 패키지, 앱 패키지 및/또는 리소스 패키지 내의 콘텐트 및/또는 이의 출처를 확인하기 위해 사용될 수 있다.
이에 따라, 504에서, 번들 패키지를 위해 제1 디지털 시그니처 동작이 수행된다. 일례에서, 제1 디지털 시그니처 동작은 디지털 서명 인증서를 이용하는 단일 서명 동작을 통해 수행된다(가령, 번들 패키지, 앱 패키지 및/또는 리소스 패키지를 서명하기 위해 단일 서명 동작 동안 동일한 디지털 서명 인증서가 사용될 수 있어서 그러한 패키지들이 별개로 또는 개별적으로 다운로드되었는지와 무관하게 클라이언트 디바이스에 의해 효율적으로 확인될 수 있는 유사한 시그니처 속성을 그러한 패키지들이 포함함). 제1 디지털 시그니처 동작은 506에서, 서명된 제1 앱 패키지(signed first app package)를 생성하기 위해 디지털 서명 인증서를 이용하여 제1 앱 패키지 시그니처로써 제1 앱 패키지를 디지털로 서명하는 것을 포함할 수 있다. 제1 디지털 시그니처 동작은 508에서, 서명된 제1 리소스 패키지(signed first resource package)를 생성하기 위해 디지털 서명 인증서를 이용하여 제1 리소스 패키지 시그니처로써 제1 리소스 패키지를 디지털로 서명하는 것을 포함할 수 있다. 510에서, 서명 인증서를 이용하여 번들 패키지 시그니처로써 서명된 것인 서명된 번들 패키지(signed bundle package)가 생성된다(가령, 초기에 앱 패키지 및/또는 리소스 패키지를 포함하는 번들 패키지가 서명될 수 있음, 서명된 앱 패키지 및 서명된 리소스 패키지로부터 새로운 번들 패키지가 생성될 수 있고 새로운 번들 패키지가 서명될 수 있음 등등). 시그니처 속성의 세트가 제1 앱 패키지 시그니처, 제1 리소스 패키지 시그니처 및 번들 패키지 시그니처에 의해 공유될 수 있다.
제1 앱 패키지 및 제1 리소스 패키지를 서명하는 몇몇 실시예에서, 제1 앱 패키지 및 제1 리소스 패키지는 추출된 제1 앱 패키지(extracted first app package) 및 추출된 제1 리소스 패키지(extracted first resource package)로서 번들 패키지로부터 추출될 수 있다. 추출된 제1 앱 패키지는 서명된 추출된 제1 앱 패키지(signed extracted first app package)를 생성하기 위해 디지털로 서명될 수 있다. 추출된 제1 리소스 패키지는 서명된 추출된 제1 리소스 패키지(signed extracted first resource package)를 생성하기 위해 디지털로 서명될 수 있다. 일례에서, 서명된 추출된 제1 앱 패키지는 서명된 제1 앱 패키지로서 번들 패키지에 반환되고, 서명된 추출된 제1 리소스 패키지는 서명된 제1 리소스 패키지로서 번들 패키지에 반환된다. 이런 방식으로 번들 패키지는 서명된 번들 패키지(signed bundle package)를 생성하기 위해 서명될 수 있다. 다른 예에서, 서명된 추출된 제1 앱 패키지를 서명된 제1 앱 패키지로서 그리고 서명된 추출된 제1 리소스 패키지를 서명된 제1 리소스 패키지로서 이용하여 새로운 번들 패키지가 생성된다. 서명된 번들 패키지를 생성하기 위해 번들 패키지 시그니처를 이용하여 새로운 번들 패키지가 서명될 수 있다. 다른 예에서, 제1 앱 패키지 및/또는 제1 리소스 패키지가 번들 패키지 내에 포함되어 있는 동안 제1 앱 패키지 및/또는 제1 리소스 패키지는 제자리에서 서명된다.
하나 이상의 앱 패키지 및/또는 하나 이상의 리소스 패키지를 서명하는 몇몇 실시예에서, 하나 이상의 앱 패키지 및/또는 하나 이상의 리소스 패키지는 디지털 서명 인증서를 사용하여 순차적으로 서명될 수 있다. 하나 이상의 앱 패키지 및/또는 하나 이상의 리소스 패키지를 서명하는 몇몇 실시예에서, 하나 이상의 앱 패키지 및/또는 하나 이상의 리소스 패키지는 병렬로 서명될 수 있다. 일례에서, 제1 앱 패키지 및 제1 리소스 패키지는 병렬로 서명될 수 있다. 다른 예에서, 제1 앱 패키지 및 제2 앱 패키지는 병렬로 서명될 수 있다. 다른 예에서, 제1 리소스 패키지 및 제2 리소스 패키지는 병렬로 서명될 수 있다.
서명된 번들 패키지는 앱 마켓플레이스를 통해 다운로드를 위해 노출될 수 있다. 하나 이상의 서명된 리소스 패키지는 애플리케이션을 위한 수의적 다운로드로서 노출될 수 있다. 서명된 번들 패키지가 서명된 제1 리소스 패키지 및 서명된 제2 리소스 패키지를 포함하는 일례에서, 번들 취득 요청이 클라이언트 디바이스로부터 수신될 수 있다. 번들 취득 요청은 서명된 제1 앱 패키지 및 서명된 제1 리소스 패키지를 지정할 수 있다. 서명된 제2 리소스 패키지는 제외하고, 서명된 제1 앱 패키지 및 서명된 제1 리소스 패키지는 애플리케이션의 시그니처 유효화 및 설치를 위해 클라이언트 디바이스에 선택적으로 제공될 수 있다. 512에서, 그 방법은 종료한다.
도 6은 추출 기법을 이용하여 번들 패키지를 서명하기 위한 시스템(600)의 일례를 도시한다. 시스템(600)은 디지털 시그니처 컴포넌트(digital signature component)(614)를 포함한다. 디지털 시그니처 컴포넌트(614)는 번들 패키지(가령, 디지털로 서명되기 전 비디오 편집기 애플리케이션(video editor application)을 위한 번들 패키지(602a)) 및/또는 그 내부의 패키지를 디지털로 서명하기 위해 디지털 서명 인증서(616)를 이용하여 디지털 시그니처 동작(가령, 단일 서명 동작)을 수행하도록 구성될 수 있다. 예를 들어, 디지털 시그니처 컴포넌트(614)는 번들 패키지(602a)로부터 제1 앱 패키지(604a), 제2 앱 패키지(606a), 제1 리소스 패키지(608a) 및 제2 리소스 패키지(610a)를 추출할 수 있다(612). 디지털 시그니처 컴포넌트(614)는 서명된 추출된 제1 앱 패키지를 생성하기 위해 디지털 서명 인증서(616)를 이용하여 제1 앱 패키지 시그니처(620)로써 제1 앱 패키지(604a)를 디지털로 서명할 수 있다. 디지털 시그니처 컴포넌트(614)는 서명된 추출된 제2 앱 패키지를 생성하기 위해 디지털 서명 인증서(616)를 이용하여 제2 앱 패키지 시그니처(622)로써 제2 앱 패키지(606a)를 디지털로 서명할 수 있다. 디지털 시그니처 컴포넌트(614)는 서명된 추출된 제1 리소스 패키지를 생성하기 위해 디지털 서명 인증서(616)를 이용하여 제1 리소스 패키지 시그니처(624)로써 제1 리소스 패키지(608a)를 디지털로 서명할 수 있다. 디지털 시그니처 컴포넌트(614)는 서명된 추출된 제2 리소스 패키지를 생성하기 위해 디지털 서명 인증서(616)를 이용하여 제2 리소스 패키지 시그니처(626)로써 제2 리소스 패키지(610a)를 디지털로 서명할 수 있다. 일례에서, 패키지들은 순차적으로 또는 병렬로 서명될 수 있다.
일례에서, 디지털 시그니처 컴포넌트(614)는 서명된 추출된 패키지들을 번들 패키지(602a)에 반환할 수 있고(628), 서명된 제1 앱 패키지(604b), 서명된 제2 앱 패키지(606b), 서명된 제1 리소스 패키지(608b) 및 서명된 제2 리소스 패키지(610b)를 포함하는 서명된 번들 패키지(602b)를 생성하기 위해 디지털 서명 인증서(616)를 이용하여 번들 패키지 시그니처로써 번들 패키지(602a)를 서명할 수 있다. 시그니처 속성(가령, 디지털 서명 인증서 소유자, 인가의 연쇄 인증, 키 사용, 시그니처 유효화 일자, 시그니처 암호화 강도, 시그니처 타임스탬프 등등)의 세트가 번들 패키지 시그니처, 제1 앱 패키지 시그니처(620), 제2 앱 패키지 시그니처(622), 제1 리소스 패키지 시그니처(624) 및/또는 제2 리소스 패키지 시그니처(626)에 의해 공유될 수 있다. 이런 방식으로, 시그니처 속성의 세트가 패키지 시그니처들에 의해 공유되기 때문에 서명된 번들 패키지(602b) 및/또는 그 내부의 서명된 패키지들은 클라이언트 디바이스에 의해 선택적으로 및/또는 개별적으로 다운로드되고 효율적인 방식으로 확인될 수 있다.
도 7은 서명된 번들 패키지(704)를 새로운 번들 패키지로부터 생성하기 위한 시스템(700)의 일례를 도시한다. 시스템(700)은 디지털 시그니처 컴포넌트(614)를 포함한다. 디지털 시그니처 컴포넌트(614)는 번들 패키지(가령, 디지털로 서명되기 전 비디오 편집기 애플리케이션을 위한 번들 패키지(602a)) 및/또는 그 내부의 패키지를 디지털로 서명하기 위해 디지털 서명 인증서(616)를 이용하여 디지털 시그니처 동작(가령, 단일 서명 동작)을 수행하도록 구성될 수 있다. 예를 들어, 디지털 시그니처 컴포넌트(614)는 번들 패키지(602a)로부터 제1 앱 패키지(604a), 제2 앱 패키지(606a), 제1 리소스 패키지(608a) 및 제2 리소스 패키지(610a)를 추출할 수 있다(612). 디지털 시그니처 컴포넌트(614)는 서명된 추출된 제1 앱 패키지를 생성하기 위해 디지털 서명 인증서(616)를 이용하여 제1 앱 패키지 시그니처(620)로써 제1 앱 패키지(604a)를 디지털로 서명할 수 있다. 디지털 시그니처 컴포넌트(614)는 서명된 추출된 제2 앱 패키지를 생성하기 위해 디지털 서명 인증서(616)를 이용하여 제2 앱 패키지 시그니처(622)로써 제2 앱 패키지(606a)를 디지털로 서명할 수 있다. 디지털 시그니처 컴포넌트(614)는 서명된 추출된 제1 리소스 패키지를 생성하기 위해 디지털 서명 인증서(616)를 이용하여 제1 리소스 패키지 시그니처(624)로써 제1 리소스 패키지(608a)를 디지털로 서명할 수 있다. 디지털 시그니처 컴포넌트(614)는 서명된 추출된 제2 리소스 패키지를 생성하기 위해 디지털 서명 인증서(616)를 이용하여 제2 리소스 패키지 시그니처(626)로써 제2 리소스 패키지(610a)를 디지털로 서명할 수 있다. 일례에서, 패키지들은 순차적으로 또는 병렬로 서명될 수 있다.
일례에서, 디지털 시그니처 컴포넌트(614)는 서명된 추출된 패키지들을 이용하여 새로운 번들 패키지를 생성할 수 있다(702). 새로운 번들 패키지는 서명된 번들 패키지(704)를 생성하기 위해 디지털 서명 인증서(616)를 이용하여 번들 패키지 시그니처로써 서명될 수 있다. 이런 방식으로, 서명된 번들 패키지(704)는 서명된 제1 앱 패키지(604b)(가령, 제1 앱 패키지 시그니처(620)로써 서명된 제1 앱 패키지(604a)에 대응함), 서명된 제2 앱 패키지(606b)(가령, 제2 앱 패키지 시그니처(622)로써 서명된 제2 앱 패키지(606a)에 대응함), 서명된 제1 리소스 패키지(608b)(가령, 제1 리소스 패키지 시그니처(624)로써 서명된 제1 리소스 패키지(608a)에 대응함) 및 서명된 제2 리소스 패키지(610b)(가령, 제2 리소스 패키지 시그니처(626)로써 서명된 제2 리소스 패키지(610a)에 대응함)를 포함할 수 있다. 일례에서, 서명된 번들 패키지(704)는 번들 패키지(602a)를 대체할 수 있다(가령, 번들 패키지(602a)는 삭제될 수 있음). 시그니처 속성(가령, 디지털 서명 인증서 소유자, 인가의 연쇄 인증, 키 사용, 시그니처 유효화 일자, 시그니처 암호화 강도, 시그니처 타임스탬프 등등)의 세트가 번들 패키지 시그니처, 제1 앱 패키지 시그니처(620), 제2 앱 패키지 시그니처(622), 제1 리소스 패키지 시그니처(624) 및/또는 제2 리소스 패키지 시그니처(626)에 의해 공유될 수 있다. 이런 방식으로, 시그니처 속성의 세트가 패키지 시그니처들에 의해 공유되기 때문에 서명된 번들 패키지(704) 및/또는 그 내부의 서명된 패키지들은 클라이언트 디바이스에 의해 선택적으로 및/또는 개별적으로 다운로드되고 효율적인 방식으로 확인될 수 있다.
도 8은 (가령, 비디오 편집기 애플리케이션을 위한) 번들 패키지(802) 내의 패키지를 제자리에서 디지털로 서명하기 위한 시스템(800)의 일례를 도시한다. 시스템(800)은 디지털 시그니처 컴포넌트(814)를 포함할 수 있다. 디지털 시그니처 컴포넌트(814)는 패키지들이 번들 패키지(802) 내에 포함되어 있는 동안 디지털 서명 인증서(816)를 이용하여 제1 앱 패키지 시그니처로써 제1 앱 패키지(804)를, 제2 앱 패키지 시그니처로써 제2 앱 패키지(806)를, 제1 리소스 패키지 시그니처로써 제1 리소스 패키지(808)를, 그리고 제2 리소스 패키지 시그니처로써 제2 리소스 패키지(810)를 제자리에서 서명하도록 구성될 수 있다. 디지털 시그니처 컴포넌트(814)는 서명된 번들 패키지를 생성하기 위해 디지털 서명 인증서(816)를 이용하여 번들 패키지 시그니처로써 번들 패키지(802)를 서명할 수 있다. 디지털 시그니처 컴포넌트(814)는 디지털 서명 인증서(816)를 이용하여 디지털 시그니처 동작(812) 동안에 패키지들을 서명할 수 있기 때문에, 시그니처 속성의 세트는 패키지 시그니처들에 의해 공유될 수 있다.
도 9는 서명된 번들 패키지(924) 및/또는 그 내부의 서명된 패키지를 배포하기 위한 시스템(900)의 일례를 도시한다. 서명된 번들 패키지(924)는 서명된 제1 앱 패키지(902), 서명된 제2 앱 패키지(904), 서명된 제1 리소스 패키지(906) 및 서명된 제2 리소스 패키지(908)를 포함할 수 있다. 디지털 시그니처 동작 동안, 서명된 번들 패키지(924)를 번들 패키지 시그니처로써, 서명된 제1 앱 패키지(902)를 제1 앱 패키지 시그니처(910)로써, 서명된 제2 앱 패키지(904)를 제2 앱 패키지 시그니처(912)로써, 서명된 제1 리소스 패키지(906)를 제1 리소스 패키지 시그니처(914)로써, 그리고 서명된 제2 리소스 패키지(908)를 제2 리소스 패키지 시그니처(916)로써 서명하기 위해 디지털 서명 인증서가 사용되었을 수 있다.
시스템(900)은 앱 배포 컴포넌트(918)를 포함할 수 있다. 앱 배포 컴포넌트(918)는 서명된 번들 패키지(924) 및/또는 그 내부의 서명된 패키지를 클라이언트 디바이스(922)와 같은 클라이언트 디바이스에 의한 선택적인 및/또는 개별적인 다운로드를 위해 노출하도록 구성될 수 있다. 예를 들어, 클라이언트 디바이스(922)로부터 번들 취득 요청이 수신될 수 있다. 번들 취득 요청은 서명된 제1 앱 패키지(902) 및 서명된 제2 리소스 패키지(908)를 지정할 수 있다. 앱 배포 컴포넌트(918)는 서명된 번들 패키지(924)에 의해 표현되는 애플리케이션의 확인 및/또는 설치를 위해 클라이언트 디바이스(922)에 서명된 제1 앱 패키지(902), 서명된 제2 리소스 패키지(908) 및 시그니처(926)(가령, 번들 패키지 시그니처, 제1 앱 패키지 시그니처(910) 및/또는 제2 리소스 패키지 시그니처(916))를 보낼 수 있다(920).
애플리케이션과 연관된 번들 패키지의 부분을 선택적으로 인출하는 일 실시예가 도 10의 예시적인 방법(1000)에 의해 도시된다. 1002에서, 그 방법은 시작한다. 1004에서, 애플리케이션과 연관된 번들 패키지가 설치를 위해 식별될 수 있다(가령, 앱 마켓플레이스는 번들 패키지 및/또는 그 내부의 부분을 선택적 및/또는 개별적 다운로드를 위해 노출할 수 있음). 번들 패키지는 운영 체제 또는 컴퓨터 아키텍처와 같은 다양한 컴퓨팅 환경 상에서 실행되도록 구성된 애플리케이션 코드를 포함하는 하나 이상의 앱 패키지(가령, 제1 앱 패키지는 모바일 운영 체제 상에서 실행될 수 있는 드로잉 애플리케이션을 위한 실행가능한 바이너리 파일을 포함할 수 있음) 및/또는 수의적 사용자 경험 기능성을 제공하기 위해 사용되는 부가 데이터를 포함하는 하나 이상의 리소스 패키지를 포함할 수 있다. 클라이언트 디바이스가 다양한 컴퓨팅 환경을 포함할 수 있기 때문에, 하나 이상의 앱 패키지는 선택적 다운로드를 위해 노출될 수 있다(가령, 게이밍 컴퓨팅 디바이스는 제1 앱 패키지와는 대조적으로, 게이밍 기반 운영 체제를 포함하는 제2 앱 패키지를 다운로드할 수 있음). 하나 이상의 리소스 패키지는 클라이언트 디바이스 또는 사용자와 관련 있을 수 있거나 그렇지 않을 수 있는 수의적 사용자 경험 기능성을 제공하기 위해 사용되는 부가 데이터를 포함할 수 있기 때문에, 하나 이상의 리소스 패키지는 선택적 및/또는 수의적 다운로드를 위해 노출될 수 있다(가령, 게이밍 컴퓨팅 디바이스는 고해상도 텍스처 리소스 패키지를 다운로드할 수 있으나, 저해상도 텍스처 리소스 패키지를 다운로드하는 것을 삼갈 수 있음). 일례에서, 번들 패키지, 하나 이상의 앱 패키지 및/또는 하나 이상의 리소스 패키지는 (가령, 단일 디지털 서명 동작 동안) 디지털 서명 인증서로써 디지털로 서명되었을 수 있어서 그 패키지들은 시그니처 속성(가령, 디지털 서명 인증서 소유자, 인가의 연쇄 인증, 키 사용, 시그니처 유효화 일자, 시그니처 암호화 강도, 시그니처 타임스탬프 등등)을 공유할 수 있는데, 이는 클라이언트 디바이스로 하여금 그 패키지들이 선택적으로 및/또는 개별적으로 다운로드되었는지와 무관하게 그 패키지들을 효율적으로 확인하게 할 수 있다.
1006에서, 애플리케이션이 클라이언트 디바이스 상에서 실행되기 위한 적용가능성 콘텍스트가 판정될 수 있다. 적용가능성 콘텍스트는 클라이언트 디바이스 및/또는 클라이언트 디바이스의 사용자와 연관된 다양한 묵시적 및/또는 명시적 정보에 대응할 수 있다. 일례에서, 적용가능성 콘텍스트는 클라이언트 디바이스의 해상도, 클라이언트 디바이스의 스크린 스케일, 클라이언트 디바이스를 위한 사용자 경험 콘텍스트(가령, 사용자는 고대비 디스플레이 모드를 지정할 수 있음, 사용자는 게임패드 주변기기 디바이스(gamepad peripheral device)를 설치할 수 있음, 사용자는 마이크 디바이스 드라이버(microphone device driver)를 설치할 수 있음, 사용자의 위치 및/또는 사용자와 연관된 다양한 다른 선호 및/또는 콘텍스트적(contextual) 양상), 클라이언트 디바이스 상에서 이용가능한 멀티미디어 API의 특징 세트(가령, DirectX® 특징 세트), 클라이언트 디바이스의 그래픽 처리 유닛, 클라이언트 디바이스를 위한 시각적 품질 콘텍스트, 클라이언트 디바이스의 사용자에 의해 사용되는 언어, 그리고/또는 사용자 및/또는 클라이언트 디바이스와 관련 있을 수 있는 사용자 경험 기능성을 식별하기 위해 사용될 수 있는 허다한 다른 정보에 대응할 수 있다. 다른 예에서, 클라이언트 디바이스는 적용가능성 콘텍스트를 묵시적으로 식별하기 위해 평가될 수 있다(가령, 사용자는 현재 프랑스 내에 위치되어 있을 수 있고, 따라서 프랑스어 콘텍스트가 암시될 수 있음). 다른 예에서, 클라이언트 디바이스를 위한 사용자 지정 설정(user specified setting)은 적용가능성 콘텍스트로서 판정될 수 있다(가령, 사용자에 의해 설정된 고대비 디스플레이 모드). 다른 예에서, 클라이언트 디바이스 또는 사용자에 관한 가정(assumption)을 적용가능성 콘텍스트로서 생성하기 위해 클라이언트 디바이스와 연관된 정보에 퍼지 매칭 로직(fuzzy matching logic)이 적용될 수 있다(가령, 사용자에 의해 설치된 게이밍 그래픽 카드 및 게이밍 주변기기 디바이스는 고해상도 텍스처가 사용자에 의해 요망됨을 판정하기 위해 사용될 수 있음). 다수의 사용자가 클라이언트 디바이스를 이용할 수 있는 다른 예에서, 복수의 사용자가 열거될 수 있고, 적용가능성 콘텍스트는 복수의 사용자에 기반하여 판정될 수 있다(가령, 제1 사용자를 위해서는 독일어 그리고 제2 사용자를 위해서는 프랑스어).
1008에서, 제1 앱 패키지는 적용가능성 콘텍스트에 의해 지정된 컴퓨팅 환경 콘텍스트(가령, 운영 체제, 컴퓨터 아키텍처 등등)에 대응하는 애플리케이션 코드를 제1 앱 패키지가 포함하는 것에 기반하여 선택적으로 인출될 수 있다. 일례에서, 제1 앱 패키지의 제1 앱 패키지 시그니처가 확인될 수 있다(가령, 앱 패키지의 앱 개발자의 식별 및/또는 제1 앱 패키지가 수정되지 않았다는 확인). 적용가능성 콘텍스트가 번들 패키지 내에 포함된 하나 이상의 리소스 패키지 중 제1 리소스 패키지에 대응하는 것에 응답하여, 1010에서 제1 리소스 패키지가 번들 패키지로부터 선택적으로 인출된다. 일례에서, 제1 리소스 패키지의 제1 리소스 패키지 시그니처가 확인될 수 있다(가령, 제1 리소스 패키지의 개발자의 식별 및/또는 제1 리소스 패키지가 수정되지 않았다는 확인). 번들 패키지는 적용가능성 콘텍스트에 대응하지 않는 리소스 패키지를 포함할 수 있기 때문에, 그러한 리소스 패키지는 번들 패키지로부터 인출되지 않는다. 예를 들어, 스마트 폰을 위한 적용가능성 콘텍스트는 스마트 폰을 위해 상대적으로 낮은 해상도를 지정할 수 있고, 따라서 고해상도 이미지 리소스 패키지는 제외하고 저해상도 이미지 리소스 패키지가 스마트 폰을 위해 인출될 수 있다.
일례에서, 적용가능성 콘텍스트는 호주 영어를 지정할 수 있다. 번들 패키지가 호주 영어를 위한 언어 리소스 패키지를 포함하지 않는 것에 응답하여, 언어 유사도 임계(language similarity threshold)를 넘어 호주 영어에 대응하는 제2 언어를 위한 제2 언어 리소스 패키지가 식별될 수 있다(가령, 영국 영어 언어 리소스 패키지는 미국 영어 언어 리소스 패키지보다 호주 영어에 더 유사한 것으로서 식별될 수 있음). 영국 영어 언어 리소스 패키지와 같은 제2 언어 리소스 패키지는 선택적으로 인출될 수 있다. 이런 방식으로, 유사도 임계를 넘어 적용가능성 콘텍스트에 관련되는 리소스 패키지(가령, "차선의" 선택)가 선택적으로 인출될 수 있다(가령, 임계를 넘어 적용가능성 콘텍스트의 시각적 품질 콘텍스트에 대응하는 시각적 리소스 패키지). 클라이언트 디바이스는 애플리케이션을 설치하기 위해서 번들 패키지로부터 인출되는 제1 앱 패키지, 제1 리소스 패키지 및/또는 다른 패키지를 이용할 수 있다.
일례에서, 번들 패키지에 대한 업데이트가 식별될 수 있다. 업데이트는 번들 패키지 내의 리소스 패키지의 세트로의 새로운 리소스 패키지의 추가에 대응할 수 있다. 적용가능성 콘텍스트가 새로운 리소스 패키지(가령, 호주 영어 언어 리소스 패키지)에 대응하는 것에 응답하여, 새로운 리소스 패키지가 번들 패키지로부터 선택적으로 인출될 수 있다. 이런 방식으로, 클라이언트 디바이스는 클라이언트 디바이스 및/또는 사용자와 관련 있는 앱 패키지 및/또는 리소스 패키지를 획득할 뿐일 수 있다. 1012에서, 그 방법은 종료한다.
도 11은 애플리케이션과 연관된 번들 패키지(1110)의 부분을 선택적으로 인출하기 위한 시스템(1100)의 일례를 도시한다. 일례에서, 번들 패키지(1110)는 드로잉 애플리케이션과 연관된다. 번들 패키지(1110)는 하나 이상의 앱 패키지 및/또는 하나 이상의 리소스 패키지를 포함한다. 예를 들어, 번들 패키지(1110)는 제1 프로세서 유형을 위한 제1 앱 패키지(1112) 및 제2 프로세서 유형을 위한 제2 앱 패키지(1114)를 포함한다. 번들 패키지는 미국 영어를 위한 제1 리소스 패키지, 영국 영어를 위한 제2 리소스 패키지(1118), 고해상도 아이콘을 위한 제3 리소스 패키지(1120) 및 중간해상도 아이콘을 위한 제4 리소스 패키지(1122)를 포함한다. 하나 이상의 리소스 패키지는 드로잉 애플리케이션을 위한 선택적 및/또는 수의적 다운로드를 위해 노출될 수 있다. 즉, 리소스 패키지는 애플리케이션을 위한 수의적 사용자 경험 기능성을 제공하기 위해 사용되는 부가 데이터를 포함할 수 있다.
일례에서, 태블릿 디바이스와 같은 클라이언트 디바이스(1102)는 드로잉 애플리케이션을 위한 번들 패키지(1110)를 식별할 수 있다. 클라이언트 디바이스(1102)는 번들 패키지(1110) 내의 하나 이상의 앱 패키지 및/또는 하나 이상의 리소스 패키지를 서술하는 번들 재적목록(1124)을 획득할 수 있다. 시스템(1100)은 클라이언트 디바이스(1102)를 위한 적용가능성 콘텍스트(1106)를 판정하도록 구성된 적용가능성 컴포넌트(applicablity component)(1104)를 포함할 수 있다. 예를 들어, 적용가능성 콘텍스트(1106)는 클라이언트 디바이스(1102)가 제2 프로세서 유형을 가지고, 클라이언트 디바이스(1102)의 사용자가 호주 영어를 말하며, 클라이언트 디바이스(1102)가 중간 내지 저해상도 그래픽을 지원함을 명시할 수 있다. 시스템(1100)은 적용가능성 콘텍스트(1106)에 대응하는 앱 패키지 및/또는 하나 이상의 리소스 패키지를 인출하도록(1126) 구성된 인출 컴포넌트(retrieval component)(1108)를 포함할 수 있다. 인출 컴포넌트(1108)는 적용가능성 콘텍스트(1106)에 대응하지 않는(가령, 유사도 임계를 넘어 대응하지 않는) 앱 패키지 및/또는 리소스 패키지를 인출하는 것을 삼갈 수 있다. 일례에서, 인출 컴포넌트(1108)는 제2 앱 패키지(1114), 제2 리소스 패키지(1118)(가령, 영국 영어는 유사도 임계를 넘어 호주 영어 언어 콘텍스트에 대응할 수 있는 반면, 미국 영어는 그렇지 않기 때문임) 및 제4 리소스 패키지(1122)(가령, 중간해상도 아이콘은 유사도 임계를 넘어 중간 내지 저해상도 콘텍스트에 대응할 수 있는 반면, 고해상도 아이콘은 그렇지 않기 때문임)를 인출할 수 있는데(1126) 그러한 패키지들이 적용가능성 콘텍스트(1106)에 대응하기 때문이다. 이런 방식으로, 클라이언트 디바이스(1102)는 선택적으로 다운로드된 패키지들을 사용하여 드로잉 애플리케이션을 설치할 수 있다.
도 12는 애플리케이션과 연관된 번들 패키지(1110)의 부분을 선택적으로 인출하기 위한 시스템(1200)의 일례를 도시한다. 일례에서, 번들 패키지(1110)는 드로잉 애플리케이션과 연관된다. 번들 패키지(1110)는 하나 이상의 앱 패키지 및/또는 하나 이상의 리소스 패키지를 포함한다. 예를 들어, 번들 패키지(1100)는 제1 프로세서 유형을 위한 제1 앱 패키지(1112) 및 제2 프로세서 유형을 위한 제2 앱 패키지(1114)를 포함한다. 번들 패키지(1110)는 미국 영어를 위한 제1 리소스 패키지(1116), 영국 영어를 위한 제2 리소스 패키지(1118), 고해상도 아이콘을 위한 제3 리소스 패키지(1120) 및 중간해상도 아이콘을 위한 제4 리소스 패키지(1122)를 포함한다. 하나 이상의 리소스 패키지는 드로잉 애플리케이션을 위한 선택적 및/또는 수의적 다운로드를 위해 노출될 수 있다. 즉, 리소스 패키지는 애플리케이션을 위한 수의적 사용자 경험 기능성을 제공하기 위해 사용되는 부가 데이터를 포함할 수 있다.
일례에서, 게이밍 데스크톱과 같은 클라이언트 디바이스(1202)는 드로잉 애플리케이션을 위한 번들 패키지(1110)를 식별할 수 있다. 클라이언트 디바이스(1202)는 번들 패키지(1110) 내의 하나 이상의 앱 패키지 및/또는 하나 이상의 리소스 패키지를 서술하는 번들 재적목록(1124)을 획득할 수 있다. 시스템(1200)은 클라이언트 디바이스(1202)를 위한 적용가능성 콘텍스트(1206)를 판정하도록 구성된 적용가능성 컴포넌트(1204)를 포함할 수 있다. 예를 들어, 적용가능성 콘텍스트(1206)는 클라이언트 디바이스(1202)가 제1 프로세서 유형을 가지고, 클라이언트 디바이스(1102)의 사용자가 영어를 말하며, 클라이언트 디바이스(1202)가 고해상도 그래픽을 지원함을 명시할 수 있다. 시스템(1200)은 적용가능성 콘텍스트(1206)에 대응하는 앱 패키지 및/또는 하나 이상의 리소스 패키지를 인출하도록(1210) 구성된 인출 컴포넌트(1208)를 포함할 수 있다. 인출 컴포넌트(1208)는 적용가능성 콘텍스트(1206)에 대응하지 않는 앱 패키지 및/또는 리소스 패키지를 인출하는 것을 삼갈 수 있다. 일례에서, 인출 컴포넌트(1208)는 제1 앱 패키지(1112), 제1 리소스 패키지(1116) 및 제3 리소스 패키지(1120)를 인출할 수 있는데(1210) 그러한 패키지들이 적용가능성 콘텍스트(1206)에 대응하기 때문이다. 이런 방식으로, 클라이언트 디바이스(1202)는 선택적으로 다운로드된 패키지들을 사용하여 드로잉 애플리케이션을 설치할 수 있다.
클라이언트 디바이스 상의 애플리케이션을 위해 리소스 패키지 및/또는 앱 패키지와 같은 패키지 내의 리소스를 인덱싱하는 일 실시예가 도 13의 예시적인 방법(1300)에 의해 도시된다. 1302에서, 그 방법은 시작한다. 일례에서, 클라이언트 디바이스는 애플리케이션과 연관된 앱 패키지 및 하나 이상의 리소스 패키지를 선택적으로 인출하였을 수 있다. 일례에서, 앱 패키지의 제1 앱 패키지 시그니처가 확인(가령, 앱 패키지의 앱 개발자의 식별 및/또는 앱 패키지가 수정되지 않았다는 확인)될 수 있고/있거나 하나 이상의 리소스 패키지의 리소스 시그니처가 확인될(가령, 리소스 패키지의 개발자의 식별 및/또는 리소스 패키지가 수정되지 않았다는 확인)될 수 있다. 하나 이상의 리소스 패키지는 클라이언트 디바이스 상에 개별적으로 다운로드되고/되거나 저장되었을 수 있기 때문에, 런타임(runtime) 동안 애플리케이션에 의한 이용을 위해 그러한 리소스 패키지를 추적하는 것이 유리할 수 있다. 이에 따라, 예컨대 제1 리소스 패키지 및 제2 리소스 패키지가 1304에서 클라이언트 디바이스 상에서 식별될 수 있다. 제1 리소스 패키지는 애플리케이션을 위한 제1 수의적 사용자 경험 기능성을 제공하기 위해 사용되는 제1 부가 데이터를 포함할 수 있다(가령, 고해상도 아이콘 리소스 패키지 내의 하나 이상의 고해상도 아이콘). 제2 리소스 패키지는 애플리케이션을 위한 제2 수의적 사용자 경험 기능성을 제공하기 위해 사용되는 제2 부가 데이터를 포함할 수 있다(가령, 멀티미디어 API 버전 11을 위한 특징 세트 내의 하나 이상의 멀티미디어 특징 리소스). 제1 리소스 패키지는 제1 리소스 데이터(가령, 제1 리소스 패키지가 하나 이상의 고해상도 아이콘을 포함한다는 식별) 및/또는 제1 리소스 적용가능성 데이터(가령, 클라이언트 디바이스 상에서 실행되는 경우 고해상도 아이콘 데이터를 디스플레이하는 것이 가능한 애플리케이션에 고해상도 아이콘 데이터가 적용된다는 식별)를 서술하는 제1 리소스 인덱스를 포함할 수 있다. 제2 리소스 패키지는 제2 리소스 데이터(가령, 하나 이상의 멀티미디어 특징 리소스의 서술) 및/또는 제1 리소스 적용가능성 데이터(가령, 클라이언트 디바이스가 설치된 멀티미디어 API 버전 11을 갖는 경우 특징 세트가 사용될 수 있다는 식별)를 서술하는 제2 리소스 인덱스를 포함할 수 있다.
일례에서, 리소스 패키지는 애플리케이션을 위한 리소스의 서브세트를 포함할 수 있다(가령, 캐나다 영어 리소스 패키지는 "Colour" 및 "Favourite"과 같은 몇 개의 캐나다 텍스트 문자열을 포함할 수 있으나, 중립적 또는 미국 영어 리소스 패키지는 다른 단어를 위한 복수의 텍스트 문자열을 포함함). 일례에서, 단일 리소스 패키지가 개별적 리소스의 여러 변형을 포함할 수 있다(가령, 독일어 이미지의 고대비 버전(high contrast version), 독일어 이미지의 저대비 버전(low contrast version) 등등).
1306에서, 병합된 리소스 인덱스를 생성하기 위해 제1 리소스 패키지를 위한 제1 리소스 인덱스는 제2 리소스 패키지를 위한 제2 리소스 인덱스와 병합될 수 있다. 병합된 리소스 인덱스는 언제나 또는 배타적으로는 아니지만 일반적으로 클라이언트 측인 반면, 번들 재적목록은 언제나 또는 배타적으로는 아니지만 일반적으로 서버 또는 개발자 측임이 인식될 것이다. 추가적으로, 병합된 리소스 인덱스는 언제나는 아니지만 일반적으로, 이용가능한(가령, 로컬) 리소스 패키지 내의 어느 개별적인 리소스가 애플리케이션의 실행 동안에 사용될 수 있는지 판정하기 위해 사용되는 반면, 번들 재적목록은 언제나는 아니지만 일반적으로, 어느 앱 패키지(들) 및/또는 어느 리소스 패키지(들)를 클라이언트 디바이스로 다운로드할지를 판정하기 위해 사용된다. 일례에서, 애플리케이션과 연관된 리소스 패키지를 위한 복수의 리소스 인덱스가 병합된 리소스 인덱스 내에 병합될 수 있어서 병합된 리소스 인덱스는 애플리케이션을 실행하는 경우 로드될 수 있는 리소스 패키지 내의 개별적인 리소스를 서술할 수 있다(가령, 애플리케이션의 실행을 위한 텍스트 문자열, 이미지, 아이콘 등등과 같은 리소스의 세트를 식별하기 위해 다차원 검색(multi-dimensional lookup)이 병합된 리소스 인덱스 내에서 수행될 수 있음). 예를 들어, 제3 리소스 패키지가 앱 마켓플레이스로부터 인출될 수 있다. 제3 리소스 패키지는 애플리케이션을 위한 제3 수의적 사용자 경험 기능성을 제공하기 위해 사용되는 제3 부가 데이터를 포함할 수 있다(가령, 독일어 언어 리소스 패키지 내의 하나 이상의 독일어 문자열). 일례에서, 클라이언트 디바이스로의 제3 리소스 패키지의 배치 동안, 제3 리소스 패키지를 위한 제3 리소스 인덱스가 병합된 리소스 인덱스 내에 병합될 수 있다. 다른 예에서, 제3 리소스 인덱스는 병합된 리소스 인덱스 내에 애플리케이션의 초기 실행 동안 병합될 수 있다. 일례에서, 병합된 리소스 인덱스는 리소스 패키지 내 리소스에 대한 하나 이상의 참조를 포함할 수 있다. 다른 예에서, 병합된 리소스 인덱스에 대한 참조가 애플리케이션을 위한 앱 패키지 내에 생성될 수 있다. 앱 패키지는 애플리케이션의 실행을 위한 애플리케이션 코드를 포함할 수 있어서, 하나 이상의 리소스 패키지로부터의 개별적인 리소스가 선택적으로 사용될 수 있도록 애플리케이션의 실행 동안에 그 참조가 병합된 리소스 인덱스를 액세스하기 위해 사용될 수 있다.
일례에서, 애플리케이션과 연관된 앱 패키지가 식별될 수 있다. 앱 패키지는 애플리케이션의 실행을 위해 구성된 애플리케이션 코드를 포함할 수 있다. 앱 패키지를 위한 리소스 인덱스(가령, 앱 패키지에 의해 제공되는 하나 이상의 리소스를 서술함)가 병합된 인덱스 내에 병합될 수 있다.
1308에서, 병합된 리소스 인덱스는 애플리케이션의 실행을 위한 리소스 패키지 및/또는 앱 패키지와 같은 하나 이상의 패키지로부터 리소스를 선택적으로 사용하기 위해 이용될 수 있다(가령, 고해상도 환영 스크린 이미지 리소스, 독일어 환영 텍스트 문자열 등등). 일례에서, 앱 패키지를 이용하여 런타임 상태에서 애플리케이션을 실행하는 것에 응답하여, 병합된 리소스 인덱스는 애플리케이션를 위한 수의적 사용자 경험 기능성을 제공하기 위해 사용되는 리소스의 세트를 식별하기 위해 평가될 수 있다. 이런 방식으로, 애플리케이션은 리소스 패키지의 세트 및/또는 그 내부의 (가령, 그리고/또는 앱 패키지 내의) 하나 이상의 리소스를 이용하기 위해 호출될(invoked) 수 있다. 병합된 리소스 인덱스를 이용하는 일례에서, 하나 이상의 리소스 패키지 내에 포함될 수 있는 리소스의 적절한 세트를 식별하기 위해 다차원 검색이 병합된 리소스 인덱스 내에서 수행될 수 있다. 예를 들어, 병합된 리소스 인덱스는 언어 차원(language dimension), 해상도 차원(resolution dimension), 스크린 스케일 차원(screen scale dimension), 시각적 품질 차원(visual quality dimension), 멀티미디어 API 차원(multimedia API dimension), 부가 기능성 차원(supplemental functionality dimension), 그리고/또는 클라이언트 디바이스 상의 애플리케이션의 실행과 관련 있을 수 있는 리소스를 식별하기 위해 평가될 수 있는 다양한 다른 차원을 포함할 수 있다(가령, 프랑스어 텍스트 문자열 리소스 및 독일어 텍스트 문자열 리소스가 이용가능할 수 있고, 클라이언트 디바이스의 현재 사용자가 프랑스어를 선호하고/하거나 클라이언트 디바이스가 현재 프랑스 내에 위치되어 있기 때문에 프랑스어 텍스트 문자열 리소스가 독일어 텍스트 문자열 리소스에 우선하여 선택될 수 있음). 일례에서, 리소스의 세트는 애플리케이션을 위한 모든 또는 전부보다는 적은 이용가능한 리소스 패키지에 걸쳐 있을(span) 수 있다(가령, 리소스의 세트는 임계 대응을 넘어 클라이언트 디바이스의 디스플레이 품질 사용자 경험 및/또는 사용자의 언어에 대응하는 리소스와 같은, 클라이언트 디바이스 및/또는 사용자와 관련 있는 리소스의 세트에 기반하여 병합된 리소스 인덱스를 통해 식별된 리소스 패키지의 서브세트 내에 포함될 수 있음). 1310에서, 그 방법은 종료한다.
클라이언트 디바이스 상의 애플리케이션을 위해 리소스를 인덱싱하는 몇몇 실시예에서, 리소스 패키지 및 앱 패키지가 클라이언트 디바이스 상에서 식별될 수 있다. 리소스 패키지는 애플리케이션을 위한 수의적 사용자 경험 기능성을 제공하기 위해 사용되는 부가 데이터를 포함할 수 있다. 앱 패키지는 애플리케이션의 실행을 위해 구성된 애플리케이션 코드(가령, 애플리케이션 바이너리)를 포함할 수 있다. 병합된 리소스 인덱스를 생성하기 위해 리소스 패키지를 위한 제1 리소스 인덱스(가령, 리소스 패키지 내의 개별적 리소스를 서술함)가 앱 패키지를 위한 제2 리소스 패키지(가령, 앱 패키지 내의 개별적 리소스를 서술함)와 병합될 수 있다. 병합된 리소스 인덱스는 애플리케이션의 실행을 위해 리소스 패키지 및/또는 앱 패키지 내의 하나 이상의 리소스를 선택적으로 이용하기 위해 이용될 수 있다.
도 14는 클라이언트 디바이스(1402) 상의 애플리케이션을 위해 리소스 패키지 및/또는 앱 패키지와 같은 패키지 내의 리소스를 인덱싱하기 위한 시스템(1400)의 일례를 도시한다. 클라이언트 디바이스(1402)는 독일어를 위한 제1 리소스 패키지(1404)(가령, 하나 이상의 독일어 문자열 리소스), 프랑스어를 위한 제2 리소스 패키지(1406)(가령, 하나 이상의 프랑스어 문자열 리소스) 및/또는 리소스 패키지(N)(1408)와 같은 다른 리소스 패키지를 포함할 수 있다. 시스템(1400)은 인덱싱 컴포넌트(indexing component)(1416)를 포함할 수 있다. 인덱싱 컴포넌트(1416)는 클라이언트 디바이스(1402) 상의 그러한 리소스 패키지를 식별하도록 구성될 수 있다. 인덱싱 컴포넌트(1416)는 리소스 패키지 내의 개별적인 리소스를 서술하는 리소스 인덱스를 병합된 리소스 인덱스(1418) 내에 병합하도록 구성될 수 있다. 예를 들어, 제1 리소스 인덱스(1410), 제2 리소스 인덱스(1412) 및/또는 리소스 인덱스(N)(1414)와 같은 다른 리소스 인덱스가 병합된 리소스 인덱스(1418) 내에 병합될 수 있다. 이런 방식으로, 병합된 리소스 인덱스(1418)는 애플리케이션에 의한 이용을 위해 이용가능할 수 있는 리소스 패키지 내의 개별적인 리소스를 서술할 수 있다. 예를 들어, 병합된 리소스 인덱스는 제1 리소스 패키지(1404) 내의 독일어 문자열 리소스에 대한 제1 참조(1420), 제2 리소스 패키지 내의 프랑스어 문자열 리소스에 대한 제2 참조(1422) 및/또는 리소스 패키지 내의 다른 리소스에 대한 다른 참조(가령, 제3 리소스 패키지 내의 중간해상도 이미지 리소스에 대한 참조(1424), 제4 리소스 패키지 내의 고해상도 이미지 리소스에 대한 참조(1426), 제5 리소스 패키지 내의 저해상도 아이콘 리소스에 대한 참조(1428), 제6 리소스 패키지 내의 고해상도 아이콘 A에 대한 참조(1430), 제6 리소스 패키지 내의 고해상도 아이콘 B에 대한 참조(1432) 및/또는 제6 리소스 패키지 내의 고해상도 아이콘 C에 대한 참조(1434))를 포함할 수 있다. 일례에서, 인덱싱 컴포넌트(1416)는 애플리케이션을 위한 앱 패키지(1416) 내의 참조를 생성할 수 있다. 이런 방식으로, 앱 패키지(1416)를 이용하는 애플리케이션의 실행 동안, 참조는 애플리케이션에 의한 사용을 위한 하나 이상의 리소스를 (가령, 언어 또는 디스플레이 품질과 같은 다양한 사용자 경험 기능성에 차원들이 대응하는 다차원 검색을 이용하여) 식별하기 위해서 병합된 리소스 인덱스(1418)를 액세스하기 위해 사용될 수 있다.
도 15는 병합된 인덱스(1418)를 애플리케이션(1506)의 실행 동안 이용하기 위한 시스템(1500)의 일례를 도시한다. 시스템(1500)은 리소스 이용 컴포넌트(resource utilization component)(1502)를 포함할 수 있다. 리소스 이용 컴포넌트(1502)는 애플리케이션(1506)이 런타임 상태에서 앱 패키지를 이용하여 실행되는 것을 검출하도록 구성될 수 있다. 애플리케이션(1506)이 실행되는 것에 응답하여, 리소스 이용 컴포넌트(1502)는 애플리케이션을 위한 수의적 사용자 경험 기능성을 제공하기 위해 사용될 수 있는 리소스의 세트를 식별하기 위해 병합된 리소스 인덱스(1418)(가령, 도 14의 병합된 리소스 인덱스(1418))를 평가할 수 있다. 예를 들어, 언어 차원, 해상도 차원, 아이콘 해상도 차원 및/또는 다른 차원에 대응하는 다차원 검색이 병합된 리소스 인덱스(1418) 내에서 수행될 수 있다. 예를 들어, 리소스의 세트는 (가령, 현재의 사용자가 말하는 언어에 기반하여) 독일어를 위한 제1 리소스 패키지 내의 독일어 문자열 리소스를, (가령, 클라이언트 디바이스(1420)의 스크린 유형에 기반하여) 고해상도를 위한 제4 리소스 패키지 내의 고해상도 이미지 리소스를, 그리고 (가령, 클라이언트 디바이스(1420)의 그래픽 카드에 기반하여) 고해상도 아이콘을 위한 제6 리소스 패키지 내의 고해상도 아이콘 리소스를 포함할 수 있다. 이런 방식으로, 독일어 문자열 리소스, 고해상도 이미지 리소스 및 고해상도 아이콘 리소스가 애플리케이션(1506)에 의한 이용을 위해 (가령, 요구에 따라(on demand)) 인출될 수 있다(1504).
게임 번들 패키지를 통하여 게임을 배포하는 일 실시예가 도 16의 예시적인 방법(1600)에 의해 도시된다. 1602에서, 그 방법은 시작한다. 1604에서, 게임을 위한 게임 번들 패키지가 생성될 수 있다. 게임 번들 패키지는 하나 이상의 코어 게임 패키지(가령, 게임의 핵심적인 경험(core experience)을 플레이하기 위해 실행될 수 있는 실행가능한 바이너리 파일)를 포함할 수 있다. 일례에서, 게임 번들 패키지는 제1 컴퓨팅 환경(가령, 제1 프로세서 유형, 특정한 운영 체제 등등) 상에서 실행되도록 구성된 게임 코드를 포함하는 제1 코어 게임 패키지를 포함할 수 있다. 다른 예에서, 게임 번들 패키지는 제2 컴퓨팅 환경(가령, 제2 프로세서 유형, 모바일 운영 체제 등등) 상에서 실행되도록 구성된 게임 코드를 포함하는 제2 코어 게임 패키지를 포함할 수 있다.
게임 번들 패키지는 게임을 위한 수의적 사용자 경험 기능성을 제공하는 하나 이상의 리소스 게임 패키지를 포함할 수 있다. 일례에서, 게임 번들 패키지는 게임을 위한 제1 수의적 사용자 경험 기능성을 제공하기 위해 사용되는 제1 부가 하드웨어 인지 데이터를 포함하는 제1 리소스 게임 패키지를 포함할 수 있다. 예를 들어, 제1 부가 하드웨어 인지 데이터는 제1 디스플레이 품질 사용자 경험에 대응할 수 있다(가령, 제1 부가 하드웨어 인지 데이터는 텍스처 화상, 지형 데이터, 캐릭터 기하구조, 그리고/또는 게이밍 그래픽 처리 유닛과 같은 그래픽 가능 하드웨어(graphically capable hardware) 또는 DirectX®와 같은 멀티미디어 API의 게이밍 특징 세트에 의해 지원될 수 있는 상대적으로 높은 디스플레이 품질의 게임 시각화 데이터를 포함할 수 있음). 다른 예에서, 게임 번들 패키지는 게임을 위한 제2 수의적 사용자 경험 기능성을 제공하기 위해 사용되는 제2 부가 하드웨어 인지 데이터를 포함하는 제2 리소스 게임 패키지를 포함할 수 있다. 예를 들어, 제2 부가 하드웨어 인지 데이터는 제2 디스플레이 품질 사용자 경험에 대응할 수 있다(가령, 제2 부가 하드웨어 인지 데이터는 텍스처 화상, 지형 데이터, 캐릭터 기하구조, 그리고/또는 태블릿 그래픽 처리 유닛과 같은 모바일 디바이스 하드웨어 또는 DirectX®와 같은 멀티미디어 API의 모바일 특징 세트에 의해 지원될 수 있는 상대적으로 낮은 디스플레이 품질의 게임 시각화 데이터를 포함할 수 있음). 일례에서, 게임 번들 패키지, 하나 이상의 코어 게임 패키지 및/또는 하나 이상의 리소스 게임 패키지는 (단일 디지털 서명 동작 동안) 디지털 서명 인증서로써 디지털로 서명될 수 있어서 그 패키지들이 시그니처 속성(가령, 디지털 서명 인증서 소유자, 인가의 연쇄 인증, 키 사용, 시그니처 유효화 일자, 시그니처 암호화 강도, 시그니처 타임스탬프 등등)의 세트를 공유할 수 있는데, 이는 클라이언트 디바이스로 하여금 그 패키지들이 선택적으로 및/또는 개별적으로 다운로드되었는지와 무관하게 그 패키지들을 효율적으로 확인하게 할 수 있다.
일례에서, 게임 번들 패키지를 위한 게임 번들 업데이트가 수신될 수 있다(가령, 리소스 패키지의 추가, 제거 또는 수정). 게임 번들 업데이트는 게임 번들 패키지 내에의 포함을 위한 새로운 리소스 게임 패키지를 포함할 수 있다. 게임 번들 패키지는 새로운 리소스 게임 패키지를 포함하도록 업데이트될 수 있다. 게임 번들 패키지가 앱 마켓플레이스 인증 프로세스에 의해 인증된 일례에서, 전체 게임 번들 패키지를 재인증하여야 하는 것보다는, 새로운 리소스 게임 패키지가 인증될 뿐일 수 있다.
1606에서, 하나 이상의 코어 게임 패키지 및/또는 하나 이상의 리소스 게임 패키지가 게임의 선택적 다운로드를 위해 노출될 수 있다. 일례에서, 게임 번들 취득 요청이 클라이언트 디바이스로부터 수신될 수 있다. 게임 번들 취득 요청은 제1 코어 게임 패키지와, 리소스 게임 패키지의 서브세트(가령, 게임 번들 패키지 내의 하나 이상의 리소스 게임 패키지 중 적어도 일부이나 그 전부보다는 적음)를 지정할 수 있다. 이런 방식으로, 제1 코어 게임 패키지 및 리소스 게임 패키지의 서브세트는 게임의 설치를 위해 클라이언트 디바이스에 선택적으로 제공될 수 있다. 1608에서, 그 방법은 종료한다.
게임 번들 패키지를 통하여 게임을 설치하는 일 실시예가 도 17의 예시적인 방법(1700)에 의해 도시된다. 1702에서, 그 방법은 시작한다. 1704에서, 앱 마켓플레이스를 통해 제공되는 게임을 위한 게임 번들 패키지가 식별될 수 있다. 게임 번들 패키지는 하나 이상의 코어 게임 패키지 및/또는 하나 이상의 리소스 게임 패키지를 포함할 수 있다. 하나 이상의 리소스 게임 패키지는 게임을 위한 수의적 사용자 경험 기능성(가령, 게임 패드를 위한 지원, 멀티미디어 API 버전을 위한 지원, 고해상도 텍스처, 대화(chat) 클라이언트를 위한 지원, 게이밍 헤드세트 또는 다른 주변기기를 위한 지원 등등)을 제공하는 수의적 다운로드로서 노출될 수 있다. 1706에서, 게임 번들 패키지로의 액세스를 위해 번들 취득 요청이 앱 마켓플레이스에 보내질 수 있다. 번들 취득 요청은 제1 코어 게임 패키지와, 리소스 게임 패키지의 서브세트(가령, 리소스 게임 패키지의 서브세트는 게임 번들 패키지 내의 하나 이상의 리소스 게임 패키지 중 적어도 일부이나 그 전부보다는 적은 것을 포함할 수 있음)를 지정할 수 있다. 일례에서, 리소스 게임 패키지의 서브세트는 예컨대 클라이언트 디바이스의 하드웨어 리소스 및/또는 멀티미디어 기능성에 기반하여 식별될 수 있다. 1708에서, 제1 앱 패키지 및 리소스 게임 패키지의 서브세트는 클라이언트 디바이스 상에서의 게임의 설치를 위해 획득될 수 있다. 1710에서, 그 방법은 종료한다.
도 18은 게임 번들 패키지(1804)를 통하여 게임을 배포하기 위한 시스템(1800)의 일례를 도시한다. 일례에서, 게임 번들 패키지(1804)는 드라이빙 게임 애플리케이션(driving game application)과 연관된다. 게임 번들화 컴포넌트(game bundling component)(1802)는 하나 이상의 코어 게임 패키지 및/또는 하나 이상의 리소스 게임 패키지를 포함하도록 게임 번들 패키지를 생성하도록 구성될 수 있다. 게임 번들 패키지(1804)는 제1 프로세서 유형 상에서 실행되도록 구성된 게임 코드를 포함하는 제1 코어 게임 패키지(1806) 및 제2 프로세서 유형 상에서 실행되도록 구성된 게임 코드를 포함하는 제2 코어 게임 패키지(1808)를 포함할 수 있다. 게임 번들 패키지(1804)는 게임을 위한 수의적 사용자 경험 기능성을 제공하기 위해 사용되는 부가 하드웨어 인지 데이터를 포함하는 하나 이상의 리소스 게임 패키지를 포함할 수 있다(가령, 고 텍스처 화상(high texture imagery)을 위한 제1 리소스 게임 패키지(1810), 저해상도 텍스처 화상(low resolution texture imagery)을 위한 제2 리소스 게임 패키지(1812), 희소 지형 데이터(sparse terrain data)를 위한 제3 리소스 게임 패키지(1814), 밀집 지형 데이터(dense terrain data)를 위한 제4 리소스 게임 패키지(1816), 복잡한 기하구조(complex geometry)를 위한 제5 리소스 게임 패키지(1818) 및/또는 다른 리소스 게임 패키지). 게임 번들 패키지는 게임의 선택적 다운로드를 위해 노출될 수 있다(가령, 하나 이상의 리소스 게임 패키지가 게임을 위한 수의적 다운로드로서 노출될 수 있음).
시스템(1800)은 배포 컴포넌트(distribution component)(1820)를 포함할 수 있다. 배포 컴포넌트(1820)는 태블릿 디바이스와 같은 클라이언트 디바이스(1826)로부터 게임 번들 패키지(1804)에 대한 번들 취득 요청(1822)을 수신하도록 구성될 수 있다. 번들 취득 요청(1822)은 클라이언트 디바이스(1826)의 하드웨어 리소스(1828)(가령, 게이밍 주변기기, 그래픽 카드 등등) 및/또는 멀티미디어 기능성(1830)(가령, 멀티미디어 API 버전, 디스플레이 드라이버 등등)에 기반하여 제2 코어 게임 패키지(1808), 제2 리소스 게임 패키지(1812) 및 제3 리소스 게임 패키지(1814)를 지정할 수 있다. 예를 들어, 클라이언트 디바이스(1826)는 제2 프로세서 유형, 상대적으로 적은 양의 저장 공간 및/또는 상대적으로 낮은 해상도 디스플레이 기능성 및 하드웨어를 포함할 수 있다. 이런 방식으로, 게임을 획득하고 배치하는 것과 연관된 다운로드 대역폭, 저장 공간 및/또는 컴퓨팅 리소스를 감소시키기 위해서 저 텍스처 화상 및 희소 지형 데이터가 클라이언트 디바이스(1826)에 의해 요청될 수 있다(가령, 지원되지 않는 고해상도 시각적 데이터는 불필요하게 다운로드되지 않음). 이런 방식으로, 배포 컴포넌트(1820)는 게임의 설치를 위해 클라이언트 디바이스(1826)에 제2 코어 게임 패키지(1808), 제2 리소스 게임 패키지(1812) 및/또는 제3 리소스 게임 패키지(1814)를 제공할 수 있다(1824).
또 다른 실시예는 본 문서에서 제시된 기법 중 하나 이상을 구현하도록 구성된 프로세서 실행가능 명령어를 포함하는 컴퓨터 판독가능 매체를 수반한다. 이들 방식으로 고안된 컴퓨터 판독가능 매체 또는 컴퓨터 판독가능 디바이스의 일 예시적 실시예가 도 19에 도시되는데, 여기에서 구현(1900)은 컴퓨터 판독가능 데이터(1906)가 인코딩되는 CD-R, DVD-R, 플래시 드라이브(flash drive), 하드 디스크 드라이브의 원반(platter) 등등과 같은 컴퓨터 판독가능 매체(1908)를 포함한다. 0 또는 1 중 적어도 하나를 포함하는 바이너리 데이터(binary data)와 같은 이 컴퓨터 판독가능 데이터(1906)는 결국 본 문서에 개진된 원리 중 하나 이상에 따라 동작하도록 구성된 컴퓨터 명령어(1904)의 세트를 포함한다. 몇몇 실시예에서, 프로세서 실행가능 컴퓨터 명령어(1904)는 예컨대 도 1의 예시적인 방법(100) 중 적어도 일부, 도 5의 예시적인 방법(500) 중 적어도 일부, 도 10의 예시적인 방법(1000) 중 적어도 일부, 도 13의 예시적인 방법(1300) 중 적어도 일부, 도 16의 예시적인 방법(1600) 중 적어도 일부 및/또는 도 17의 예시적인 방법(1700) 중 적어도 일부와 같은 방법(1902)을 수행하도록 구성된다. 몇몇 실시예에서, 프로세서 실행가능 명령어(1904)는 예컨대 도 2의 예시적인 시스템(200) 중 적어도 일부, 도 4의 예시적인 시스템(400) 중 적어도 일부, 도 6의 예시적인 시스템(600) 중 적어도 일부, 도 7의 예시적인 시스템(700) 중 적어도 일부, 도 8의 예시적인 시스템(800) 중 적어도 일부, 도 9의 예시적인 시스템(900) 중 적어도 일부, 도 11의 예시적인 시스템(1100) 중 적어도 일부, 도 12의 예시적인 시스템(1200) 중 적어도 일부, 도 14의 예시적인 시스템(1400) 중 적어도 일부, 도 15의 예시적인 시스템(1500) 중 적어도 일부 및/또는 도 18의 예시적인 시스템(1800) 중 적어도 일부와 같은 시스템을 구현하도록 구성된다. 본 문서에 제시된 기법에 따라 동작하도록 구성된 많은 그러한 컴퓨터 판독가능 매체가 통상의 기술자에 의해 고안된다.
구조적 특징 및/또는 방법론적 행위에 특정한 말로 대상(subject matter)이 기술되었으나, 부기된 청구항 내에 정의된 대상은 앞서 기술된 특정한 특징 또는 행위에 반드시 한정되는 것은 아님이 이해되어야 한다. 오히려, 앞서 기술된 특정한 특징 및 행위는 청구항을 구현하는 예시적 형태로서 개시된다.
이 출원에서 사용되는 바와 같이, "컴포넌트", "모듈", "시스템", "인터페이스" 및/또는 유사한 것과 같은 용어는 일반적으로 컴퓨터 관련 개체(computer-related entity)(하드웨어든, 하드웨어 및 소프트웨어의 조합이든, 소프트웨어든 또는 실행 중인 소프트웨어든)를 나타내도록 의도된다. 예를 들어, 컴포넌트는 프로세서 상에서 구동되는 프로세스, 프로세서, 객체(object), 실행가능물(executable), 실행의 쓰레드(thread of execution), 프로그램(program) 및/또는 컴퓨터일 수 있으나 이에 한정되지 않는다. 예시로서, 제어기 상에서 구동되는 애플리케이션 및 제어기 양자 모두는 컴포넌트일 수 있다. 하나 이상의 컴포넌트가 프로세스 및/또는 실행의 쓰레드 내에 상주할(reside) 수 있으며 한 컴포넌트가 하나의 컴퓨터 상에 로컬화(localized)되고/되거나 둘 이상의 컴퓨터 간에 분산될 수 있다.
나아가, 청구된 대상은 개시된 대상을 구현하도록 컴퓨터를 제어하기 위한 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 임의의 조합을 산출하기 위해 표준 프로그래밍(programming) 및/또는 엔지니어링(engineering) 기법을 사용하여 방법, 장치 또는 제조 물품(article of manufacture)으로서 구현될 수 있다. 본 문서에서 사용되는 바와 같은 "제조 물품"이라는 용어는 임의의 컴퓨터 판독가능 디바이스, 캐리어(carrier) 또는 매체로부터 액세스가능한 컴퓨터 프로그램을 망라하도록 의도된다. 물론, 당업자는 청구된 대상의 범주 또는 사상으로부터 벗어나지 않고 이 구성에 대해 많은 수정이 행해질 수 있음을 인지할 것이다.
도 20 및 이하의 논의는 본 문서에 개진된 조목 중 하나 이상의 조목의 실시예를 구현하기 위해 적합한 컴퓨팅 환경의 간결한 일반적 설명을 제공한다. 도 20의 운영 환경은 적합한 운영 환경의 단지 하나의 예이며 운영 환경의 사용 또는 기능성의 범주에 관해 어떠한 한정이라도 시사하기 위해 의도된 것이 아니다. 예시적 컴퓨팅 디바이스는 개인용 컴퓨터, 서버 컴퓨터, 핸드헬드(hand-held) 또는 랩톱 디바이스, 모바일 디바이스(이를테면 모바일 전화, 개인용 디지털 보조기기(Personal Digital Assistant: PDA), 미디어 플레이어 및 유사한 것), 다중프로세서(multiprocessor) 시스템, 가전기기(consumer electronics), 미니 컴퓨터, 메인프레임 컴퓨터, 위의 시스템 또는 디바이스 중 임의의 것을 포함하는 분산 컴퓨팅 환경, 그리고 유사한 것을 포함하나 이에 한정되지 않는다.
필수로 된 것은 아니지만, 실시예들은 "컴퓨터 판독가능 명령어"가 하나 이상의 컴퓨팅 디바이스에 의해 실행되는 일반적인 맥락에서 기술된다. 컴퓨터 판독가능 명령어는 (아래에서 논의되는) 컴퓨터 판독가능 매체를 통하여 분산될 수 있다. 컴퓨터 판독가능 명령어는 특정한 작업을 수행하거나 특정한 추상적 데이터 유형을 구현하는 함수, 객체, 애플리케이션 프로그래밍 인터페이스(Application Programming Interface: API), 데이터 구조 및 유사한 것과 같은 프로그램 모듈로서 구현될 수 있다. 전형적으로, 컴퓨터 판독가능 명령어의 기능성은 다양한 환경에서 원하는 바와 같이 조합되거나 분산될 수 있다.
도 20은 본 문서에서 제공된 하나 이상의 실시예를 구현하도록 구성된 컴퓨팅 디바이스(computing device)(2012)를 포함하는 시스템(2000)의 일례를 도시한다. 하나의 구성에서, 컴퓨팅 디바이스(2012)는 적어도 하나의 처리 유닛(2016) 및 메모리(2018)를 포함한다. 컴퓨팅 디바이스의 딱 맞는 구성 및 유형에 따라, 메모리(2018)는 (예컨대 RAM과 같이) 휘발성(volatile), (예컨대 ROM, 플래시 메모리 등등과 같이) 비휘발성(non-volatile) 또는 그 두 개의 어떤 조합일 수 있다. 이 구성은 파선(2014)에 의해 도 20에 도시된다.
다른 실시예에서, 디바이스(2012)는 추가적인 특징 및/또는 기능성을 포함할 수 있다. 예를 들어, 디바이스(2012)는 자기적 스토리지(magnetic storage), 광학적 스토리지(optical storage) 및 유사한 것을 포함하나 이에 한정되지 않는 추가적인 스토리지(가령, 탈착가능(removable) 및/또는 비탈착가능(non-removable))를 포함할 수도 있다. 그러한 추가적인 스토리지는 스토리지(2020)에 의해 도 20에 도시된다. 하나의 실시예에서, 본 문서에 제공된 하나 이상의 실시예를 구현하기 위한 컴퓨터 판독가능 명령어는 스토리지(2020) 내에 있을 수 있다. 스토리지(2020)는 운영 체제, 애플리케이션 프로그램 및 유사한 것을 구현하기 위한 다른 컴퓨터 판독가능 명령어를 저장할 수도 있다. 컴퓨터 판독가능 명령어는 예컨대 처리 유닛(2016)에 의한 실행을 위해 메모리(2018) 내에 로드될 수 있다.
본 문서에서 사용되는 바와 같은 "컴퓨터 판독가능 매체"라는 용어는 컴퓨터 저장 매체를 포함한다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어 또는 다른 데이터와 같은 정보의 저장을 위해 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 탈착가능 및 비탈착가능 매체들을 포함한다. 메모리(2018) 및 스토리지(2020)는 컴퓨터 저장 매체의 예이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 다기능 디스크(Digital Versatile Disk: DVD) 또는 다른 광학적 스토리지, 자기적 카세트, 자기적 테이프, 자기적 디스크 스토리지 또는 다른 자기적 저장 디바이스, 또는 원하는 정보를 저장하기 위해 사용될 수 있고 디바이스(2012)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하나 이에 한정되지 않는다. 임의의 그러한 컴퓨터 저장 매체는 디바이스(2012)의 일부일 수 있다.
디바이스(2012)는 또한 디바이스(2012)로 하여금 다른 디바이스와 통신하게 하는 통신 연결(들)(2026)을 포함할 수 있다. 통신 연결(들)(2026)은 모뎀(modem), 네트워크 인터페이스 카드(Network Interface Card: NIC), 통합된 네트워크 인터페이스(integrated network interface), 무선 주파수 송신기/수신기(radio frequency transmitter/receiver), 적외선 포트(infrared port), USB 연결, 또는 컴퓨팅 디바이스(2012)를 다른 컴퓨팅 디바이스에 연결하기 위한 다른 인터페이스를 포함할 수 있으나 이에 한정되지 않는다. 통신 연결(들)(2026)은 유선 연결 또는 무선 연결을 포함할 수 있다. 통신 연결(들)(2026)은 통신 매체를 송신하고/하거나 수신할 수 있다.
"컴퓨터 판독가능 매체"라는 용어는 통신 매체를 포함할 수 있다. 통신 매체는 전형적으로는 캐리어 파(carrier wave) 또는 다른 전송 메커니즘(transport mechanism)과 같은 "변조된 데이터 신호"(modulated data signal) 내에 컴퓨터 판독가능 명령어 또는 다른 데이터를 구현화하며 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내의 정보를 인코딩하는 그러한 방식으로 그것의 특성 중 하나 이상이 설정되거나 변경된 신호를 포함할 수 있다.
디바이스(2012)는 키보드, 마우스, 펜, 음성 입력 디바이스, 터치 입력 디바이스, 적외선 카메라, 비디오 입력 디바이스 및/또는 임의의 다른 입력 디바이스와 같은 입력 디바이스(들)(2024)를 포함할 수 있다. 하나 이상의 디스플레이, 스피커, 프린터 및/또는 임의의 다른 출력 디바이스와 같은 출력 디바이스(들)(2022)가 또한 디바이스(2012)에 포함될 수 있다. 입력 디바이스(들)(2024) 및 출력 디바이스(들)(2022)가 유선 연결, 무선 연결, 또는 이들의 임의의 조합을 통하여 디바이스(2012)에 연결될 수 있다. 하나의 실시예에서, 다른 컴퓨팅 디바이스로부터의 입력 디바이스 또는 출력 디바이스가 컴퓨팅 디바이스(2012)를 위한 입력 디바이스(들)(2024) 또는 출력 디바이스(들)(2022)로서 사용될 수 있다.
컴퓨팅 디바이스(2012)의 컴포넌트는 버스와 같은 다양한 상호연결에 의해 연결될 수 있다. 그러한 상호연결은 주변 컴포넌트 상호연결(Peripheral Component Interconnect: PCI), 이를테면 PCI 익스프레스(PCI Express), 범용 직렬 버스(Universal Serial Bus: USB), 파이어와이어(firewire)(IEEE 1394), 광학 버스 구조(optical bus structure) 및 유사한 것을 포함할 수 있다. 다른 실시예에서, 컴퓨팅 디바이스(2012)의 컴포넌트는 네트워크에 의해 상호연결될 수 있다. 예를 들어, 메모리(2018)는 네트워크에 의해 상호연결된 상이한 물리적 위치 내에 위치된 다수의 물리적 메모리 유닛으로 이루어질 수 있다.
당업자는 컴퓨터 판독가능 명령어를 저장하기 위해 이용되는 저장 디바이스는 네트워크를 가로질러 분산될 수 있음을 인지할 것이다. 예를 들어, 네트워크(2028)를 통하여 액세스가능한 컴퓨팅 디바이스(2030)는 본 문서에서 제공된 하나 이상의 실시예를 구현하기 위한 컴퓨터 판독가능 명령어를 저장할 수 있다. 컴퓨팅 디바이스(2012)는 컴퓨팅 디바이스(2030)를 액세스하고 실행을 위해 컴퓨터 판독가능 명령어 중 일부 또는 전부를 다운로드할 수 있다. 대안적으로, 컴퓨팅 디바이스(2012)는 필요에 따라 컴퓨터 판독가능 명령어의 단편을 다운로드할 수 있거나, 일부 명령어는 컴퓨팅 디바이스(2012)에서 그리고 일부는 컴퓨팅 디바이스(2030)에서 실행될 수 있다.
실시예의 다양한 동작이 본 문서에서 제공된다. 하나의 실시예에서, 기술된 동작 중 하나 이상은 하나 이상의 컴퓨터 판독가능 매체 상에 저장된 컴퓨터 판독가능 명령어를 구성할 수 있는데, 이는 만약 컴퓨팅 디바이스에 의해 실행되는 경우 컴퓨팅 디바이스로 하여금 기술된 동작을 수행하게 할 것이다. 동작 중 몇몇 또는 전부가 기술된 순서는 이들 동작이 반드시 순서 종속적(order dependent)인 것임을 암시하는 것으로 해석되어서는 안 된다. 이 설명의 이득을 갖는 대안적인 순서화(ordering)가 당업자에 의해 인식될 것이다. 또한, 본 문서에서 제공된 각 실시예 내에 모든 동작이 반드시 존재하는 것은 아님이 이해될 것이다.
또한, 달리 지정되지 않는 한, "제1", "제2" 및/또는 유사한 것은 시간적 양상, 공간적 양상, 순서화 등등을 암시하도록 의도되지 않는다. 오히려, 그러한 용어는 단지 특징, 요소, 항목 등등을 위한 식별자, 이름 등등으로서 사용된다. 예를 들어, 제1 객체 및 제2 객체는 일반적으로 객체 A 및 객체 B 또는 두 개의 상이한 또는 두 개의 똑같은 객체들 또는 동일한 객체에 대응한다.
더욱이, "예시적인"은 반드시 유리한 것으로서는 아니고 예, 인스턴스(instance), 예시 등등으로서 역할을 하는 것을 의미하도록 본 문서에서 사용된다. 본 문서에서 사용되는 바와 같이, "또는"은 배타적인(exclusive) "또는"보다는 포괄적인(inclusive) "또는"을 의미하도록 의도된다. 추가로, 이 출원에서 사용되는 바와 같은 "한" 또는 "일"은 달리 지정되거나 단수 형태로 지향된 것임이 맥락으로부터 분명하지 않은 한 일반적으로 "하나 이상"을 의미하도록 해석되는 것이다. 또한, A 및 B 중 적어도 하나 및/또는 유사한 것은 일반적으로 A 또는 B 또는 A 및 B 양자 모두를 의미한다. 나아가, "포함한다"(includes), "가지는", "가진다", "구비한다" 및/또는 이들의 변형이 상세한 설명에서든 또는 청구항에서든 사용되는 한, 그러한 용어는 "포함하는"(comprising)이라는 용어와 유사한 방식으로 포괄적이도록 의도된다.
또한, 하나 이상의 구현에 관해서 개시가 보여지고 기술되었으나, 균등한 변경 및 수정이 다른 당업자에게 이 명세서 및 첨부된 도면의 읽기 및 이해에 기반하여 상기될 수 있다. 개시는 모든 그러한 수정 및 변경을 포함하고 단지 이하의 청구항의 범주에 의해 한정된다. 전술된 컴포넌트(가령, 요소, 리소스 등등)에 의해 수행되는 다양한 기능과 특히 관련하여, 그러한 컴포넌트를 기술하기 위해 사용된 용어는, 달리 나타내어지지 않는 한, 개시의 본 문서에서 보여진 예시적인 구현 내의 기능을 수행하는 개시된 구조와 구조적으로 균등하지 않더라도, 기술된 컴포넌트의 지정된 기능을 수행하는(가령, 기능적으로 균등한) 임의의 컴포넌트에 대응하도록 의도된다. 추가로, 개시의 특정한 특징이 여러 구현 중 단지 하나에 관해서 개시되었을 수 있으나, 그러한 특징은 임의의 주어진 또는 특정한 적용을 위해 요망되거나 유리할 수 있는 바와 같은 다른 구현의 하나 이상의 다른 특징과 조합될 수 있다.

Claims (10)

  1. 번들 패키지(bundle package)를 디지털로 서명하는 방법으로서,
    애플리케이션과 연관된 번들 패키지를 위한 제1 디지털 시그니처 동작을 수행하는 단계를 포함하되,
    상기 번들 패키지는 제1 앱 패키지(first app package) 및 제1 리소스 패키지(first resource package)를 포함하고, 상기 제1 디지털 시그니처 동작은
    서명된 제1 앱 패키지(signed first app package)를 생성하기 위해 디지털 서명 인증서(digital signing certificate)를 이용하여 제1 앱 패키지 시그니처로써 상기 제1 앱 패키지를 디지털로 서명하는 것과,
    서명된 제1 리소스 패키지(signed first resource package)를 생성하기 위해 상기 디지털 서명 인증서를 이용하여 제1 리소스 패키지 시그니처로써 상기 제1 리소스 패키지를 디지털로 서명하는 것과,
    상기 디지털 서명 인증서를 이용하여 번들 패키지 시그니처로써 서명된 것인 서명된 번들 패키지(signed bundle package)를 생성하는 것을 포함하되,
    상기 제1 앱 패키지 시그니처, 상기 제1 리소스 패키지 시그니처 및 상기 번들 패키지 시그니처에 의해 시그니처 속성의 세트가 공유되는,
    방법.

  2. 제1항에 있어서,
    상기 제1 디지털 시그니처 동작은 상기 디지털 서명 인증서를 이용하는 단일 서명 동작에 대응하는,
    방법.
  3. 제1항에 있어서,
    상기 제1 디지털 시그니처 동작을 수행하는 단계는
    상기 번들 패키지로부터 상기 제1 앱 패키지 및 상기 제1 리소스 패키지를 추출된 제1 앱 패키지(extracted first app package) 및 추출된 제1 리소스 패키지(extracted first resource package)로서 추출하는 단계와,
    상기 추출된 제1 앱 패키지를 서명된 추출된 제1 앱 패키지(signed extracted first app package)로서 디지털로 서명하는 단계와,
    상기 추출된 제1 리소스 패키지를 서명된 추출된 제1 리소스 패키지(signed extracted first resource package)로서 디지털로 서명하는 단계를 포함하는,
    방법.
  4. 제3항에 있어서,
    상기 서명된 추출된 제1 앱 패키지를 상기 번들 패키지에 상기 서명된 제1 앱 패키지로서 반환하는 단계와,
    상기 서명된 추출된 제1 리소스 패키지를 상기 번들 패키지에 상기 서명된 제1 리소스 패키지로서 반환하는 단계와,
    상기 서명된 번들 패키지를 생성하기 위해 상기 번들 패키지를 서명하는 단계를 포함하는
    방법.
  5. 제3항에 있어서,
    상기 서명된 추출된 제1 앱 패키지를 상기 서명된 제1 앱 패키지로서 그리고 상기 서명된 추출된 제1 리소스 패키지를 상기 서명된 제1 리소스 패키지로서 이용하여 새로운 번들 패키지를 생성하는 단계와,
    상기 서명된 번들 패키지를 생성하기 위해 상기 번들 패키지 시그니처를 이용하여 상기 새로운 번들 패키지를 서명하는 단계를 포함하는
    방법.
  6. 제1항에 있어서,
    상기 제1 앱 패키지를 디지털로 서명하는 것은
    상기 제1 앱 패키지가 상기 번들 패키지 내에 포함되어 있되 상기 제1 앱 패키지를 제자리에 있게(in-place) 서명하는 것을 포함하는,
    방법.
  7. 번들 패키지를 디지털로 서명하는 시스템으로서,
    애플리케이션과 연관된 번들 패키지를 위한 제1 디지털 시그니처 동작을 수행하도록 구성된 디지털 시그니처 컴포넌트를 포함하되,
    상기 번들 패키지는 제1 앱 패키지 및 제1 리소스 패키지를 포함하고, 상기 제1 디지털 시그니처 동작은
    서명된 제1 앱 패키지를 생성하기 위해 디지털 서명 인증서를 이용하여 제1 앱 패키지 시그니처로써 상기 제1 앱 패키지를 디지털로 서명하는 것과,
    서명된 제1 리소스 패키지를 생성하기 위해 상기 디지털 서명 인증서를 이용하여 제1 리소스 패키지 시그니처로써 상기 제1 리소스 패키지를 디지털로 서명하는 것과,
    상기 디지털 서명 인증서를 이용하여 번들 패키지 시그니처로써 서명된 것인 서명된 번들 패키지를 생성하는 것을 포함하되,
    상기 제1 앱 패키지 시그니처, 상기 제1 리소스 패키지 시그니처 및 상기 번들 패키지 시그니처에 의해 시그니처 속성의 세트가 공유되는,
    시스템.
  8. 제7항에 있어서,
    상기 디지털 시그니처 컴포넌트는
    상기 제1 앱 패키지가 상기 번들 패키지 내에 포함되어 있되 상기 제1 앱 패키지를 제자리에 있게 서명하고,
    상기 제1 리소스 패키지가 상기 번들 패키지 내에 포함되어 있는 동안 상기 제1 리소스 패키지를 제자리에서 서명하도록 구성된,
    시스템.
  9. 제7항에 있어서,
    상기 디지털 시그니처 컴포넌트는
    상기 번들 패키지로부터 상기 제1 앱 패키지 및 상기 제1 리소스 패키지를 추출된 제1 앱 패키지 및 추출된 제1 리소스 패키지로서 추출하고,
    상기 추출된 제1 앱 패키지를 서명된 추출된 제1 앱 패키지로서 디지털로 서명하며,
    상기 추출된 제1 리소스 패키지를 서명된 추출된 제1 리소스 패키지로서 디지털로 서명하고,
    상기 서명된 추출된 제1 앱 패키지를 상기 번들 패키지에 상기 서명된 제1 앱 패키지로서 반환하며,
    상기 서명된 추출된 제1 리소스 패키지를 상기 번들 패키지에 상기 서명된 제1 리소스 패키지로서 반환하고,
    상기 서명된 번들 패키지를 생성하기 위해 상기 번들 패키지를 서명하도록 구성된,
    시스템.
  10. 제7항에 있어서,
    상기 서명된 번들 패키지는 서명된 제2 리소스 패키지를 포함하고, 상기 시스템은
    상기 서명된 제1 앱 패키지 및 상기 서명된 제1 리소스 패키지를 지정하는 번들 취득 요청(bundle acquisition request)을 클라이언트 디바이스로부터 수신하고,
    상기 애플리케이션의 시그니처 유효화 및 설치를 위해 상기 클라이언트 디바이스에, 상기 서명된 제2 리소스 패키지는 제외하고, 상기 서명된 제1 앱 패키지 및 상기 서명된 제1 리소스 패키지를 선택적으로 제공하도록
    구성된 앱 배포 컴포넌트를 포함하는,
    시스템.
KR1020157034009A 2013-05-30 2013-09-20 번들 패키지 서명 기법 KR20160013883A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/905,554 US20140359605A1 (en) 2013-05-30 2013-05-30 Bundle package signing
US13/905,554 2013-05-30
PCT/US2013/060933 WO2014193447A1 (en) 2013-05-30 2013-09-20 Bundle package signing

Publications (1)

Publication Number Publication Date
KR20160013883A true KR20160013883A (ko) 2016-02-05

Family

ID=49301655

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157034009A KR20160013883A (ko) 2013-05-30 2013-09-20 번들 패키지 서명 기법

Country Status (11)

Country Link
US (1) US20140359605A1 (ko)
EP (1) EP3005204A1 (ko)
JP (1) JP2016522649A (ko)
KR (1) KR20160013883A (ko)
CN (1) CN105378740A (ko)
AU (1) AU2013390785A1 (ko)
BR (1) BR112015029095A8 (ko)
CA (1) CA2910108A1 (ko)
MX (1) MX2015016346A (ko)
RU (1) RU2015151183A (ko)
WO (1) WO2014193447A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8495570B2 (en) * 2010-12-23 2013-07-23 Microsoft Corporation Resource deployment based on conditions
US9766870B2 (en) * 2013-05-30 2017-09-19 Microsoft Technology Licensing, Llc Bundle package generation
US9323514B2 (en) 2013-05-30 2016-04-26 Microsoft Technology Licensing, Llc Resource package indexing
CN109977086B (zh) * 2013-11-29 2023-09-01 华为终端有限公司 终端间应用共享的方法和终端
US20170286082A1 (en) * 2016-03-31 2017-10-05 Microsoft Technology Licensing, Llc De-duplication during flashing of mobile devices
CN106569880B (zh) * 2016-11-07 2020-12-22 Tcl科技集团股份有限公司 一种Android应用间动态共享资源的方法及系统
US10671739B2 (en) * 2018-01-17 2020-06-02 Salesforce.Com, Inc. Managing the sharing of common library packages with subscribers
DE102018202626A1 (de) * 2018-02-21 2019-08-22 Siemens Aktiengesellschaft Verfahren zur rechnergestützten Parametrierung eines technischen Systems
US11290268B2 (en) * 2018-09-13 2022-03-29 Apple Inc. Mode switching with multiple security certificates in a wireless device
US11470046B2 (en) * 2019-08-26 2022-10-11 Bank Of America Corporation Multi-level data channel and inspection architecture including security-level-based filters for diverting network traffic
US11956232B2 (en) * 2021-03-19 2024-04-09 Okta, Inc. Integration packaging for a multi-tenant computing environment

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101359350B (zh) * 1995-02-13 2012-10-03 英特特拉斯特技术公司 用于安全地管理在数据项上的操作的方法
US6952823B2 (en) * 1998-09-01 2005-10-04 Pkware, Inc. Software patch generator using compression techniques
US6397381B1 (en) * 1998-09-21 2002-05-28 Microsoft Corporation System and method for repairing a damaged application program
US7073063B2 (en) * 1999-03-27 2006-07-04 Microsoft Corporation Binding a digital license to a portable device or the like in a digital rights management (DRM) system and checking out/checking in the digital license to/from the portable device or the like
US6675382B1 (en) * 1999-06-14 2004-01-06 Sun Microsystems, Inc. Software packaging and distribution system
US6983315B1 (en) * 2000-01-18 2006-01-03 Wrq, Inc. Applet embedded cross-platform caching
US6879988B2 (en) * 2000-03-09 2005-04-12 Pkware System and method for manipulating and managing computer archive files
US6883168B1 (en) * 2000-06-21 2005-04-19 Microsoft Corporation Methods, systems, architectures and data structures for delivering software via a network
US6874143B1 (en) * 2000-06-21 2005-03-29 Microsoft Corporation Architectures for and methods of providing network-based software extensions
US7124289B1 (en) * 2000-10-31 2006-10-17 Opsware Inc. Automated provisioning framework for internet site servers
US20030037327A1 (en) * 2001-08-15 2003-02-20 International Business Machines Corporation Run-time rule-based topological installation suite
US20030200168A1 (en) * 2002-04-10 2003-10-23 Cullen Andrew A. Computer system and method for facilitating and managing the project bid and requisition process
EP1497721B1 (en) * 2002-04-11 2015-04-01 International Business Machines Corporation A software distribution method and system
EP1361509B1 (en) * 2002-05-08 2013-07-10 Sap Ag Software delivery manager
US20040068757A1 (en) * 2002-10-08 2004-04-08 Heredia Edwin Arturo Digital signatures for digital television applications
US20040194059A1 (en) * 2003-03-27 2004-09-30 International Business Machines Corporation Method to deploy software using an open service gateway initiative (OSGi) framework
US7694293B2 (en) * 2003-09-26 2010-04-06 Hewlett-Packard Development Company, L.P. Update package catalog for update package transfer between generator and content server in a network
US20060136907A1 (en) * 2004-12-20 2006-06-22 Microsoft Corporation Language-neutral and language-specific installation packages for software setup
US20070067309A1 (en) * 2005-08-05 2007-03-22 Realnetworks, Inc. System and method for updating profiles
US20070074031A1 (en) * 2005-09-29 2007-03-29 Research In Motion Limited System and method for providing code signing services
EP2527978A3 (en) * 2005-10-07 2013-01-09 Citrix Systems, Inc. Methods for selecting between a predetermined number of execution methods for an application program
US20090307781A1 (en) * 2005-12-27 2009-12-10 Nec Corporation Program execution control method, its device, and execution control program for same
EP1818820A1 (en) * 2006-02-03 2007-08-15 Research In Motion Limited System and method for installing custom services on a component-based application platform
US20070250711A1 (en) * 2006-04-25 2007-10-25 Phonified Llc System and method for presenting and inputting information on a mobile device
US8185872B2 (en) * 2006-11-27 2012-05-22 Red Hat, Inc. Cross-platform software package generation
WO2008132772A1 (ja) * 2007-04-19 2008-11-06 Panasonic Corporation データ管理装置、保存データの管理方法、及びコンピュータプログラム
US8434077B2 (en) * 2007-10-18 2013-04-30 International Business Machines Corporation Upgrading virtual resources
US9208308B2 (en) * 2007-11-27 2015-12-08 The Boeing Company Alternate parts signature list file
US8418168B2 (en) * 2008-05-29 2013-04-09 Research In Motion Limited Method and system for performing a software upgrade on an electronic device connected to a computer
US20090328028A1 (en) * 2008-06-25 2009-12-31 O'rourke Connor Electronic documents and methods for updating resource files for an application
US8572580B2 (en) * 2008-07-28 2013-10-29 Microsoft Corporation Computer application packages with customizations
US9317274B2 (en) * 2008-08-06 2016-04-19 Lenovo (Singapore) Pte. Ltd. Apparatus, system and method for integrated customization of multiple disk images independent of operating system type, version or state
CN101763269A (zh) * 2010-01-27 2010-06-30 中兴通讯股份有限公司 一种软件安装包的制作方法
CN102473220B (zh) * 2010-05-07 2015-06-17 松下电器产业株式会社 信息处理装置、信息处理方法以及程序分发系统
CA2716982C (en) * 2010-10-06 2016-07-19 Ibm Canada Limited - Ibm Canada Limitee Digital signatures on composite resource documents
US8694981B2 (en) * 2010-11-17 2014-04-08 Apple Inc. Shared resource dependencies
US9544396B2 (en) * 2011-02-23 2017-01-10 Lookout, Inc. Remote application installation and control for a mobile device
US10303526B2 (en) * 2011-03-08 2019-05-28 Facebook, Inc. Device specific handling of user interface components
US20120260246A1 (en) * 2011-04-06 2012-10-11 International Business Machines Corporation Software application installation
CA2756102A1 (en) * 2011-11-01 2012-01-03 Cit Global Mobile Division Method and system for localizing an application on a computing device
JP5056995B1 (ja) * 2012-04-24 2012-10-24 大日本印刷株式会社 改竄検知が可能なアプリケーションプログラムの配布実行方法
US20140325502A1 (en) * 2012-06-29 2014-10-30 Giannis Zarifis Packaging, distribution and de-packaging of device-independent software applications
WO2014062804A1 (en) * 2012-10-16 2014-04-24 Citrix Systems, Inc. Application wrapping for application management framework
RU2523113C1 (ru) * 2012-12-25 2014-07-20 Закрытое акционерное общество "Лаборатория Касперского" Система и способ целевой установки сконфигурированного программного обеспечения
KR101489199B1 (ko) * 2013-03-29 2015-02-03 주식회사 엘지씨엔에스 컴퓨터에서 실행 가능한 어플리케이션 패키지를 생성하는 방법, 이를 수행하는 컴퓨터 실행 장치 및 이를 저장한 기록 매체

Also Published As

Publication number Publication date
BR112015029095A2 (pt) 2017-07-25
AU2013390785A1 (en) 2015-11-12
CA2910108A1 (en) 2014-12-04
US20140359605A1 (en) 2014-12-04
CN105378740A (zh) 2016-03-02
WO2014193447A1 (en) 2014-12-04
BR112015029095A8 (pt) 2020-03-17
EP3005204A1 (en) 2016-04-13
RU2015151183A (ru) 2017-06-01
MX2015016346A (es) 2016-03-01
JP2016522649A (ja) 2016-07-28

Similar Documents

Publication Publication Date Title
US10015282B2 (en) Context-based selective downloading of application resources
EP3005160B1 (en) Bundle package retrieving
US9323514B2 (en) Resource package indexing
US9766870B2 (en) Bundle package generation
KR20160013883A (ko) 번들 패키지 서명 기법
JP5409767B2 (ja) 展開可能オブジェクト階層内におけるアプリケーション管理
US8589862B2 (en) Application loading
US9990191B2 (en) Cloud-based localization platform
US20130232229A1 (en) Distribution of Application Files
US11797273B2 (en) System and method for enhancing component based development models with auto-wiring
CN111357241A (zh) 使用自动化通用连接器封装将云应用程序集成到云服务代理平台中的系统和方法
JP2020529066A (ja) クラウドサービスブローカーシステムにおいてオファーの機能を自動的に検証する技術
CN111506300A (zh) 一种小程序生成方法、装置、设备及存储介质
US20170132197A1 (en) Creating and modifying applications from a mobile device
US20240098151A1 (en) ENHANCED PROCESSING OF USER PROFILES USING DATA STRUCTURES SPECIALIZED FOR GRAPHICAL PROCESSING UNITS (GPUs)
US9471299B1 (en) Updating code within an application
US20180088930A1 (en) Updating code within an application
AU2013206403A1 (en) Computer engine

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid