KR20140001172A - 애플리케이션을 업데이트하는 방법 - Google Patents

애플리케이션을 업데이트하는 방법 Download PDF

Info

Publication number
KR20140001172A
KR20140001172A KR1020130074794A KR20130074794A KR20140001172A KR 20140001172 A KR20140001172 A KR 20140001172A KR 1020130074794 A KR1020130074794 A KR 1020130074794A KR 20130074794 A KR20130074794 A KR 20130074794A KR 20140001172 A KR20140001172 A KR 20140001172A
Authority
KR
South Korea
Prior art keywords
side application
package
application package
server
client
Prior art date
Application number
KR1020130074794A
Other languages
English (en)
Other versions
KR102042723B1 (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 KR20140001172A publication Critical patent/KR20140001172A/ko
Application granted granted Critical
Publication of KR102042723B1 publication Critical patent/KR102042723B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

방법은 원격 컴퓨팅 디바이스로부터, 원격 컴퓨팅 디바이스에 저장된 클라이언트측 애플리케이션 패키지에 대응하는 제1 서명을 포함하는 업데이트 요청을 수신하는 단계를 포함한다. 방법은 또한 제1 서명을 이용하여 제1 서버측 애플리케이션 패키지를 식별하는 단계를 포함한다. 방법은 제1 서버측 애플리케이션 패키지 및 제2 서버측 애플리케이션 패키지를 입력으로서 이용하여 차등 업데이트 패키지를 생성하는 단계를 더 포함하며, 차등 업데이트 패키지는 클라이언트측 애플리케이션 패키지에 적용될 때, 클라이언트측 애플리케이션 패키지를 제2 서버측 애플리케이션 패키지와 기능적으로 동등하게 수정하도록 동작할 수 있다.

Description

애플리케이션을 업데이트하는 방법{METHODS FOR UPDATING APPLICATIONS}
<관련 출원>
본 출원은 2012년 6월 27일자로 출원된 미국 특허 가출원 제61/665,255호의 혜택을 주장한다.
<배경 기술>
최근, 모바일 전화, 태블릿 및 랩탑 컴퓨터와 같은 모바일 컴퓨팅 디바이스가 급격하게 증가했다. 이 디바이스들은 프로세서, 메모리, 및 인터넷을 포함하는 광역 및 근거리 네트워크를 통해 통신하는 능력를 구비할 수 있다. 이 디바이스들은 그들이 통상적으로 "앱"이라고 지칭되는 광범위한 컴퓨터 프로그램을 실행할 수 있게 해 주는 운영 체제를 구비할 수 있다. 모바일 컴퓨팅 디바이스의 사용자는 모바일 전화 네트워크 또는 무선 근거리 네트워크를 통한 서버와의 직접 통신에 의해 컴퓨터 프로그램 및 기타 컨텐츠를 다운로드할 수 있다.
앱 작성자는 가끔 앱을 위한 업데이트를 발행한다. 전형적인 앱의 라이프사이클 동안, 작성자에 의해 복수의 업데이트가 발행될 수 있다. 애플리케이션을 업데이트하는 한가지 방법은 예를 들어, 업데이트된 애플리케이션의 완전한 사본을 서버로부터 모바일 디바이스로 다운로드함으로써 얻는 것이다. 그리고나서, 그 애플리케이션의 오래된 버전은 업데이트된 버전으로 대체된다. 업데이트된 애플리케이션의 완전한 사본이 서버로부터 모바일 디바이스로 전송되기 때문에, 이러한 전송에 연관된 대역폭 비용은, 업데이트된 버전에서, 대체되는 버전에 비교하여 애플리케이션에 행해진 변경의 범위에 무관하게, 업데이트된 애플리케이션의 완전한 사본의 크기에 기초한다.
본 명세서는 애플리케이션을 업데이트하는 방법에 관한 것이다.
개시된 실시예의 한 양태는 원격 컴퓨팅 디바이스로부터, 원격 컴퓨팅 디바이스에 저장된 클라이언트측 애플리케이션 패키지에 대응하는 제1 서명을 포함하는 업데이트 요청을 수신하는 단계를 포함하는 방법이다. 방법은 또한 제1 서명을 이용하여 제1 서버측 애플리케이션 패키지를 식별하는 단계를 포함한다. 방법은 제1 서버측 애플리케이션 패키지 및 제2 서버측 애플리케이션 패키지를 입력으로서 이용하여 차등 업데이트 패키지(differential update package)를 생성하는 단계를 더 포함한다. 차등 업데이트 패키지는 클라이언트측 애플리케이션 패키지에 적용될 때, 클라이언트측 애플리케이션 패키지를 제2 서버측 애플리케이션 패키지와 기능적으로 동등하게 수정하도록 동작할 수 있다.
개시된 실시예의 다른 양태는 하나 이상의 프로세서에 의해 실행가능하며, 실행 시에 하나 이상의 프로세서로 하여금 동작을 수행하게 하는 프로그램 명령어들을 포함하는 저장 매체이다. 동작은 원격 컴퓨팅 디바이스로부터, 원격 컴퓨팅 디바이스에 저장된 클라이언트측 애플리케이션 패키지에 대응하는 제1 서명을 포함하는 업데이트 요청을 수신하는 것을 포함한다. 동작은 또한 제1 서명을 이용하여 제1 서버측 애플리케이션 패키지를 식별하는 것을 포함한다. 동작은 제1 서버측 애플리케이션 패키지 및 제2 서버측 애플리케이션 패키지를 입력으로서 이용하여 차등 업데이트 패키지를 생성하는 것을 더 포함한다. 차등 업데이트 패키지는 클라이언트측 애플리케이션 패키지에 적용될 때, 클라이언트측 애플리케이션 패키지를 제2 서버측 애플리케이션 패키지와 기능적으로 동등하게 수정하도록 동작할 수 있다.
개시된 실시예의 다른 양태는 하나 이상의 프로세서, 및 하나 이상의 프로세서에 의해 이용되는 프로그램 명령어를 저장하기 위한 하나 이상의 메모리 디바이스를 포함하는 장치이다. 프로그램 명령어는 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서로 하여금, 원격 컴퓨팅 디바이스로부터, 원격 컴퓨팅 디바이스에 저장된 클라이언트측 애플리케이션 패키지에 대응하는 제1 서명을 포함하는 업데이트 요청을 수신하게 한다. 프로그램 명령어는 또한 하나 이상의 프로세서로 하여금 제1 서명을 이용하여 제1 서버측 애플리케이션 패키지를 식별하고, 제1 서버측 애플리케이션 패키지 및 제2 서버측 애플리케이션 패키지를 입력으로서 이용하여 차등 업데이트 패키지를 생성하게 하며, 차등 업데이트 패키지는 클라이언트측 애플리케이션 패키지에 적용될 때, 클라이언트측 애플리케이션 패키지를 제2 서버측 애플리케이션 패키지와 기능적으로 동등하게 수정하도록 동작할 수 있다.
개시된 실시예의 다른 양태는 컴퓨팅 디바이스로부터 하나 이상의 서버 컴퓨터로, 컴퓨팅 디바이스에 저장된 클라이언트측 애플리케이션 패키지에 대응하는 업데이트 요청을 전송하는 단계를 포함하는 방법인데, 이 클라이언트측 애플리케이션 패키지는 복수의 애플리케이션 컴포넌트를 포함한다. 방법은 또한 요청에 응답하여 차등 업데이트 패키지를 수신하는 단계를 포함하며, 차등 업데이트 패키지는 복수의 델타를 포함하고, 각각의 델타는 클라이언트측 애플리케이션 패키지에 포함된 애플리케이션 컴포넌트들 중 하나에 대응한다. 방법은 또한 복수의 애플리케이션 컴포넌트로부터의 애플리케이션 컴포넌트들 중 적어도 일부를 수정하기 위해 복수의 델타를 적용하는 단계를 더 포함한다.
개시된 실시예의 다른 양태는 하나 이상의 프로세서에 의해 실행가능하며, 실행 시에 하나 이상의 프로세서로 하여금 동작을 수행하게 하는 프로그램 명령어들을 포함하는 저장 매체이다. 동작은 컴퓨팅 디바이스로부터 하나 이상의 서버 컴퓨터로, 컴퓨팅 디바이스에 저장된 클라이언트측 애플리케이션 패키지에 대응하는 업데이트 요청을 전송하는 것을 포함한다. 클라이언트측 애플리케이션 패키지는 복수의 애플리케이션 컴포넌트를 포함한다. 동작은 또한 요청에 응답하여 차등 업데이트 패키지를 수신하는 것을 포함하며, 차등 업데이트 패키지는 복수의 델타를 포함하고, 각각의 델타는 클라이언트측 애플리케이션 패키지에 포함된 애플리케이션 컴포넌트들 중 하나에 대응한다. 동작은 또한 복수의 애플리케이션 컴포넌트로부터의 애플리케이션 컴포넌트들 중 적어도 일부를 수정하기 위해 복수의 델타를 적용하는 것을 포함한다.
개시된 실시예의 다른 양태는 하나 이상의 프로세서, 및 하나 이상의 프로세서에 의해 이용되는 프로그램 명령어를 저장하기 위한 하나 이상의 메모리 디바이스를 포함하는 장치이다. 프로그램 명령어는 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서로 하여금, 컴퓨팅 디바이스로부터 하나 이상의 서버 컴퓨터로, 컴퓨팅 디바이스에 저장된 클라이언트측 애플리케이션 패키지에 대응하는 업데이트 요청을 전송하게 하며, 클라이언트측 애플리케이션 패키지는 복수의 애플리케이션 컴포넌트를 포함한다. 프로그램 명령어는 또한 하나 이상의 프로세서로 하여금, 요청에 응답하여 차등 업데이트 패키지를 수신하게 하며, 차등 업데이트 패키지는 복수의 델타를 포함하고, 각각의 델타는 클라이언트측 애플리케이션 패키지에 포함된 애플리케이션 컴포넌트들 중 하나에 대응한다. 프로그램 명령어는 또한 하나 이상의 프로세서로 하여금, 복수의 애플리케이션 컴포넌트로부터의 애플리케이션 컴포넌트들 중 적어도 일부를 수정하기 위해 복수의 델타를 적용하게 한다.
본 명세서의 설명은 첨부 도면을 참조하는데, 여러 도면들 전체에서 유사한 참조번호는 유사한 부분을 참조한다.
도 1은 애플리케이션을 원격 설치하기 위한 시스템의 블록도이다.
도 2는 컴퓨팅 디바이스의 예를 위한 하드웨어 구성의 예를 도시한 블록도이다.
도 3은 애플리케이션 패키지를 업데이트하는 예를 도시한 도면이다.
도 4는 애플리케이션 패키지의 컨텐츠를 업데이트하는 예를 보여주는 예시적인 흐름도이다.
도 5는 컴퓨팅 디바이스와 하나 이상의 서버 컴퓨터 간의 통신을 보여주는 도면이다.
도 6은 애플리케이션을 업데이트하기 위한 프로세스의 제1 예를 보여주는 흐름도이다.
도 7은 차등 패치를 생성하기 위한 프로세스의 예를 보여주는 흐름도이다.
여기에 설명되는 시스템 및 방법에서, 업데이트는 컴퓨팅 디바이스에서 애플리케이션 패키지로서 저장된 애플리케이션에 적용된다. 애플리케이션 패키지는 예를 들어, 코드, 그래픽 및/또는 기타 미디어 파일과 같은 소프트웨어 애플리케이션의 컴포넌트들 전부를 포함하는 단일 파일일 수 있다. 애플리케이션 패키지의 일례는 안드로이드 운영 체제에 의해 이용되는, APK 파일 포맷으로도 알려져 있는 안드로이드 애플리케이션 패키지 파일 포맷이다.
차등 업데이트 패치는 원격 컴퓨팅 디바이스에 설치된 어플리케이션의 버전 및 애플리케이션의 현재 버전에 기초하여 선택 또는 생성된다. 차등 업데이트 패치를 생성하는 것은 원격 컴퓨팅 디바이스로부터 수신된 서명에 기초하여 서버측 저장소로부터 애플리케이션 패키지 파일을 선택하여, 애플리케이션 패키지 파일 자체를 서버에 전송하지 않고서도 원격 컴퓨팅 디바이스에 설치되어 있는 것과 실질적으로 동일한 애플리케이션 패키지 파일을 이용하여 차등 업데이트 패치가 생성되게 하는 것을 포함한다. 차등 업데이트 패치를 생성하는 것은 애플리케이션의 버전들 각각을 위한 애플리케이션 패키지를 언팩(unpacking)(예를 들어, 압축 해제)하고, 이진 업데이트 패키지의 컴포넌트들을 개별적으로 업데이트하는 패치 명령어를 생성하는 것을 포함할 수 있다. 패치 명령어의 일례는 이진 데이터 델타이다. 원격 컴퓨팅 디바이스에서 차등 업데이트 패치를 적용하기 위해, 원격 컴퓨팅 디바이스에서의 애플리케이션 패키지가 언팩되고, 예를 들어 개별 컴포넌트들 각각에 이진 데이터 델타를 적용함으로써 개별 컴포넌트들에 차등 업데이트가 적용되고, 컴포넌트들이 팩(예를 들어, 압축)되어 애플리케이션을 위한 업데이트된 애플리케이션 패키지를 생성한다.
도 1은 일 구현에 따른 시스템(100)의 블록도이다. 시스템(100)은 컴퓨팅 디바이스(110)를 포함한다. 컴퓨팅 디바이스(110)는 네트워크(120)에 의해 하나 이상의 서버 컴퓨터에 접속된다. 하나 이상의 서버 컴퓨터는 업데이트 관리자(130), 업데이트 전달 서비스(140), 저장소(150), 캐시 서비스(160) 및 패치 생성기(170)를 포함할 수 있다. 이들 전부가 서로서로, 그리고 네트워크(120)를 통해 컴퓨팅 디바이스(110)와 통신할 수 있다.
컴퓨팅 디바이스(110)는 스마트폰, 태블릿 컴퓨터, 랩탑 컴퓨터, 또는 네트워크(120)를 통해 하나 이상의 서버 컴퓨터에 접속할 수 있는 다른 모바일 컴퓨팅 디바이스일 수 있다. 애플리케이션은 애플리케이션 패키지 파일의 형태로 컴퓨팅 디바이스(110)에 존재하고/거나 설치될 수 있다. 애플리케이션 패키지 파일의 예는 애플리케이션에 대응하는 컴포넌트 파일들을 위한 컨테이너의 역할을 하는 파일이다. 애플리케이션 패키지 파일은 압축되고/거나 암호화될 수 있다. 일부 구현들에서, 컴퓨팅 디바이스(110)는 애플리케이션 패키지를 언팩(압축해제)하여, 애플리케이션에 대응하는 복수의 컴포넌트 파일을 만들어내도록 동작할 수 있다.
네트워크(120)는 LAN, WAN 및 인터넷을 임의의 조합으로 포함하는 다양한 유형의 다수의 네트워크를 포함할 수 있다. 유선 및/또는 무선 통신 프로토콜이 이용될 수 있다.
업데이트 관리자(130)는 컴퓨팅 디바이스(110)로부터 업데이트를 위한 요청을 수신하도록 동작할 수 있다. 요청은 애플리케이션 패키지의 현재 설치된 버전을 식별할 수 있고, 선택적으로는 애플리케이션 패키지의 요청된 버전도 식별할 수 있다. 애플리케이션의 현재 설치된 버전 및 애플리케이션의 요청된 버전은 서명에 의해 요청 내에서 식별될 수 있다. 서명은 임의의 적절한 형태의 고유한 또는 고유하지 않은 서명일 수 있으며, 예를 들어 지정된 입력이 주어질 때 항상 동일한 출력을 생성할 알고리즘에 의해 생성될 수 있다. 일부 구현들에서, 서명은 대응 애플리케이션 패키지 파일보다 몇십 배 짧은 영숫자 문자열과 같이 고정된 것일 수 있다. 임의의 예로서, 서명은 SHA256 다이제스트와 같은 해시 코드일 수 있다. 요청은 또한 컴퓨팅 디바이스(110)에 대응하는 하드웨어 또는 소프트웨어 정보와 같은 추가 정보를 포함할 수 있다.
업데이트 관리자(130)는 요청에 포함된 정보를 이용하여 컴퓨팅 디바이스(110)에 정보를 전송할 수 있다. 본 명세서에서 논의될 바와 같이, 정보는 애플리케이션을 업데이트하기 위한 하나 이상의 옵션을 포함할 수 있다. 정보는 애플리케이션의 업데이트된 버전의 설치를 위한 저장 공간 요건과 같이, 애플리케이션의 업데이트에 관한 메타데이터를 더 포함할 수 있다.
업데이트 전달 서비스(140)는 컴퓨팅 디바이스(110)에의 업데이트 패키지의 전송을 야기하도록 동작할 수 있다. 업데이트 패키지는 애플리케이션 패키지의 현재 설치된 버전과 애플리케이션 패키지의 요청된 버전에 기초하여 선택되는 패치 형태(여기에서 차등 업데이트 패키지라도고 지칭됨)일 수 있다. 전송은 저장소(150) 또는 캐시 서비스(160)를 이용하여 이루어질 수 있다.
패치 생성기(170)는 애플리케이션에 대응하는 컴포넌트 파일들 또는 애플리케이션 패키지 파일을 수정하기 위해 컴퓨팅 디바이스(110)에서 적용될 수 있는 패치를 생성하도록 동작할 수 있다. 패치는 애플리케이션의 특정 쌍의 버전들에 대응한다. 예를 들어, 애플리케이션 패키지의 3개의 버전(v1, v2 및 v3로 지정됨)이 존재하는 경우, v1에 적용되어 v3와 기능적으로 동등한 업데이트된 애플리케이션 패키지를 만들어내는 제1 패치가 생성될 수 있고, v2에 적용되어 v3와 기능적으로 동등한 업데이트된 애플리케이션 패키지를 만들어내는 제2 패치가 생성될 수 있다.
패치는 컴퓨팅 디바이스(110)로부터 수신된 업데이트 요청에 응답하여 컴퓨팅 디바이스(110)에 설치된 애플리케이션 패키지의 이전 버전에의 액세스 없이 패치 생성기에 의해 자동적으로 생성될 수 있다. 컴퓨팅 디바이스(110)는 애플리케이션 패키지의 설치된 버전을 식별하는 정보를 전송할 수 있다. 정보는 예를 들어, SHA-1 해시 또는 SHA256 해시와 같은 버전 번호 또는 서명일 수 있다. 대응하는 애플리케이션 패키지의 로컬 사본은 패치 생성기(170)에 의해 액세스된다. 서명은 저장소(150)에서 애플리케이션 패키지의 사본을 식별하기 위해 이용될 수 있으며, 이것은 저장소(150)에 위치된 애플리케이션 패키지가 모바일 디바이스(110)에 위치된 애플리케이션 패키지와 동일하며, 따라서 모바일 디바이스(110)에서의 애플리케이션 패키지에 적용될 수 있는 업데이트 패키지를 생성하기 위한 기초로서 이용될 수 있음을 나타낸다.
도 2는 컴퓨팅 디바이스(110)를 위한 하드웨어 구성의 예의 블록도이다. 업데이트 관리자(130), 업데이트 전달 서비스(140), 저장소(150), 캐시 서비스(160) 및 패치 생성기(170)에 대하여 유사한 하드웨어 구성이 이용될 수 있다.
컴퓨팅 디바이스(110)의 CPU(220)는 종래의 중앙 프로세싱 유닛일 수 있다. 대안적으로, CPU(220)는 현재 존재하거나 추후에 개발될, 정보를 조작 또는 처리할 수 있는 임의의 다른 유형의 디바이스 또는 복수의 디바이스일 수 있다. 개시된 예들이 도시된 바와 같이 단일 프로세서(예를 들어, CPU(220))로 실시될 수 있지만, 하나보다 많은 프로세서를 이용하면 속도 및 효율 면에서 이점을 얻을 수 있다.
컴퓨팅 디바이스(110)는 랜덤 액세스 메모리 디바이스(RAM)와 같은 메모리(222)를 포함할 수 있다. 임의의 다른 적절한 유형의 저장 디바이스가 메모리(222)로서 이용될 수 있다. 메모리(222)는 버스(226)를 이용하여 CPU(220)에 의해 액세스될 수 있는 코드 및 데이터(224)를 포함할 수 있다. 메모리(222)는 운영 체제(228) 및 하나 이상의 애플리케이션 프로그램(230)을 더 포함할 수 있다. 애플리케이션 프로그램(230)은 CPU(220)가 여기에 설명된 방법을 수행할 수 있게 하는 프로그램들을 포함할 수 있다.
저장 디바이스(232)는 하드 디스크 드라이브, 메모리 디바이스, 플래시 드라이브 또는 광학 드라이브와 같은 임의의 적절한 컴퓨터 판독가능한 매체의 형태로 선택적으로 제공될 수 있다. 키보드, 마우스 또는 제스처 감지 입력 디바이스와 같은 하나 이상의 입력 디바이스(234)는 사용자 입력을 수신하고, 사용자 입력을 나타내는 신호 또는 데이터를 CPU(220)에 출력할 수 있다. 디스플레이 디바이스(236)와 같은 하나 이상의 출력 디바이스가 제공될 수 있다. LCD(액정 디스플레이) 또는 CRT(cathode-ray tube)와 같은 디스플레이 디바이스(236)는 예를 들어 비디오 신호를 수신한 것에 응답하여, 출력이 사용자에게 제공되는 것을 허용한다.
도 1은 컴퓨팅 디바이스(110)의 CPU(220) 및 메모리(222)를 단일 유닛으로 통합된 것으로서 도시하지만, 다른 구성이 이용될 수 있다. CPU(220)의 동작은 로컬 영역 또는 다른 네트워크를 거치거나 직접 연결될 수 있는 복수의 머신(각각의 머신이 하나 이상의 프로세서를 가짐)에 걸쳐 분산될 수 있다. 메모리(222)는 컴퓨팅 디바이스(110)의 동작을 수행하는 복수의 머신 내의 메모리 또는 네트워크 기반 메모리와 같이, 복수의 머신에 걸쳐 분산될 수 있다. 여기에서는 단일 버스로서 도시되지만, 컴퓨팅 디바이스(110)의 버스(226)는 복수의 버스로 구성될 수 있다. 또한, 저장 디바이스(232)는 컴퓨팅 디바이스(110)의 다른 컴포넌트들에 직접 연결될 수 있거나 네트워크를 통해 액세스될 수 있고, 하나의 메모리 카드와 같은 단일의 집적된 유닛 또는 복수의 메모리 카드와 같은 복수의 유닛을 포함할 수 있다. 따라서, 컴퓨팅 디바이스(110)는 광범위하게 다양한 구성으로 구현될 수 있다.
도 3은 애플리케이션 패키지를 업데이트하는 예(300)를 보여주는 도면이다. 대부분의 경우에서, 이것은 애플리케이션 패키지의 업데이트된 버전의 완전한 사본을 다운로드하는 것에 비하여 훨씬 감소된 데이터 다운로드 크기를 허용하며, 이는 대역폭 비용의 감소를 유발한다. 본 예에서, 애플리케이션의 원래 버전(310) 및 업데이트된 버전(320)은 패치 생성기(170)에서와 같이 서버측에 존재한다. 원래 버전(310) 및 업데이트된 버전(320) 각각은 애플리케이션 패키지 파일일 수 있다. 원래 버전(310) 및 업데이트된 버전(320)을 입력으로서 이용하여 차등 패치 생성 프로세스(330)가 수행되며, 패치(340)가 결과로서 생성된다. 패치(340)는 입력으로서 이용되는 애플리케이션 패키지 파일들 사이의 차이에 기초하여 만들어진다. 도 3에 도시된 예에서, 패치(340)는 애플리케이션 패키지 파일을 먼저 언팩 또는 압축해제할 필요없이 생성될 수 있다. 대신에, 패치(340)는 원래 버전(310) 및 업데이트된 버전(320)에 대응하는 애플리케이션 패키지 파일을 입력으로서 이용하는 이진 데이터 델타 프로세스에 의해 생성될 수 있다. 패치(340)는 패치(340)를 원래 버전(310)에 적용함으로써, 업데이트된 버전(320)이 재생성될 수 있게 하는 이진 데이터 델타 정보를 포함한다.
이진 데이터 델타 생성이 알려져 있다. 패치(340)를 생성하기 위해 프로세스(330) 내에서 적용될 수 있는 이진 델타 데이터 생성의 구현예는 Xdelta 알고리즘 및 bsdiff(접미사 분류) 알고리즘의 변형을 포함한다. 이진 데이터 델타 생성 알고리즘을 대신하여 또는 그것에 더하여 다른 알고리즘이 프로세스(300) 내에서 적용될 수 있다.
패치(340)는 하나 이상의 서버 컴퓨터로부터 컴퓨팅 디바이스(110)에 전송된다. 다음으로, 패치(340)는 애플리케이션의 원래 버전(310)의 클라이언트측 사본(350)(클라이언트측 애플리케이션 패키지라고도 지칭됨)에 적용되며, 이것은 애플리케이션의 업데이트된 버전(320)의 클라이언트측 복제(reproduction)(360)를 생성한다.
도 4는 애플리케이션 패키지의 컨텐츠를 업데이트하는 예를 보여주는 도면이다. 일부 상황들에서, 이것은 도 3의 예에 비해 훨씬 감소된 다운로드 크기를 허용할 수 있다. 이 예에서, 애플리케이션 패키지 파일은 컴포넌트 파일들로 언팩되고, 각각의 파일 쌍에 대해 이진 데이터 델타가 생성되며, 다음으로 개별 이진 데이터 델타를 포함하는 패치 아카이브 집 파일(patch archive zip file)(여기에서 때로는 차등 업데이트 패키지라고 지칭됨)이 생성된다.
본 예에서, 애플리케이션의 원래 버전(410) 및 업데이트된 버전(420)은 패치 생성기(170)에서와 같이 서버측에 존재한다. 원래 버전(410) 및 업데이트된 버전(420) 각각은 애플리케이션 패키지 파일일 수 있다. 원래 버전(410) 및 업데이트된 버전(420) 각각에 대해 언집(unzip) 프로세스(430)가 수행된다. 원본 리소스 파일(415) 및 업데이트된 리소스 파일(425)이 결과로서 생성된다. 원본 리소스 파일(415)과 업데이트된 리소스 파일(425)의 각 쌍에 차등 패치 생성 프로세스(440)가 적용되어, 각 파일 쌍에 대응하는 이진 데이터 델타를 만들어낸다. 결과(델타)가 출력되어 패치(450)에 통합되고, 이것은 하나 이상의 서버 컴퓨터로부터 컴퓨팅 디바이스(110)에 전송된다.
컴퓨팅 디바이스(110)는 애플리케이션의 원래 버전의 클라이언트측 사본(460)을 언팩(압축해제)하여, 클라이언트측 원본 리소스 파일(465)을 만들어낸다. 패치 동작(470)에서 패치(450)로부터의 델타가 클라이언트측 원본 리소스 파일에 적용되고, 이는 클라이언트측의 업데이트된 리소스 파일(480)을 만들어내며, 이것은 애플리케이션의 업데이트된 버전(420)의 클라이언트측 복제(485)인 애플리케이션 패키지 파일로 패키지화(압축)된다.
도 5는 컴퓨팅 디바이스와 하나 이상의 서버 컴퓨터 간의 통신을 보여주는 도면이다.
처음에, 컴퓨팅 디바이스(110)에서 애플리케이션에 대한 요청이 생성된다. 요청은 신호 또는 데이터의 수신에 응답하여, 또는 사용자 입력에 응답하여, 애플리케이션의 실행에 의해 생성될 수 있다. 요청은 애플리케이션의 원하는 버전을 나타낸다. 컴퓨팅 디바이스는 애플리케이션의 이전 버전이 현재 설치되어 있는지를 판정한다. 전송(510)에서, 컴퓨팅 디바이스는 업데이트 관리자(130)에게, (이용가능하다면) 애플리케이션의 현재 설치된 버전과 애플리케이션의 요구되는 버전을 식별하는 정보를 송신한다.
일부 구현들에서, 업데이트 관리자(130)는 애플리케이션의 설치된 버전 및 요구되는 버전에 대응하는 패치(예를 들어, v1로부터 v3로의 업데이트를 위한 패치)가 존재하는지를 판정한다. 업데이트 관리자(130)는 전송(520)에서, (이용가능한 경우) 패치를 위한 URL, 애플리케이션의 요구되는 버전에 대응하는 전체 애플리케이션 패키지를 위한 URL, 패치에 관련된 메타데이터 중 임의의 것 또는 전부로 응답할 수 있다. 다른 구현들에서, 업데이트 관리자는 애플리케이션의 설치된 버전 및 요구되는 버전에 대응하는 패치가 존재하는지를 판정하지 않고, 대신에 패치가 존재한다면 그 패치를 요청하는 데에 이용될 수 있는 URL을 생성하고/거나 컴퓨팅 디바이스(110)에 전송한다. 그러한 구현에서, 패치가 요청될 때, 그것이 존재한다면 그 패치가 전달될 수 있고, 다르게는 패치가 요청되었지만 존재하지 않을 때는, 완전한 애플리케이션 패키지 파일이 서버측 리다이렉션을 이용하여 전달될 수 있다.
업데이트 관리자(130)로부터 수신된 정보에 기초하여, 컴퓨팅 디바이스(110)는 애플리케이션의 현재 설치된 버전이 패치될 수 있는지의 여부를, 예를 들어 패치가 이용가능한지의 여부 및/또는 패치에 관련된 메타데이터에 기초하여 판정한다. 애플리케이션이 패치될 수 없다고 판정되는 상황의 다른 예는, 컴퓨팅 디바이스(110)에서의 소프트웨어가 이진 데이터 델타를 지원하기에 충분한 기능성을 갖지 않는 것, 컴퓨팅 디바이스(110)가 이진 데이터 델타를 저장하고 프로세싱하는 데에 충분한 이용가능한 저장소를 갖고 있지 않은 것, 현재 설치된 애플리케이션 패키지가 이진 데이터 델타를 적용하기 위해 판독될 수 없는 것(예를 들어 보호됨), 현재 설치된 애플리케이션 패키지가 저장소(150)에 저장된 패키지와 일치하지 않는 것(패키지 서명에 기초함), 및 패치된 패키지가 예상 패키지와 일치하지 않는 것(패키지 서명에 기초함)을 포함한다.
애플리케이션이 패치될 수 없는 경우, 컴퓨팅 디바이스(110)는 애플리케이션의 업데이트된 버전에 대응하는 완전한 애플리케이션 패키지 파일을 요청할 수 있고, 완전한 애플리케이션 패키지 파일을 설치함으로써 애플리케이션을 업데이트할 수 있다. 애플리케이션이 패치될 수 있는 경우, 전송(530)은 예를 들어 업데이트 관리자로부터 수신되었던 패치 URL을 이용하여, 컴퓨팅 디바이스(110)로부터 업데이터 전달 서비스로 송신될 수 있다. 업데이트 전달 서비스는 요청을 검증할 수 있고, 컴퓨팅 디바이스(110)에 리다이렉션 전송(540)을 송신할 수 있다. 리다이렉션 전송(540)은 컴퓨팅 디바이스(110)로 하여금, 컴퓨팅 디바이스(110)로부터 캐시 서비스(160)로의 전송(550)을 통해 캐시 서비스(160)로부터 패치 검색을 시도하게 한다. 전송(550)은 예를 들어 업데이트 전달 서비스(140)에 의해 공급된 URL을 이용할 수 있다.
전송(550)에 응답하여, 캐시 서비스(160)는 패치의 위치를 찾고자 시도한다. 패치의 위치가 찾아지면("캐시 히트"), 그것은 전송(560)을 통해 컴퓨팅 디바이스에 전송된다. 그렇지 않으면, 패치는 전송(570)을 통해 저장소(150)로부터 요청되고, 전송(580)을 통해 저장소로부터 캐시 서비스(160)에서 수신된다. 다음으로, 패치는 캐시 서비스(160)에 저장되고, 전송(560)을 통해 컴퓨팅 디바이스(110)에 전송된다. 패치의 위치를 찾을 수 없는 경우, 에러 전송(590)이 컴퓨팅 디바이스에 송신된다. 다른 구현들에서, 캐시 서비스(160)는 생략될 수 있고, 패치는 컴퓨팅 디바이스(110)로부터 요청되어 저장소(150)에 의해 직접 컴퓨팅 디바이스에 전송될 수 있다.
패치를 수신한 것에 응답하여, 그것은 예를 들어 도 3 또는 도 4 중 어느 하나에 관련하여 설명된 방식으로, 컴퓨팅 디바이스(110)에서 적용된다.
도 6은 애플리케이션을 업데이트하기 위한 프로세스(600)의 예를 보여주는 흐름도이다. 프로세스(600)와 관련하여 설명되는 동작들은 컴퓨팅 디바이스(110)에서 수행될 수 있다. 프로세스(600)는 몇몇 예에서는 비-일시적(non-transitory) 컴퓨터 판독가능한 저장 매체 또는 저장 디바이스일 수 있는 컴퓨팅 디바이스(110)의 메모리(222)와 같은 저장 매체 또는 저장 디바이스 상에 저장되는 컴퓨터 실행가능한 프로그램 명령어의 형태로 구현될 수 있다. 컴퓨팅 디바이스(110)의 CPU(220)와 같은 프로세서에 의해 실행될 때, 명령어는 CPU(220)로 하여금 여기에서 프로세스(600)를 참조하여 설명될 동작들을 수행하게 한다.
프로세스(600)는 도 5와 관련하여 논의된 바와 같이, 애플리케이션의 설치를 위한 요청에 응답하여 컴퓨팅 디바이스(110)에서 수행될 수 있다.
동작(602)에서, 요청된 애플리케이션의 이전 버전이 컴퓨팅 디바이스(110)에 설치되어 있는지가 판정된다. 이전 버전이 설치되어 있지 않으면, 동작(604)에서, 애플리케이션 패키지의 완전한 버전의 전달이 요청된다. 완전한 버전이 동작(606)에서 다운로드된 다음, 동작(608)에서 설치된다.
동작(602)에서, 애플리케이션의 이전 버전이 설치되어 있는 것으로 판정되면, 프로세스는 동작(610)으로 진행하고, 거기에서 업데이트 패키지가 요청된다. 이것은 예를 들어 컴퓨팅 디바이스(110)로부터의 정보를, 애플리케이션의 설치된 버전 및 애플리케이션의 요청된 버전을 식별하는 하나 이상의 서버 컴퓨터에 전송함으로써 행해질 수 있다.
동작(612)에서, 컴퓨팅 디바이스는 업데이트 패키지에 관한 정보가 수신되었는지를 판정한다. 정보는 예를 들어 업데이트 패키지를 위한 URL 및 업데이트된 패키지에 연관된 메타데이터를 포함할 수 있다. 수신되지 않은 경우, 프로세스는 동작(606)으로 진행한다. 패치 URL 및 메타데이터와 같은 정보가 수신된 경우, 동작(614)에서, 애플리케이션이 패치되어야하는지가 판정된다. 이것은 메타데이터에 기초할 수 있다. 예를 들어, 업데이트 패키지를 이용한 패치가, 이용가능한 것보다 많은 저장 공간을 필요로 한다면, 패치는 수행되지 않을 것이다. 다른 기준이 이용될 수 있다. 컴퓨팅 디바이스가 애플리케이션이 패치되어서는 안된다고 판정하는 경우, 프로세스는 동작(606)으로 진행한다. 그렇지 않으면, 프로세스는 동작(616)으로 진행한다.
패치가 동작(616)에서 다운로드된다. 다운로드에 실패하는 경우, 동작(618)에서 패치가 중단되고, 동작(606)에서 완전한 애플리케이션 패키지가 다운로드된다. 다운로드에 성공하는 경우, 동작(620)에서 업데이트 패키지가 적용되고, 패치의 결과로서 생성된 업데이트된 애플리케이션 패키지가 동작(622)에서 설치된다.
도 7은 차등 패치를 생성하기 위한 프로세스(700)의 예를 도시하는 흐름도이다. 프로세스(700)와 관련하여 설명된 동작들은 업데이트 관리자(130), 업데이트 전달 서비스(140), 저장소(150), 캐시 서비스(160) 및 패치 생성기(170)의 전부 또는 임의의 것과 같은 하나 이상의 서버 컴퓨터에서 수행될 수 있다. 동작이 하나 이상의 컴퓨터에 의해 수행되는 것으로서 설명되는 경우, 그 동작은 하나의 컴퓨터에 의해 수행될 때 완료된다. 프로세스(700)는 몇몇 예에서는 비-일시적 컴퓨터 판독가능한 저장 매체 또는 저장 디바이스일 수 있는 컴퓨팅 디바이스(110)의 메모리(222)와 같은 저장 매체 또는 저장 디바이스 상에 저장되는 컴퓨터 실행가능한 프로그램 명령어의 형태로 구현될 수 있다. CPU와 같은 프로세서에 의해 실행될 때, 명령어는 프로세서로 하여금 여기에서 프로세스(700)를 참조하여 설명될 동작들을 수행하게 한다.
동작(702)에서, 하나 이상의 서버 컴퓨터에서 컴퓨팅 디바이스(110)로부터 업데이트 요청이 수신된다. 업데이트 요청은 제1 버전 식별자 및 제2 버전 식별자를 포함할 수 있다. 제1 버전 식별자는 컴퓨팅 디바이스(110)에 설치되어 있는 소프트웨어 애플리케이션에 대응하고, 제2 버전 식별자는 소프트웨어 애플리케이션의 후속 버전에 대응한다.
동작(704)에서, 하나 이상의 서버 컴퓨터에서, 제1 버전 식별자 및 제2 버전 식별자에 대응하는 업데이트 패키지가 존재하는지가 판정된다. 패치가 존재한다면, 프로세스는 동작(706)으로 진행하고, 거기에서 업데이트된 패키지가 컴퓨팅 디바이스(110)에 전송된다. 업데이트된 패키지가 존재하지 않는 경우, 업데이트된 패키지를 위한 요청이 동작(708)에서 생성된다. 동시에, 하나 이상의 서버 컴퓨터가 애플리케이션 패키지의 완전한 사본, 또는 애플리케이션 패키지의 완전한 사본을 다운로드하라는 명령어를 컴퓨팅 디바이스(110)에 전송할 수 있다.
동작(710)에서, 요청된 업데이트 패키지를 자동 생성할 것인지가 판정된다. 다운로드 횟수 및 다운로드 크기 감소가 업데이트 패키지 생성을 정당화하는 경우에, 장래의 사용자들에 의한 예상 패치 요구를 만족시키도록 업데이트 패키지가 생성될 수 있다. 예를 들어, 이들 중 하나 또는 둘 다가 이러한 판정을 내리기 위한 임계치와 비교될 수 있다. 따라서, 업데이트 패키지를 생성할지 여부는 업데이트 패키지의 생성 요청 횟수 및 계산된 다운로드 크기 감소 중 하나 이상에 기초할 수 있다. 업데이트 패키지가 생성되어야 한다고 판정되는 경우, 동작(712)에서 업데이트 패키지가 생성될 수 있다. 이것은 패치 생성기(170)에 의해 수행될 수 있다.
요청된 업데이트 패키지를 생성할지를 판정하기 위해, 다른 인자들도 이용될 수 있다. 임의의 관련있는 인자들이 이용될 수 있다. 예를 들어, 요청 횟수에 기초한 생성은, 드물게 요청되는 업데이트 패키지에 대해서는 델타가 생성 및 저장되지 않을 것을 보장한다. 이전에 특정 델타의 생성에 실패한 적이 있는 경우, 그것이 추적되어 다시 시도되지 않게 할 수 있다. 또한, 특정 업그레이트 시나리오에 관하여, 완전한 애플리케이션 패키지를 프로세싱하는 것에 대조적으로 업데이트 패키지가 이용되어야할지를 판정하기 위해, 조정가능한 판정 한도가 이용될 수 있다. 업데이트 패키지의 크기가 소정 백분율보다 큰 경우, 예를 들어 완전한 패키지의 크기의 80%인 경우, 업데이트 패키지를 생성하는 대신에, 애플리케이션 패키지의 완전한 버전이 보내질 수 있다.
패치 생성기(170)는 신뢰성을 위해 복수의 데이터 센터 내에 복수의 서버를 가질 수 있다. 델타 생성의 필요성을 추적하고, 각각의 델타가 패치 생성기(170)의 이용가능한 분산된 델타 메이커(maker) 중 하나에 의해 한번만 생성될 것을 보장하기 위해 중앙 통계 시스템이 이용될 수 있다. 동일한 업데이트 패키지의 중복 생성을 방지하기 위해, 중앙화된 만료 잠금(expiring lock)이 이용될 수 있다.
컴퓨팅 디바이스 및 하나 이상의 서버 컴퓨터(130, 140, 150, 160 및 170)(그리고, 거기에 저장되고/거나 그에 의해 실행되는 알고리즘, 메소드, 명령어 등)는 예를 들어 IP(intellectual property) 코어, ASIC(application-specific integrated circuits), 프로그래머블 로직 어레이, 광학 프로세서, 프로그래머블 로직 컨트롤러, 마이크로코드, 펌웨어, 마이크로컨트롤러, 서버, 마이크로프로세서, 디지털 신호 프로세서 또는 임의의 다른 적절한 회로를 포함하는 하드웨어로 실현될 수 있다. 청구범위들에서, 용어 "프로세서"는 상술한 것들 중 임의의 것을 단독으로 또는 조합하여 포함하는 것으로 이해되어야 한다. 용어 "신호" 및 "데이터"는 상호교환가능하게 이용된다.
일부 구현들에서, 컴퓨팅 디바이스(110) 및 하나 이상의 서버 컴퓨터(130, 140, 150, 160 및 170)의 동작은 단일 컴퓨터로 결합될 수 있다. 다른 구현들에서, 컴퓨팅 디바이스(110) 및 하나 이상의 서버 컴퓨터(130, 140, 150, 160 및 170) 각각의 기능은 다수의 상이한 디바이스에 걸쳐 분산될 수 있다. 단순함을 위해 단일 머신으로서 도시되어 있지만, 하나 이상의 서버 컴퓨터(130, 140, 150, 160 및 170)가 반드시 단일 프로세서 또는 단일의 물리적 머신을 이용하여 구현되어야 하는 것은 아님이 이해된다. 더욱이, 특징들이 소정의 조합으로 작용하는 것으로 위에서 설명되고 주장될 수 있지만, 한 조합의 하나 이상의 특징이 일부 경우들에서는 그 조합으로부터 제거될 수 있고, 그 조합은 부분조합(sub-combination) 또는 부분조합의 변형에 관한 것일 수 있다.
다른 예에서, 컴퓨팅 디바이스(110) 및 하나 이상의 서버 컴퓨터(130, 140, 150, 160 및 170)는 실행 시에 여기에 설명된 각각의 방법, 알고리즘 및/또는 명령어 중 임의의 것을 수행하는 컴퓨터 프로그램을 갖는 범용 컴퓨터/프로세서를 이용하여 구현될 수 있다. 추가로 또는 대안적으로, 예를 들어 여기에 설명된 방법, 알고리즘 또는 명령어 중 임의의 것을 수행하기 위해 특수화된 하드웨어를 포함할 수 있는 특수 목적 컴퓨터/프로세서가 이용될 수 있다.
또한, 명세서의 실시예들 중 전부 또는 일부는 예를 들어 비-일시적인 컴퓨터 사용가능한 또는 컴퓨터 판독가능한 매체와 같은 저장 디바이스 또는 저장 매체로부터 액세스가능한 컴퓨터 프로그램 제품의 형태를 취할 수 있다. 저장 디바이스 또는 저장 매체는 예를 들어 임의의 프로세서에 의해 또는 그와 함께 이용할 프로그램을 유형으로(tangibly) 포함, 저장, 통신 또는 전달할 수 있는 임의의 디바이스일 수 있다. 저장 디바이스 또는 저장 매체는 예를 들어 전자 디바이스, 자기 디바이스, 광학 디바이스, 전자기 디바이스 또는 반도체 디바이스일 수 있다. 다른 적절한 디바이스 및 매체도 이용가능하다.
본 명세서는 현재 가장 실용적이고 바람직한 실시예라고 생각되는 것을 포함하고 있지만, 본 명세서는 개시된 실시예로 한정되는 것이 아니며, 반대로 첨부된 청구항의 취지 및 범위 내에 포함되는 다양한 수정 및 등가의 구성을 포함하도록 의도된 것임을 이해해야 하며, 청구항의 범위에는 법규 하에서 허가되는 대로의 수정 및 등가의 구조 모두를 포괄하도록 가장 넓은 해석이 부여되어야 한다.

Claims (30)

  1. 컴퓨팅 디바이스로부터 하나 이상의 서버 컴퓨터로, 상기 컴퓨팅 디바이스에 저장된 클라이언트측 애플리케이션 패키지에 대응하는 업데이트 요청을 전송하는 단계 - 상기 클라이언트측 애플리케이션 패키지는 복수의 애플리케이션 컴포넌트를 포함함 -;
    상기 요청에 응답하여, 복수의 델타를 포함하는 차등 업데이트 패키지(differential update package)를 수신하는 단계 - 각각의 델타는 상기 클라이언트측 애플리케이션 패키지에 포함된 애플리케이션 컴포넌트들 중 하나에 대응함 -; 및
    상기 복수의 애플리케이션 컴포넌트로부터의 상기 애플리케이션 컴포넌트들 중 적어도 일부를 수정하기 위해 상기 복수의 델타를 적용하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 클라이언트측 애플리케이션 패키지의 상기 복수의 애플리케이션 컴포넌트가 수정될 수 있도록, 상기 복수의 델타를 적용하기 전에 상기 클라이언트측 애플리케이션 패키지를 언팩(unpacking)하는 단계
    를 더 포함하는 방법.
  3. 제2항에 있어서,
    상기 복수의 델타를 적용한 것에 후속하여 상기 복수의 애플리케이션 컴포넌트를 다시 패키지화(re-packaging)함으로써, 업데이트된 클라이언트측 애플리케이션 패키지를 생성하는 단계
    를 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 업데이트 요청은 상기 클라이언트측 애플리케이션 패키지에 대응하는 서명을 포함하는, 방법.
  5. 제4항에 있어서,
    상기 차등 업데이트 패키지는 상기 서명을 이용하여 상기 하나 이상의 서버 컴퓨터에 의해 선택되는, 방법.
  6. 제5항에 있어서,
    상기 서명은 해시 코드인 방법.
  7. 제1항에 있어서,
    상기 클라이언트측 애플리케이션 패키지는 상기 하나 이상의 서버 컴퓨터에 위치된 제1 서버측 애플리케이션 패키지와 동등하고, 업데이트된 클라이언트측 애플리케이션 패키지는 상기 하나 이상의 서버 컴퓨터에 위치된 제2 서버측 애플리케이션 패키지와 동등하며, 상기 차등 업데이트 패키지는 상기 제1 서버측 애플리케이션 패키지 및 상기 제2 서버측 애플리케이션 패키지를 이용하여 상기 하나 이상의 서버 컴퓨터에 의해 생성되는 방법.
  8. 하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 의해 이용되는 프로그램 명령어들을 저장하기 위한 하나 이상의 메모리 디바이스
    를 포함하고,
    상기 프로그램 명령어들은 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금,
    컴퓨팅 디바이스로부터 하나 이상의 서버 컴퓨터로, 상기 컴퓨팅 디바이스에 저장된 클라이언트측 애플리케이션 패키지에 대응하는 업데이트 요청을 전송하고 - 상기 클라이언트측 애플리케이션 패키지는 복수의 애플리케이션 컴포넌트를 포함함 -;
    상기 요청에 응답하여, 복수의 델타를 포함하는 차등 업데이트 패키지를 수신하고 - 각각의 델타는 상기 클라이언트측 애플리케이션 패키지에 포함된 상기 애플리케이션 컴포넌트들 중 하나에 대응함 -; 및
    상기 복수의 애플리케이션 컴포넌트로부터의 상기 애플리케이션 컴포넌트들 중 적어도 일부를 수정하기 위해 상기 복수의 델타를 적용하게
    하는, 장치.
  9. 제8항에 있어서,
    상기 프로그램 명령어들은 또한 상기 하나 이상의 프로세서로 하여금,
    상기 클라이언트측 애플리케이션 패키지의 상기 복수의 애플리케이션 컴포넌트가 수정될 수 있도록, 상기 복수의 델타를 적용하기 전에 상기 클라이언트측 애플리케이션 패키지를 언팩하게 하는, 장치.
  10. 제9항에 있어서,
    상기 프로그램 명령어들은 또한 상기 하나 이상의 프로세서로 하여금,
    상기 복수의 델타를 적용한 것에 후속하여 상기 복수의 애플리케이션 컴포넌트를 다시 패키지화함으로써, 업데이트된 클라이언트측 애플리케이션 패키지를 생성하게 하는, 장치.
  11. 제8항에 있어서,
    상기 업데이트 요청은 상기 클라이언트측 애플리케이션 패키지에 대응하는 서명을 포함하는, 장치.
  12. 제11항에 있어서,
    상기 차등 업데이트 패키지는 상기 서명을 이용하여 상기 하나 이상의 서버 컴퓨터에 의해 선택되는, 장치.
  13. 제12항에 있어서,
    상기 서명은 해시 코드인 장치.
  14. 제8항에 있어서,
    상기 클라이언트측 애플리케이션 패키지는 상기 하나 이상의 서버 컴퓨터에 위치된 제1 서버측 애플리케이션 패키지와 동등하고, 업데이트된 클라이언트측 애플리케이션 패키지는 상기 하나 이상의 서버 컴퓨터에 위치된 제2 서버측 애플리케이션 패키지와 동등하며, 상기 차등 업데이트 패키지는 상기 제1 서버측 애플리케이션 패키지 및 상기 제2 서버측 애플리케이션 패키지를 이용하여 상기 하나 이상의 서버 컴퓨터에 의해 생성되는, 장치.
  15. 원격 컴퓨팅 디바이스로부터, 상기 원격 컴퓨팅 디바이스에 저장된 클라이언트측 애플리케이션 패키지에 대응하는 제1 서명을 포함하는 업데이트 요청을 수신하는 단계;
    상기 제1 서명을 이용하여 제1 서버측 애플리케이션 패키지를 식별하는 단계; 및
    상기 제1 서버측 애플리케이션 패키지 및 제2 서버측 애플리케이션 패키지를 입력으로서 이용하여 차등 업데이트 패키지를 생성하는 단계 - 상기 차등 업데이트 패키지는, 상기 클라이언트측 애플리케이션 패키지에 적용될 때, 상기 제2 서버측 애플리케이션 패키지와 기능적으로 동등하도록 상기 클라이언트측 애플리케이션 패키지를 수정하도록 동작할 수 있음 -
    를 포함하는 방법.
  16. 제15항에 있어서,
    상기 차등 업데이트 패키지를 생성한 것에 후속하여 상기 차등 업데이트 패키지를 상기 원격 컴퓨팅 디바이스로 전송하는 단계
    를 더 포함하는 방법.
  17. 제15항에 있어서,
    상기 업데이트 요청을 수신한 것에 응답하여, 하나 이상의 미리 결정된 기준에 기초하여 상기 차등 업데이트 패키지를 생성할지를 판정하는 단계
    를 더 포함하고,
    상기 차등 업데이트 패키지를 생성하는 단계는 상기 하나 이상의 미리 결정된 기준이 만족되는 경우에 수행되는, 방법.
  18. 제17항에 있어서,
    상기 하나 이상의 미리 결정된 기준은 복수의 저장된 차등 업데이트 패키지 중 하나가 상기 제1 서버측 애플리케이션 패키지 및 상기 제2 서버측 애플리케이션 패키지에 대응하는지의 여부를 포함하는, 방법.
  19. 제17항에 있어서,
    상기 하나 이상의 미리 결정된 기준은 상기 제1 서버측 애플리케이션 패키지 및 상기 제2 서버측 애플리케이션 패키지에 대응하는, 이전에 수신된 업데이트 요청의 수를 포함하는, 방법.
  20. 제17항에 있어서,
    상기 하나 이상의 미리 결정된 기준은 계산된 다운로드 크기 감소를 포함하는, 방법.
  21. 제3항에 있어서,
    상기 업데이트 요청은 상기 원격 컴퓨팅 디바이스를 기술하는 하나 이상의 시스템 특성을 포함하고, 상기 하나 이상의 미리 결정된 기준은 상기 하나 이상의 시스템 특성을 포함하는, 방법.
  22. 제15항에 있어서,
    상기 제1 서명을 이용하여 제1 서버측 애플리케이션 패키지를 식별하는 단계는 상기 제1 서명을 상기 제1 서버측 애플리케이션 패키지에 대응하는 제2 서명과 비교하는 단계를 포함하는, 방법.
  23. 제15항에 있어서,
    상기 제1 서명은 해시 코드인 방법.
  24. 하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 의해 이용되는 프로그램 명령어들을 저장하기 위한 하나 이상의 메모리 디바이스
    를 포함하고,
    상기 프로그램 명령어들은 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금,
    원격 컴퓨팅 디바이스로부터, 상기 원격 컴퓨팅 디바이스에 저장된 클라이언트측 애플리케이션 패키지에 대응하는 제1 서명을 포함하는 업데이트 요청을 수신하고;
    상기 제1 서명을 이용하여 제1 서버측 애플리케이션 패키지를 식별하고;
    상기 제1 서버측 애플리케이션 패키지 및 제2 서버측 애플리케이션 패키지를 입력으로서 이용하여 차등 업데이트 패키지를 생성하게 - 상기 차등 업데이트 패키지는 상기 클라이언트측 애플리케이션 패키지에 적용될 때, 상기 제2 서버측 애플리케이션 패키지와 기능적으로 동등하도록 상기 클라이언트측 애플리케이션 패키지를 수정하도록 동작할 수 있음 -
    하는 장치.
  25. 제24항에 있어서,
    상기 프로그램 명령어들은 또한 상기 하나 이상의 프로세서로 하여금, 상기 차등 업데이트 패키지를 생성한 것에 후속하여 상기 차등 업데이트 패키지를 상기 원격 컴퓨팅 디바이스로 전송하게 하는, 장치.
  26. 제24항에 있어서,
    상기 프로그램 명령어들은 또한 상기 하나 이상의 프로세서로 하여금, 상기 업데이트 요청을 수신한 것에 응답하여, 하나 이상의 미리 결정된 기준에 기초하여 상기 차등 업데이트 패키지를 생성할지 여부를 판정하게 하고,
    상기 차등 업데이트 패키지를 생성하는 것은 상기 하나 이상의 미리 결정된 기준이 만족되는 경우에 수행되는, 장치.
  27. 제26항에 있어서,
    상기 하나 이상의 미리 결정된 기준은 복수의 저장된 차등 업데이트 패키지 중 하나가 상기 제1 서버측 애플리케이션 패키지 및 상기 제2 서버측 애플리케이션 패키지에 대응하는지의 여부, 상기 제1 서버측 애플리케이션 패키지 및 상기 제2 서버측 애플리케이션 패키지에 대응하는, 이전에 수신된 업데이트 요청의 수, 또는 계산된 다운로드 크기 감소 중 적어도 하나를 포함하는, 장치.
  28. 제26항에 있어서,
    상기 업데이트 요청은 상기 원격 컴퓨팅 디바이스를 기술하는 하나 이상의 시스템 특성을 포함하고, 상기 하나 이상의 미리 결정된 기준은 상기 하나 이상의 시스템 특성을 포함하는, 장치.
  29. 제24항에 있어서,
    상기 제1 서명을 이용하여 제1 서버측 애플리케이션 패키지를 식별하는 것은 상기 제1 서명을 상기 제1 서버측 애플리케이션 패키지에 대응하는 제2 서명과 비교하는 것을 포함하는, 장치.
  30. 제24항에 있어서,
    상기 제1 서명은 해시 코드인 장치.
KR1020130074794A 2012-06-27 2013-06-27 애플리케이션을 업데이트하는 방법 KR102042723B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201261665255P 2012-06-27 2012-06-27
US61/665,255 2012-06-27
US13/647,097 US9075693B2 (en) 2012-06-27 2012-10-08 Methods for updating applications
US13/647,074 2012-10-08
US13/647,074 US20140007074A1 (en) 2012-06-27 2012-10-08 Methods for updating applications
US13/647,097 2012-10-08

Publications (2)

Publication Number Publication Date
KR20140001172A true KR20140001172A (ko) 2014-01-06
KR102042723B1 KR102042723B1 (ko) 2019-11-27

Family

ID=49779682

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130074794A KR102042723B1 (ko) 2012-06-27 2013-06-27 애플리케이션을 업데이트하는 방법

Country Status (3)

Country Link
US (2) US9075693B2 (ko)
KR (1) KR102042723B1 (ko)
CN (1) CN103645910A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102173336B1 (ko) * 2019-04-29 2020-11-03 (주)메이드인헤븐 리액트 네이티브 환경 기반 실시간 애플리케이션 배포 서비스 제공 시스템

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140057998A (ko) * 2012-11-05 2014-05-14 삼성전자주식회사 전자 장치에서 응용프로그램의 갱신 정보를 알리기 위한 방법 및 장치
JP6152289B2 (ja) * 2012-11-15 2017-06-21 任天堂株式会社 情報処理装置、端末システム、情報処理プログラム、および、アプリケーションの更新用データの取得方法
US9075686B2 (en) * 2013-02-25 2015-07-07 GM Global Technology Operations LLC System and method to improve control module reflash time
US9804994B2 (en) * 2013-03-15 2017-10-31 Microsoft Technology Licensing, Llc Application architecture supporting multiple services and caching
US9454363B1 (en) * 2013-03-15 2016-09-27 Data Systems International, Inc. Mobile application development system and method
CN104346184A (zh) * 2013-08-01 2015-02-11 中兴通讯股份有限公司 应用打包装置及方法
CN104765591A (zh) * 2014-01-02 2015-07-08 腾讯科技(深圳)有限公司 一种软件配置参数更新的方法、终端服务器及系统
US9606788B2 (en) * 2014-04-30 2017-03-28 Microsoft Technology Licensing, Llc Dynamic update installer for customized software
CN104077160B (zh) * 2014-05-12 2018-04-03 联动优势电子商务有限公司 一种升级安卓软件的方法、设备和系统
CN105404521B (zh) * 2014-05-30 2017-05-31 广州市动景计算机科技有限公司 一种增量升级方法及相关装置
US9996339B2 (en) 2014-06-04 2018-06-12 Microsoft Technology Licensing, Llc Enhanced updating for digital content
CN105306505A (zh) * 2014-07-11 2016-02-03 腾讯科技(深圳)有限公司 数据更新方法、终端及服务器
CN104539696B (zh) * 2014-12-26 2018-09-11 北京像素软件科技股份有限公司 一种客户端增量更新的方法及系统
US9727324B2 (en) * 2015-05-22 2017-08-08 VMware. Inc. Application management in enterprise environments using cloud-based application recipes
SG10201504066QA (en) * 2015-05-25 2016-12-29 Huawei Internat Pte Ltd Method and system for defense against return oriented programming (rop) based attacks
KR20170010574A (ko) * 2015-07-20 2017-02-01 삼성전자주식회사 정보처리장치, 영상처리장치 및 그들의 제어방법
US20170090910A1 (en) * 2015-09-29 2017-03-30 International Business Machines Corporation Mobile device application installation with performance enhancement
KR102400477B1 (ko) * 2015-10-21 2022-05-23 삼성전자주식회사 어플리케이션을 관리하는 방법 및 그 장치
US10083024B2 (en) * 2015-12-01 2018-09-25 Salesforce.Com, Inc. Application aware virtual patching
CN108351792A (zh) 2016-01-15 2018-07-31 谷歌有限责任公司 使用应用容器管理代码和依赖性数据的传递
US9817648B2 (en) 2016-01-15 2017-11-14 Google Inc. Application containers with dynamic sub-package loading
CN105740016B (zh) * 2016-01-28 2020-08-25 腾讯科技(深圳)有限公司 应用程序的增量发布方法和装置、升级方法和装置
CN105787357B (zh) * 2016-03-28 2019-01-04 福建联迪商用设备有限公司 一种基于安卓系统apk下载方法及其系统
JP6609508B2 (ja) * 2016-04-27 2019-11-20 日立オートモティブシステムズ株式会社 車両用電子制御装置、プログラム更新方法
EP3437011B1 (en) * 2016-07-28 2020-12-16 Hewlett-Packard Development Company, L.P. Code package variants
US11269610B1 (en) * 2016-08-15 2022-03-08 Jpmorgan Chase Bank, N.A. System and method for self-service configuration management
CN107783777A (zh) * 2016-08-29 2018-03-09 深圳市中兴微电子技术有限公司 一种车载一体机的升级方法、设备和系统
US10185626B2 (en) * 2016-09-07 2019-01-22 Microsoft Technology Licensing, Llc Automatic application error detection and rollback
US10474446B2 (en) * 2016-09-16 2019-11-12 Bank Of America Corporation Installation tool for adhering to enterprise requirements
US11265365B2 (en) 2017-06-26 2022-03-01 Net Law Group, Inc. Platform-specific thin-client delivery of an application developed on a cloud-based enterprise-customizable multi-tenant service interface
CN108153537A (zh) * 2017-12-25 2018-06-12 北京车联天下信息技术有限公司 移动应用更新方法及装置
US10360017B1 (en) * 2018-01-02 2019-07-23 Microsoft Technology Licensing, Llc Updating program packages at distribution endpoint
CN108121560A (zh) * 2018-01-29 2018-06-05 宇龙计算机通信科技(深圳)有限公司 差分包升级方法、装置、终端及计算机可读存储介质
US11321080B2 (en) * 2018-07-19 2022-05-03 Huawei Technologies Co., Ltd. Patch package generation method and device
CN110795131A (zh) * 2018-08-01 2020-02-14 技嘉科技股份有限公司 服务器固件更新方法
US10963239B2 (en) * 2018-10-18 2021-03-30 International Business Machines Corporation Operational file management and storage
CN114556290A (zh) * 2019-08-16 2022-05-27 盖璞股份有限公司 用于部署企业软件更新的系统和方法
WO2021045723A1 (en) * 2019-09-03 2021-03-11 Google Llc Accelerating application and sub-package installations
US20210304904A1 (en) * 2020-03-27 2021-09-30 Samsung Electronics Co., Ltd. Method and system for managing queries of user in iot network
CN111722861B (zh) * 2020-06-17 2023-03-10 中国第一汽车股份有限公司 一种应用程序升级方法、装置、设备及存储介质
KR20230072185A (ko) * 2021-11-17 2023-05-24 엘지전자 주식회사 기능 업그레이드가 가능한 전자 기기, 전자 기기의 기능을 업그레이드하는 서버, 및 전자 기기의 기능을 업그레이드하는 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009009392A (ja) * 2007-06-28 2009-01-15 Sony Ericsson Mobilecommunications Japan Inc ソフトウェア更新方法および携帯端末装置
US7665081B1 (en) * 2006-05-06 2010-02-16 Kaspersky Lab, Zao System and method for difference-based software updating

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1005674A4 (en) * 1997-07-15 2002-03-13 Pocket Soft Inc SYSTEM FOR DETECTING DIFFERENCES BETWEEN TWO COMPUTER FILES AND UPDATING OF COMPUTER FILES
US6493871B1 (en) * 1999-09-16 2002-12-10 Microsoft Corporation Method and system for downloading updates for software installation
US20030182414A1 (en) * 2003-05-13 2003-09-25 O'neill Patrick J. System and method for updating and distributing information
US20020099726A1 (en) 2001-01-23 2002-07-25 International Business Machines Corporation Method and system for distribution of file updates
US20020147849A1 (en) * 2001-04-05 2002-10-10 Chung-Kei Wong Delta encoding using canonical reference files
US7600021B2 (en) 2002-04-03 2009-10-06 Microsoft Corporation Delta replication of source files and packages across networked resources
US20070169073A1 (en) * 2002-04-12 2007-07-19 O'neill Patrick Update package generation and distribution network
US6925467B2 (en) * 2002-05-13 2005-08-02 Innopath Software, Inc. Byte-level file differencing and updating algorithms
US7194728B1 (en) 2002-11-18 2007-03-20 Bmc Software, Inc. System and method for packaging updates
WO2005003963A2 (en) 2003-07-07 2005-01-13 Red Bend Ltd. Method and system for updating versions of content stored in a storage device
US7600225B2 (en) 2003-07-21 2009-10-06 Microsoft Corporation System and method for intra-package delta compression of data
US7509636B2 (en) * 2003-12-15 2009-03-24 Microsoft Corporation System and method for updating files utilizing delta compression patching
US7661102B2 (en) 2004-08-20 2010-02-09 Smith Micro Software, Inc. Method for reducing binary image update package sizes
WO2006052904A2 (en) 2004-11-08 2006-05-18 Innopath Software, Inc. Updating compressed read-only memory file system (cramfs) images
US7958502B2 (en) 2005-08-05 2011-06-07 Hewlett-Packard Development Company, L.P. Efficient generator of update packages for mobile devices that uses non-ELF preprocessing
US20070118530A1 (en) * 2005-11-18 2007-05-24 Microsoft Corporation Scheduling of software updates
US20080098383A1 (en) 2006-10-20 2008-04-24 Phonak Ag Method for installing a new version of a hearing-device fitting-software package on a computer system
US20080295087A1 (en) * 2007-05-25 2008-11-27 Samsung Electronics Co., Ltd. Firmware upgrade system and control method thereof
US20090017812A1 (en) 2007-07-11 2009-01-15 Weng Chong Chan Method and system for restoring user settings after over-the-air update of mobile electronic device software
EP2229625B1 (en) 2007-12-13 2011-08-31 Telefonaktiebolaget LM Ericsson (publ) Updating firmware of an electronic device
US8849717B2 (en) * 2009-07-09 2014-09-30 Simon Cooper Methods and systems for upgrade and synchronization of securely installed applications on a computing device
US8756195B2 (en) * 2009-08-27 2014-06-17 The Boeing Company Universal delta set management
JP5541666B2 (ja) * 2009-10-15 2014-07-09 キヤノン株式会社 画像形成装置、画像形成装置の制御方法及びプログラム
US8954949B2 (en) * 2010-10-11 2015-02-10 International Business Machines Corporation Smart patch delivery system
CN102081536A (zh) * 2010-12-30 2011-06-01 华为终端有限公司 一种增量升级方法及服务器
US8799888B1 (en) * 2011-05-20 2014-08-05 Amazon Technologies, Inc. Updating an application
CN102215480A (zh) * 2011-06-25 2011-10-12 北京播思软件技术有限公司 一种基于云计算的差分空中软件升级方法
US8677346B1 (en) * 2011-09-27 2014-03-18 Symantec Corporation Providing installer package information to a user
US20130111458A1 (en) * 2011-11-02 2013-05-02 Research In Motion Limited Method and system for on-demand patch generation and management

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7665081B1 (en) * 2006-05-06 2010-02-16 Kaspersky Lab, Zao System and method for difference-based software updating
JP2009009392A (ja) * 2007-06-28 2009-01-15 Sony Ericsson Mobilecommunications Japan Inc ソフトウェア更新方法および携帯端末装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102173336B1 (ko) * 2019-04-29 2020-11-03 (주)메이드인헤븐 리액트 네이티브 환경 기반 실시간 애플리케이션 배포 서비스 제공 시스템

Also Published As

Publication number Publication date
KR102042723B1 (ko) 2019-11-27
CN103645910A (zh) 2014-03-19
US20140007075A1 (en) 2014-01-02
US20140007074A1 (en) 2014-01-02
US9075693B2 (en) 2015-07-07

Similar Documents

Publication Publication Date Title
KR102042723B1 (ko) 애플리케이션을 업데이트하는 방법
US10387451B2 (en) Synchronization system for multiple client devices
CN105049486B (zh) 静态文件的版本管理方法、装置及系统
EP3488337B1 (en) Shared software libraries for computing devices
TWI712956B (zh) 行動終端應用程式的更新方法和裝置
US8645942B2 (en) Software update syndication
WO2019201039A1 (zh) 一种更新应用程序的方法、系统及应用服务器
US10965732B2 (en) Streaming zip
WO2014018579A1 (en) System updates from cloud blob storage using vhd differentials
CN110825479A (zh) 页面处理方法、装置、终端设备、服务器和存储介质
CN109814889B (zh) 用于更新源代码库的方法和装置
WO2019056187A1 (zh) 应用部署方法、装置及系统
CN103294742A (zh) 用于在便携式终端中确定内容重复的装置和方法
CN110532016B (zh) 版本管理方法、版本更新方法和版本管理系统
US10365910B2 (en) Systems and methods for uninstalling or upgrading software if package cache is removed or corrupted
CN110928571A (zh) 业务程序开发方法和装置
CN112134908B (zh) 应用适配方法及服务器、介质、车载多媒体系统
EP2680135B1 (en) Methods for updating applications
EP4107614A1 (en) Method for updating applications in cloud environments
CN110750410B (zh) 一种监听数据库日志的方法和装置
US10769586B2 (en) Implementation of rolling key to identify systems inventories
CN107911248B (zh) 升级方法和装置
CN110119279B (zh) 一种应用及其升级的方法和装置
US20200310777A1 (en) Efficient binary resource distribution to client computing devices
JP6641158B2 (ja) ファイルサイズチェック

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