KR101575695B1 - 프리-히팅된 소프트웨어 설치 - Google Patents
프리-히팅된 소프트웨어 설치 Download PDFInfo
- Publication number
- KR101575695B1 KR101575695B1 KR1020137014148A KR20137014148A KR101575695B1 KR 101575695 B1 KR101575695 B1 KR 101575695B1 KR 1020137014148 A KR1020137014148 A KR 1020137014148A KR 20137014148 A KR20137014148 A KR 20137014148A KR 101575695 B1 KR101575695 B1 KR 101575695B1
- Authority
- KR
- South Korea
- Prior art keywords
- updates
- computing system
- user
- installation
- software
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
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)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
프리-히팅된 소프트웨어 설치를 위한 방법 및 장치의 일부 실시예들이 제시되었다. 일 실시예에서, 소프트웨어에 대한 업데이트들의 패키지들이 컴퓨팅 시스템의 컴퓨팅 환경의 배경 동작에서 원격 소스로부터 컴퓨팅 시스템으로 다운로드된다. 그 후, 업데이트들의 패키지들의 설치가 소프트웨어 업데이트들에 커밋하지 않고 격리된 방식으로 배경 동작에서 자동으로 개시된다.
Description
본 발명의 실시예들은 컴퓨터에 소프트웨어를 설치하는 것에 관한 것으로, 특히, 새로운 버전의 소프트웨어로 컴퓨팅 시스템을 업데이트하는 것에 관한 것이다.
컴퓨팅 시스템들 및 각종 소프트웨어 애플리케이션들의 업데이트들은 요즘 컴퓨팅 세계에서는 실재적인 필수 사항들이다. 개발자들은 우리가 사용하는 컴퓨터 시스템들 및 애플리케이션들의 품질, 효율 및 기능을 향상시키기 위해 끊임없이 작업하고 있다. 전형적으로, 컴퓨팅 시스템들의 업데이트들의 설치는 긴 시간이 걸린다. 또한, 업데이트들의 설치 중에, 컴퓨팅 시스템에서 실행중인 다른 애플리케이션들 또는 프로세스들이 중단 또는 방해될 수 있다. 따라서, 컴퓨팅 시스템들의 사용자들은 자신의 작업의 긴 중단을 방지하기 위해 프롬프팅될 때 업데이트들의 설치를 종종 연기한다.
본 발명의 일부 실시예들은 소프트웨어에 대한 이용가능한 업데이트들을 자동으로 다운로드하고 다운로드된 업데이트들의 설치를 개시하는 단계를 포함한다. 일 실시예에서, 소프트웨어에 대한 업데이트들의 패키지들이 컴퓨팅 시스템의 컴퓨팅 환경의 배경 동작에서 원격 소스로부터 컴퓨팅 시스템으로 다운로드된다. 그 후, 업데이트들의 패키지들의 설치가 컴퓨팅 시스템을 소프트웨어 업데이트들에 커밋하게 하지 않고 격리된 방식으로 배경 동작에서 자동으로 개시된다. 배경 동작은 프론트에 위치한 사용자 인터페이스 요소들(예를 들어, 프론트 윈도)을 제어하고 입력 포커스(예를 들어, 키보드 및 마우스 또는 터치 입력들이 현재 사용자가 상호 작용하고 있는 프론트에 위치한 프로세스를 향함)를 가진 다른 프로세스들과 사용자가 상호 작용할 수 있는 동안 실행되는 동작일 수 있다. 다시 말해서, 전경 프로세스 또는 동작은 사용자 입력들(예를 들어, 키보드, 마우스, 터치 입력 등)을 수신할 수 있지만, 배경 동작이 사용자에게 가시적일 수 있더라도 배경 동작은 사용자 입력들을 수신하지 않는다.
본 발명의 일부 실시예들은 소프트웨어 업데이트들을 미리 설치하기 위한 방법을 포함한다. 일 실시예에서, 컴퓨팅 시스템의 소프트웨어에 대한 업데이트들의 집합의 설치의 일부분만이 컴퓨팅 시스템에서 현재 실행 중인 프로세스들을 방해하지 않고 실행된다. 그 후, 컴퓨팅 시스템의 사용자에게 업데이트들의 집합이 통지되고, 사용자가 업데이트들의 전체 집합을 긍정적으로 허용 또는 승인할 때까지 업데이트들의 전체 집합의 설치의 완료는 보류된다.
본 발명의 일부 실시예들은 소프트웨어 업데이트들을 미리 설치하기 위한 장치를 포함한다. 일 실시예에서, 장치는 소프트웨어의 명령들 및 데이터를 저장하기 위한 컴퓨터 판독가능한 저장 디바이스, 소프트웨어에 대한 업데이트들을 다운로드하도록 네트워크를 통해 컴퓨팅 머신에 통신 연결되게 하기 위한 네트워크 인터페이스, 및 프로세싱 디바이스를 포함한다. 프로세싱 디바이스는 소프트웨어의 기존 명령들 및 데이터를 겹쳐 쓰지 않고 컴퓨터 판독가능한 저장 디바이스의 예비된 영역(a reserved area)에서 업데이트들을 미리 설치하도록 동작한다.
본 발명의 일부 실시예들은 소프트웨어 업데이트들을 미리 설치하기 위한 방법을 포함한다. 일 실시예에서, 소프트웨어에 대한 업데이트들은 컴퓨팅 시스템의 배경 동작에서 실행 중인 프로세스를 통해 컴퓨팅 시스템에 부분적으로 설치된다. 그 후, 컴퓨팅 시스템의 사용자는 업데이트들을 통지받는다. 다른 실시예에서, 컴퓨팅 시스템은 배경 동작 전에 또는 배경 동작 중에 배경 동작을 사용자에게 통지할 수 있다. 업데이트들의 사용자 승인에 응답해서, 업데이트들의 설치가 컴퓨팅 시스템에서 완료된다. 일부 실시예들에서, 사용자는 업데이트들의 일부분을 승인할 수 있다. 응답으로, 업데이트들을 미리 설치하기 위해 지금까지 실행된 작업은 취소될 수 있으며, 승인된 업데이트들만이 설치된다.
상술된 방법들 중 하나 이상의 방법들을 실행하는 각종 디바이스들, 및 프로세싱 시스템에 의해 실행될 때, 프로세싱 시스템이 상기 방법들을 실행하도록 야기하는 머신 판독가능한 매체가 또한 기술된다.
다른 방법들, 디바이스들 및 컴퓨터 판독가능한 저장 매체가 또한 기술된다.
이하의 설명은 본 발명의 실시예들의 구현들의 일례로서 제공된 실례들을 가진 도면들의 설명을 포함한다. 도면들은 제한이 아니라 일례로서 이해되어야만 한다. 본 명세서에서 사용된 바와 같이, 하나 이상의 "실시예들"에 대한 참조는 본 발명의 적어도 하나의 구현에 포함된 특정한 특징, 구조, 또는 특성을 기술하는 것으로 이해될 것이다. 따라서, 본 명세서에 나타나는 "in some embodiments(일부 실시예들에서)" 또는 "in an alternate embodiments(다른 실시예들에서)" 등의 구절들은 본 발명의 각종 실시예들 및 구현들을 기술하며, 반드시 모두 동일한 실시예를 나타내는 것은 아니다. 그러나, 또한 반드시 상호 배타적인 것도 아니다.
도 1a-1b는 각종 실시예들에 따른 컴퓨팅 시스템에서의 소프트웨어 업데이트들의 프리-히팅된 설치를 위한 프로세스의 흐름도를 도시한다.
도 2a-2b는 각종 실시예들에 따른 컴퓨팅 시스템에서의 소프트웨어 업데이트들의 프리-히팅된 설치를 위한 프로세스의 흐름도를 도시한다.
도 3a-3b는 각종 실시예들에 따른 컴퓨팅 시스템에서의 소프트웨어 업데이트들의 프리-히팅된 설치를 위한 프로세스의 흐름도를 도시한다.
도 4는 프리-히팅된 소프트웨어 설치에서 사용될 수 있는 컴퓨팅 시스템의 컴퓨터 판독가능한 저장 디바이스의 일 실시예를 도시한 블록도이다.
도 5는 본 발명의 일부 실시예들에서 사용될 수 있는 컴퓨팅 디바이스의 일 실시예이다.
도 1a-1b는 각종 실시예들에 따른 컴퓨팅 시스템에서의 소프트웨어 업데이트들의 프리-히팅된 설치를 위한 프로세스의 흐름도를 도시한다.
도 2a-2b는 각종 실시예들에 따른 컴퓨팅 시스템에서의 소프트웨어 업데이트들의 프리-히팅된 설치를 위한 프로세스의 흐름도를 도시한다.
도 3a-3b는 각종 실시예들에 따른 컴퓨팅 시스템에서의 소프트웨어 업데이트들의 프리-히팅된 설치를 위한 프로세스의 흐름도를 도시한다.
도 4는 프리-히팅된 소프트웨어 설치에서 사용될 수 있는 컴퓨팅 시스템의 컴퓨터 판독가능한 저장 디바이스의 일 실시예를 도시한 블록도이다.
도 5는 본 발명의 일부 실시예들에서 사용될 수 있는 컴퓨팅 디바이스의 일 실시예이다.
본 명세서에 기술된 실시예들은 새로운 소프트웨어 및/또는 소프트웨어의 업데이트들을 컴퓨팅 시스템에 설치하는 것을 용이하게 한다. 설명을 명백하고 간결하게 유지하기 위해, 본 명세서에 기술된 실시예들은 소프트웨어(예를 들어, 운영 체제, 사용자 애플리케이션들 등)에 대한 업데이트들의 설치를 종종 언급할 것이다. 그러나, 실시예들은 업데이트들의 설치로 제한되지는 않는다. 본 명세서에 기술된 방법들, 기술들, 시스템들, 컴포넌트들 등이 또한 새로운 애플리케이션들에 사용될 수 있다.
일부 실시예들에서, 컴퓨팅 시스템에서의 소프트웨어에 대한 업데이트들의 설치 프로세스가 개시되고 업데이트들을 컴퓨팅 시스템의 사용자에게 알리거나 또는 통지하기 전에 컴퓨팅 시스템의 현재 버전의 소프트웨어를 방해하지 않고 가능한 한 많이 실행된다. 따라서, 실행된 설치 프로세스의 상기 일부분은 또한 업데이트들의 미리 설치, 또는 업데이트들의 설치의 프리-히팅(pre-heating)이라고 할 수 있다. 업데이트들의 설치를 프리-히팅한 후에, 사용자는 업데이트들을 통지받고, 사용자가 업데이트들을 승인할 것인지를 질문받는다. 사용자가 업데이트들을 승인하면, 설치 프로세스는 컴퓨팅 시스템에 업데이트들을 커밋하도록 완료된다. 다른 경우, 사용자가 업데이트들을 거부하면, 프리-히팅 중에 실행된 작업은 취소될 수 있다.
일부 실시예들에서, 사용자가 업데이트들의 일부를 승인하고, 나머지 업데이트들을 거부하면, 프리-히팅 중에 실행된 작업은 취소될 수 있으며, 설치 프로세스는 승인된 업데이트들만을 설치하도록 재개시될 수 있다. 다른 실시예에서, 프리-히팅은 업데이트들의 다수의 미리결정된 조합들의 미리 설치를 포함할 수 있다. 사용자가 승인한 업데이트들의 조합이 이러한 미리결정된 조합들 중 하나이면, 업데이트들의 이 조합의 설치는 사용자 승인 시 완료될 수 있다. 다른 경우, 업데이트들의 미리결정된 조합들의 미리 설치 중에 실행된 작업은 취소될 수 있으며, 설치 프로세스는 승인된 업데이트들만을 설치하도록 재개시될 수 있다.
업데이트들을 사용자에게 통지하기 전에 업데이트들의 설치의 적어도 일부분을 실행함으로써, 업데이트들의 사용자 승인 시 실행될 나머지 업데이트들의 설치를 위한 작업은 상당히 감소된다. 그 결과, 사용자가 인식하는 업데이트들의 설치에 소비되는 시간이 상당히 더 짧아져서, 업데이트 설치와 관련된 사용자 경험을 향상시킨다. 더욱이, 설치 프로세스의 일부 또는 거의 대부분이 컴퓨팅 시스템에서 실행중인 다른 프로세스들 또는 사용자를 방해하지 않고 배경에서 실행되었기 때문에, 업데이트들의 설치에 의해 야기되는 사용자에 대한 방해가 감소된다. 짧아진 사용자 인식 설치 시간 및 감소된 사용자 방해에 따라, 사용자들은 컴퓨팅 시스템에서의 소프트웨어에 대한 업데이트들을 승인할 가능성이 더 많다.
도 1a-1b는 각종 실시예들에 따른 컴퓨팅 시스템에서의 소프트웨어 업데이트들의 프리-히팅된 설치를 위한 프로세스의 흐름도를 도시한다. 프로세스는 소프트웨어, 하드웨어, 펌웨어, 또는 상술된 바의 임의의 조합을 포함하는 프로세싱 로직에 의해 실행될 수 있다. 예를 들어, 프로세스는 후술되는 바와 같이 도 5에 도시된 컴퓨팅 디바이스로 구현된 프로세싱 로직에 의해 실행될 수 있다.
도 1a를 참조하면, 프로세싱 로직은 컴퓨팅 시스템의 배경에서 소프트웨어에 대한 업데이트들을 위해 컴퓨팅 시스템을 원격 소스에 연결한다(프로세싱 블록 110). 원격 소스는, 무선 네트워크들 및/또는 유선 네트워크들을 통해, 컴퓨팅 시스템에 연결된 서버, 퍼스널 컴퓨터 등의 다른 컴퓨팅 디바이스일 수 있다. 네트워크들은 LAN(local area network), WAN(wide area network), 이더넷 등을 포함할 수 있다. 소프트웨어에 대한 업데이트들은 소프트웨어에 대한 업그레이들, 새로운 버전들의 소프트웨어, 소프트웨어의 보안 패치들 등을 포함할 수 있다. 프로세싱 로직은 컴퓨팅 시스템의 배경에서 컴퓨팅 시스템을 원격 소스에 연결해서, 컴퓨팅 시스템에서 실행중인 현재 프로세스들을 방해하지 않음을 주지하라. 따라서, 컴퓨팅 시스템의 사용자는 프로세싱 로직이 무엇을 하고 있는지를 알지 못할 수 있다. 일부 실시예들에서, 프로세싱 로직은 이용가능한 업데이트들을 검출하기 위해 원격 소스에 정기적으로 질의할 수 있다.
원격 소스에서 이용가능한 업데이트들의 메타데이터에 기초하여, 프로세싱 로직은 어떤 업데이트(들)가 컴퓨팅 시스템에 적합한지를 결정한다(프로세싱 블록 112). 메타데이터의 일부 일례들은 버전 번호들, 허가 또는 자격 정보, 시스템 요구 사항들 등을 포함할 수 있다. 그 후, 프로세싱 로직은 원격 소스로부터 컴퓨팅 시스템으로 적합한 업데이트들의 패키지들을 다운로드한다(프로세싱 블록 114).
일부 실시예들에서, 프로세싱 로직은 컴퓨팅 시스템의 컴퓨터 판독가능한 저장 디바이스(예를 들어, 디스크)의 임시 영역에서 다운로드된 패키지들의 설치를 개시한다(프로세싱 블록 116). 프로세싱 로직은 업데이트들의 설치를 위해 디스크에서 이 임시 영역을 예비했을 수 있다. 또한, 업데이트들이 커밋되기 전에 이 임시 영역에 부분적으로 설치된 업데이트들이 컴퓨팅 시스템에서 현재 버전의 소프트웨어를 겹쳐 쓰거나 간섭하지 않도록, 디스크에서의 이 임시 영역은 디스크의 나머지로부터 격리될 수 있다. 이와 같이 하여, 이 임시 영역은 샌드박스라고 할 수 있으며, 부분적으로 설치된 업데이트들은 또한 샌드박싱된 것으로 언급될 수 있다. 설치는 설치 프로세스의 일부로서 압축 해제될 압축된 파일들의 다운로드를 포함할 수 있으며; 더욱이, 설치 프로세스는, 자기 하드 드라이브 또는 비휘발성 반도체 메모리 등의, 저장 디바이스의, 실행가능한 소프트웨어를 포함하는, 파일들의 구성을 포함할 수 있다. 설치는 폴더들 또는 디렉토리들, 등록 엔트리들(예를 들어, Microsoft Windows의), 구성 파일 엔트리들, 및 링크들 또는 바로가기들, 및 이러한 항목들의 부분집합의 생성 또는 변경을 또한 포함할 수 있다. 프로세싱 로직은 임시 영역에서 다운로드된 패키지들을 사용해서 시스템 캐시를 구축할 수 있다(프로세싱 블록 118). 일부 실시예들에서, 미리 초기화된 상태를 구성하는 컴퓨터 판독가능한 저장 디바이스의 메모리 조각은 세이브 오프되고(saved off), 그 후 다시 판독되고, 다른 노고 없이 사용될 수 있다. 디스크에 직렬화될 수 있는, 이 메모리 조각은 캐시이다. 예를 들어, 프로세싱 로직은 패키지들(압축 및/또는 암호화되었을 수 있음)로부터 업데이트들의 파일들을 추출하고, 필요한 경우, 이 파일들을 압축 해제 및/또는 해독하며, 후에 임시 영역에서 미리결정된 계층으로 이 파일들을 배열할 수 있으며, 이 계층은 컴퓨팅 시스템에서 현재 사용중인 시스템 캐시의 유사한 파일들의 계층을 미러링한다.
일부 실시예들에서, 업데이트를 필요로 하는 2개의 상이한 캐시들, 즉, 커널/kext 캐시 및 dyld 공유 캐시가 있다. 커널/kext 캐시는 커널 공간에서 실행할 필요가 있는 (컴퓨팅 시스템 및/또는 제3자들의 운영 체제의 벤더에 의해 제공될 수 있는) 드라이버 코드와 관련된다. dyld 공유 캐시는 컴퓨팅 시스템의 사용자 공간에서 애플리케이션들에 의해 사용되는 공유 코드 라이브러리들과 관련된다. 양 캐시들은 시스템이 차후 부팅 또는 애플리케이션 론치 사이클들 중에 종래의 더 많은 시간 소모적 초기화 프로세스에 걸쳐 실행되는 것을 방지한다. 캐시들과 관련된 다른 세부 사항들은, 그 전체가 참조용으로 본 명세서에 인용된, 발명인들 마이클 스미스(Michael Smith) 및 죠셉 소콜, 주니어(Joseph Sokol, Jr.)에 의한, "운영 체제를 부팅하기 위한 방법(Method for Booting an Operating System)"이라는 제목의, 미국 특허 번호 제7,607,000호에서 발견될 수 있다.
다음으로, 프로세싱 로직은 이용가능한 업데이트들을 컴퓨팅 시스템의 사용자에게 알린다(프로세싱 블록 120). 상기 프로세스는 업데이트들의 미리 설치 또는 업데이트들의 설치의 프리-히팅이라고 할 수 있다. 일부 실시예들에서, 프로세싱 로직은 이용가능한 업데이트들을 사용자에게 통지하기 위해 메시지를 디스플레이하도록 사용자 인터페이스(예를 들어, 그래픽 사용자 인터페이스)를 생성할 수 있다. 사용자 인터페이스는 사용자가 이용가능한 업데이트들을 승인할지 또는 거부할지를 사용자가 나타낼 수 있게 또한 할 수 있다. 일부 실시예들에서, 사용자 인터페이스는 사용자가 승인 또는 거부를 위해 이용가능한 업데이트들의 부분집합을 선택할 수 있게 하기 위해 사용자 인터페이스 컨트롤(예를 들어, 버튼들, 체크박스들, 드롭-다운 메뉴들 등)을 포함할 수 있다. 다시 말해서, 이용가능한 모든 업데이트들을 승인 또는 거부하는 대신, 사용자는 설치할 특정 업데이트들만을 선택함으로써 프로세스를 커스터마이즈할 수 있다.
업데이트들을 미리 설치하고 이용가능한 업데이트들을 사용자에게 알린 후에, 프로세싱 로직은 업데이트들에 관한 사용자 입력을 대기한다(프로세싱 블록 122). 블록 124에서, 프로세싱 로직은 임의의 사용자 입력이 수신되는지를 결정한다. 없으면, 프로세싱 로직은 블록 122로 돌아가서 계속해서 사용자 입력을 기다린다. 다른 경우, 프로세싱 로직은 도 1b의 블록 126으로 이행한다.
도 1b를 참조하면, 프로세싱 로직은 모든 이용가능한 업데이트들의 설치를 사용자가 승인하는지를 검사한다(프로세싱 블록 126). 그렇다면, 프로세싱 로직은 모든 업데이트들을 커밋한다(프로세싱 블록 128). 예를 들어, 프로세싱 로직은 현재 시스템 캐시를 대체하기 위해 임시 영역에서 구축된 시스템 캐시를 파일 시스템으로 교환함으로써 업데이트들의 설치를 완성 또는 완료할 수 있다. 일부 실시예들에서, 프로세싱 로직은 임시 영역에서 새롭게 구축된 시스템 캐시를 포인팅하도록 현재 시스템 캐시를 포인팅하는 포인터를 변경하고, 현재 시스템 캐시를 삭제할 수 있다. 일부 실시예들에서, 프로세싱 로직은 현재 시스템 캐시를 대체하기 위해 현재 시스템 캐시를 삭제하고 현재 시스템 캐시의 로케이션으로 새롭게 구축된 시스템 캐시를 이동하도록 단일 어토믹 동작(예를 들어, 쇼브 동작(a shove operation))을 실행할 수 있다. 소프트웨어 설치 완료와 관련된 다른 세부 사항들은, 그 전체가 참조용으로 본 명세서에 인용된, 발명인들 잭 알. 매튜(Jack R. Matthew) 및 죤 알. 창(John R. Chang)에 의한, 2008년 9월 30일에 출원된, "소프트웨어의 컴퓨터로의 설치(Installation of Software onto a Computer)"라는 제목의, 미국 특허 출원 일련 번호 제12/242,348호에서 발견될 수 있다. 선택적으로, 프로세싱 로직은 업데이트들을 효과적으로 하기 위해 필요한 경우 컴퓨팅 시스템을 재시작할 수 있다(프로세싱 블록 130).
일부 실시예들에서, 사용자가 블록 126에서 이용가능한 모든 업데이트들의 설치를 승인하지 않으면, 프로세싱 로직은 사용자가 이용가능한 업데이트들의 부분집합의 설치를 승인하는지를 또한 검사할 수 있다(프로세싱 블록 132). 사용자가 이용가능한 업데이트들의 부분집합의 설치를 승인하면, 프로세싱 로직은 구축된 시스템 캐시를 취소할 수 있다(프로세싱 블록 134). 예를 들어, 프로세싱 로직은 디스크의 임시 영역에서 구축된 시스템 캐시를 간단히 삭제할 수 있다. 그 후, 프로세싱 로직은 사용자가 어떤 업데이트들을 승인하는지에 기초하여 시스템 캐시를 재구축할 수 있다(프로세싱 블록 136). 그 후, 프로세싱 로직은 사용자에 의해 승인된 업데이트들만을 커밋한다(프로세싱 블록 138). 일부 실시예들에서, 프로세싱 로직은 임시 영역에서 새롭게 구축된 시스템 캐시를 포인팅하도록 현재 시스템 캐시를 포인팅하는 포인터를 변경하고, 현재 시스템 캐시를 삭제할 수 있다. 일부 실시예들에서, 프로세싱 로직은 현재 시스템 캐시를 대체하기 위해 현재 시스템 캐시를 삭제하고 현재 시스템 캐시의 로케이션으로 새롭게 구축된 시스템 캐시를 이동하도록 단일 어토믹 동작(예를 들어, 쇼브 동작)을 실행할 수 있다. 선택적으로, 프로세싱 로직은 업데이트들을 효과적으로 하기 위해 필요한 경우 컴퓨팅 시스템을 재시작할 수 있다(프로세싱 블록 140).
블록 132에서, 사용자가 심지어 이용가능한 업데이트들의 부분집합도 승인하지 않는다고 프로세싱 로직이 결정하면, 즉, 사용자가 모든 이용가능한 업데이트들을 거부하면, 프로세싱 로직은 구축된 시스템 캐시를 취소할 수 있다(프로세싱 블록 142). 일부 실시예들에서, 프로세싱 로직은 차후 사용을 위해 컴퓨팅 시스템에 다운로드된 패키지들을 보유한다(프로세싱 블록 144). 예를 들어, 프로세싱 로직은 다시 차후에 업데이트들을 검사할 수 있으며, 제2 집합의 업데이트들을 찾을 수 있다. 또한, 프로세싱 로직은 이전에 다운로드된 패키지들의 일부가 제2 집합의 업데이트들을 설치하는데 여전히 필요하다고 결정할 수 있으며, 따라서, 이전에 다운로드된 패키지들이 후에 사용될 수 있다.
도 2a-2b는 각종 실시예들에 따른 컴퓨팅 시스템에서의 소프트웨어 업데이트들의 프리-히팅된 설치를 위한 프로세스의 흐름도를 도시한다. 상기 프로세스와 같이, 이 프로세스는 소프트웨어, 하드웨어, 펌웨어, 또는 상술된 바의 임의의 조합을 포함하는 프로세싱 로직에 의해 실행될 수 있다. 예를 들어, 프로세스는 후술되는 바와 같이 도 5에 도시된 컴퓨팅 디바이스로 구현된 프로세싱 로직에 의해 실행될 수 있다.
도 2a를 참조하면, 프로세싱 로직은 컴퓨팅 시스템의 배경에서 소프트웨어에 대한 업데이트들을 위해 컴퓨팅 시스템을 원격 소스에 연결한다(프로세싱 블록 210). 원격 소스는, 무선 네트워크들 및/또는 유선 네트워크들을 통해, 컴퓨팅 시스템에 연결된 서버, 퍼스널 컴퓨터 등의 다른 컴퓨팅 디바이스일 수 있다. 네트워크들은 LAN(local area network), WAN(wide area network), 이더넷 등을 포함할 수 있다. 소프트웨어에 대한 업데이트들은 소프트웨어에 대한 업그레이드들, 새로운 버전들의 소프트웨어, 소프트웨어의 보안 패치들 등을 포함할 수 있다. 프로세싱 로직은 컴퓨팅 시스템의 배경에서 컴퓨팅 시스템을 원격 소스에 연결해서, 컴퓨팅 시스템에서 실행중인 현재 프로세스들을 방해하지 않음을 주지하라. 따라서, 컴퓨팅 시스템의 사용자는 프로세싱 로직이 무엇을 하고 있는지를 알지 못할 수 있다.
원격 소스에서 이용가능한 업데이트들의 메타데이터에 기초하여, 프로세싱 로직은 어떤 업데이트(들)가 컴퓨팅 시스템에 적합한지를 결정한다(프로세싱 블록 212). 메타데이터의 일부 일례들은 상술되었다. 그 후, 프로세싱 로직은 원격 소스로부터 컴퓨팅 시스템으로 적합한 업데이트들의 패키지들을 다운로드한다(프로세싱 블록 214).
일부 실시예들에서, 프로세싱 로직은 컴퓨팅 시스템의 컴퓨터 판독가능한 저장 디바이스의 임시 영역에서 다운로드된 패키지들의 설치를 개시한다(프로세싱 블록 216). 업데이트들의 모든 가능한 조합에 대해, 프로세싱 로직은 임시 영역에서 샌드박싱된, 다운로드된 패키지들을 사용해서 시스템 캐시를 구축한다(프로세싱 블록 218). 시스템 캐시의 일부 실시예들의 세부 사항들은 상술되었다. 업데이트들의 각각의 조합에 대해 구축된 시스템 캐시는 또한 샌드박싱된다. 즉, 시스템 캐시는 임시 영역에서 구축된 다른 시스템 캐시들과 격리된다. 이 시스템 캐시들이 설치 시간에 구축됨에 따라, 컴퓨팅 시스템이 동적으로 될 수 있음을 주지하라. 다시 말해서, 상이한 커널 확장들 및 라이브러리들은 상이한 전개들에 걸쳐 존재할 수 있다. 예를 들어, 동일한 운영 체제의 복사본을 각각 가지지만, 하나의 복사본은 하드웨어 제품을 지원하도록 제3자 커널 확장을 가질 수 있는 반면, 다른 하나는 갖지 않은, 2개의 시스템들이 있을 수 있다. 다른 일례에서, 상이한 dyld 공유 캐시를 필요로 할 수 있는 하나 이상의 미리 선택된 사용자 애플리케이션들이 딸려 있는 더 새로운 버전의 시스템 공유 라이브러리를 둘 다 가진 2개의 컴퓨팅 시스템들이 있을 수 있다.
다음으로, 프로세싱 로직은 이용가능한 업데이트들을 컴퓨팅 시스템의 사용자에게 알린다(프로세싱 블록 220). 상기 프로세스는 업데이트들의 미리 설치 또는 업데이트들의 설치의 프리-히팅이라고 할 수 있다. 일부 실시예들에서, 프로세싱 로직은 이용가능한 업데이트들을 사용자에게 통지하기 위해 메시지를 디스플레이하도록 사용자 인터페이스(예를 들어, 그래픽 사용자 인터페이스)를 생성할 수 있다. 사용자 인터페이스의 일부 실시예들의 세부 사항들은 상술되었다.
업데이트들을 미리 설치하고 이용가능한 업데이트들을 사용자에게 알린 후에, 프로세싱 로직은 업데이트들에 관한 사용자 입력을 대기한다(프로세싱 블록 222). 블록 224에서, 프로세싱 로직은 임의의 사용자 입력이 수신되는지를 결정한다. 없으면, 프로세싱 로직은 블록 222로 돌아가서 계속해서 사용자 입력을 기다린다. 다른 경우, 프로세싱 로직은 도 2b의 블록 226으로 이행한다.
도 2b를 참조하면, 프로세싱 로직은 모든 이용가능한 업데이트들의 설치를 사용자가 승인하는지를 검사한다(프로세싱 블록 226). 그렇다면, 프로세싱 로직은 모든 업데이트들을 커밋한다(프로세싱 블록 228). 예를 들어, 프로세싱 로직은 현재 시스템 캐시를 대체하기 위해 임시 영역에서 구축된 시스템 캐시를 파일 시스템으로 교환함으로써 업데이트들의 설치를 완성 또는 완료할 수 있다. 일부 실시예들에서, 프로세싱 로직은 임시 영역에서 새롭게 구축된 시스템 캐시를 포인팅하도록 현재 시스템 캐시를 포인팅하는 포인터를 변경하고, 현재 시스템 캐시를 삭제할 수 있다. 일부 실시예들에서, 프로세싱 로직은 현재 시스템 캐시를 대체하기 위해 현재 시스템 캐시를 삭제하고 현재 시스템 캐시의 로케이션으로 새롭게 구축된 시스템 캐시를 이동하도록 단일 어토믹 동작(예를 들어, 쇼브 동작)을 실행할 수 있다. 선택적으로, 프로세싱 로직은 업데이트들을 효과적으로 하기 위해 필요한 경우 컴퓨팅 시스템을 재시작할 수 있다(프로세싱 블록 230).
일부 실시예들에서, 사용자가 블록 226에서 이용가능한 모든 업데이트들의 설치를 승인하지 않으면, 프로세싱 로직은 사용자가 이용가능한 업데이트들의 부분집합의 설치를 승인하는지를 또한 검사할 수 있다(프로세싱 블록 232). 사용자가 이용가능한 업데이트들의 부분집합의 설치를 승인하면, 프로세싱 로직은 사용자가 승인한 업데이트들의 조합과 일치하는 임시 영역에서 구축된 시스템 캐시를 찾는다(프로세싱 블록 234). 그 후, 프로세싱 로직은 승인된 업데이트들의 조합을 커밋하기 위해 찾아진 시스템 캐시로 현재 시스템 캐시를 대체할 수 있다(프로세싱 블록 236). 일부 실시예들에서, 프로세싱 로직은 임시 영역에서 찾아진 시스템 캐시를 포인팅하도록 현재 시스템 캐시를 포인팅하는 포인터를 변경하고, 현재 시스템 캐시를 삭제할 수 있다. 일부 실시예들에서, 프로세싱 로직은 현재 시스템 캐시를 대체하기 위해 현재 시스템 캐시를 삭제하고 현재 시스템 캐시의 로케이션으로 찾아진 시스템 캐시를 이동하도록 단일 어토믹 동작(예를 들어, 쇼브 동작)을 실행할 수 있다. 프로세싱 로직은 업데이트들의 다른 조합들에 대해 임시 영역에서 구축된 나머지 시스템 캐시들을 또한 삭제 또는 제거할 수 있다. 마지막으로, 프로세싱 로직은 업데이트들을 효과적으로 하기 위해 필요한 경우 컴퓨팅 시스템을 재시작할 수 있다(프로세싱 블록 238). 시스템 캐시가 업데이트들을 사용자에게 알리기 전에 추측에 근거하여 구축되었기 때문에, 사용자 인식 업데이트 시간(사용자가 선택된 업데이트들을 승인함으로부터 선택된 업데이트들을 커밋할 때까지 실행될 수 있음)이 종래의 업데이트 설치 시간보다 더 짧다. 또한, 업데이트들의 미리 설치 중에 추측에 근거하여 구축된 시스템 캐시들은 또한 상이한 커널 확장들 및 라이브러리들이 상이한 전개들에 걸쳐 존재할 수 있게 한다.
블록 232에서, 사용자가 어떠한 이용가능한 업데이트들도 승인하지 않는다고 프로세싱 로직이 결정하면, 즉, 사용자가 모든 이용가능한 업데이트들을 거부하면, 프로세싱 로직은 구축된 시스템 캐시들을 취소할 수 있다(프로세싱 블록 242). 일부 실시예들에서, 프로세싱 로직은 차후 사용을 위해 컴퓨팅 시스템에 다운로드된 패키지들을 보유한다(프로세싱 블록 244). 예를 들어, 프로세싱 로직은 다시 차후에 업데이트들을 검사할 수 있으며, 제2 집합의 업데이트들을 찾을 수 있다. 또한, 프로세싱 로직은 이전에 다운로드된 패키지들의 일부가 제2 집합의 업데이트들을 설치하는데 여전히 필요하다고 결정할 수 있으며, 따라서, 이전에 다운로드된 패키지들이 후에 사용될 수 있다.
도 3a-3b는 각종 실시예들에 따른 컴퓨팅 시스템에서의 소프트웨어 업데이트들의 프리-히팅된 설치를 위한 프로세스의 흐름도를 도시한다. 상기 프로세스와 같이, 이 프로세스는 소프트웨어, 하드웨어, 펌웨어, 또는 상술된 바의 임의의 조합을 포함하는 프로세싱 로직에 의해 실행될 수 있다. 예를 들어, 프로세스는 후술되는 바와 같이 도 5에 도시된 컴퓨팅 디바이스로 구현된 프로세싱 로직에 의해 실행될 수 있다.
도 3a를 참조하면, 프로세싱 로직은 컴퓨팅 시스템의 배경에서 소프트웨어에 대한 업데이트들을 위해 컴퓨팅 시스템을 원격 소스에 연결한다(프로세싱 블록 310). 원격 소스는, 무선 네트워크들 및/또는 유선 네트워크들을 통해, 컴퓨팅 시스템에 연결된 서버, 퍼스널 컴퓨터 등의 다른 컴퓨팅 디바이스일 수 있다. 네트워크들은 LAN(local area network), WAN(wide area network), 이더넷 등을 포함할 수 있다. 소프트웨어에 대한 업데이트들은 소프트웨어에 대한 업그레이드들, 새로운 버전들의 소프트웨어, 소프트웨어의 보안 패치들 등을 포함할 수 있다. 프로세싱 로직은 컴퓨팅 시스템의 배경에서 컴퓨팅 시스템을 원격 소스에 연결해서, 컴퓨팅 시스템에서 실행중인 현재 프로세스들을 방해하지 않음을 주지하라. 따라서, 컴퓨팅 시스템의 사용자는 프로세싱 로직이 무엇을 하고 있는지를 알지 못할 수 있다.
원격 소스에서 이용가능한 업데이트들의 메타데이터에 기초하여, 프로세싱 로직은 어떤 업데이트(들)가 컴퓨팅 시스템에 적합한지를 결정한다(프로세싱 블록 312). 메타데이터의 일부 일례들은 상술되었다. 그 후, 프로세싱 로직은 원격 소스로부터 컴퓨팅 시스템으로 적합한 업데이트들의 패키지들을 다운로드한다(프로세싱 블록 314).
일부 실시예들에서, 프로세싱 로직은 컴퓨팅 시스템의 컴퓨터 판독가능한 저장 디바이스의 임시 영역에서 다운로드된 패키지들의 설치를 개시한다(프로세싱 블록 316). 업데이트들의 가능한 조합들의 미리결정된 집합에 대해, 프로세싱 로직은 임시 영역에서 샌드박싱된, 다운로드된 패키지들을 사용해서 이 조합들 각각에 대한 시스템 캐시를 구축한다(프로세싱 블록 318). 시스템 캐시의 일부 실시예들의 세부 사항들은 상술되었다. 통상, 가능한 조합들의 미리결정된 집합은 모든 적합한 업데이트들의 조합 및 적합한 업데이트들의 하나 이상의 인기 있는 조합들을 포함한다. 다시 말해서, 프로세싱 로직은 다수의 시스템 캐시들을 추측에 근거하여 구축하고, 그 중 하나가 후에 사용자에 의해 승인되는 업데이트들을 커밋하기 위해 선택될 수 있다. 업데이트들의 각각의 조합에 대해 구축된 시스템 캐시는 또한 샌드박싱된다. 즉, 시스템 캐시는 임시 영역에서 구축된 다른 시스템 캐시들과 격리된다. 그 후, 프로세싱 로직은 이용가능한 업데이트들을 컴퓨팅 시스템의 사용자에게 알린다(프로세싱 블록 320). 상기 프로세스는 업데이트들의 미리 설치 또는 업데이트들의 설치의 프리-히팅이라고 할 수 있다. 일부 실시예들에서, 프로세싱 로직은 이용가능한 업데이트들을 사용자에게 통지하기 위해 메시지를 디스플레이하도록 사용자 인터페이스(예를 들어, 그래픽 사용자 인터페이스)를 생성할 수 있다. 사용자 인터페이스의 일부 실시예들의 세부 사항들은 상술되었다.
업데이트들을 미리 설치하고 이용가능한 업데이트들을 사용자에게 알린 후에, 프로세싱 로직은 업데이트들에 관한 사용자 입력을 대기한다(프로세싱 블록 322). 블록 324에서, 프로세싱 로직은 임의의 사용자 입력이 수신되는지를 결정한다. 없으면, 프로세싱 로직은 블록 322로 돌아가서 계속해서 사용자 입력을 기다린다. 다른 경우, 프로세싱 로직은 도 3b의 블록 326으로 이행한다.
도 3b를 참조하면, 프로세싱 로직은 모든 이용가능한 업데이트들의 설치를 사용자가 승인하는지를 검사한다(프로세싱 블록 326). 그렇다면, 프로세싱 로직은 모든 업데이트들을 커밋한다(프로세싱 블록 328). 예를 들어, 프로세싱 로직은 현재 시스템 캐시를 대체하기 위해 임시 영역에서 구축된 시스템 캐시를 파일 시스템으로 교환함으로써 업데이트들의 설치를 완성 또는 완료할 수 있다. 일부 실시예들에서, 프로세싱 로직은 임시 영역에서 새롭게 구축된 시스템 캐시를 포인팅하도록 현재 시스템 캐시를 포인팅하는 포인터를 변경하고, 현재 시스템 캐시를 삭제할 수 있다. 일부 실시예들에서, 프로세싱 로직은 현재 시스템 캐시를 대체하기 위해 현재 시스템 캐시를 삭제하고 현재 시스템 캐시의 로케이션으로 새롭게 구축된 시스템 캐시를 이동하도록 단일 어토믹 동작(예를 들어, 쇼브 동작)을 실행할 수 있다. 선택적으로, 프로세싱 로직은 업데이트들을 효과적으로 하기 위해 필요한 경우 컴퓨팅 시스템을 재시작할 수 있다(프로세싱 블록 330).
일부 실시예들에서, 사용자가 블록 326에서 모든 이용가능한 업데이트들의 설치를 승인하지 않으면, 프로세싱 로직은 사용자가 이용가능한 업데이트들의 부분집합의 설치를 승인하는지를 또한 검사할 수 있다(프로세싱 블록 332). 사용자가 이용가능한 업데이트들의 부분집합의 설치를 승인하면, 프로세싱 로직은 승인된 부분집합이 미리결정된 조합들 중 하나인지를 검사한다(프로세싱 블록 333). 그렇다면, 프로세싱 로직은 사용자가 승인한 업데이트들의 조합과 일치하는 임시 영역에서 구축된 시스템 캐시를 찾는다(프로세싱 블록 334). 그 후, 프로세싱 로직은 승인된 업데이트들의 조합을 커밋하기 위해 찾아진 시스템 캐시로 현재 시스템 캐시를 대체할 수 있다(프로세싱 블록 336). 일부 실시예들에서, 프로세싱 로직은 임시 영역에서 찾아진 시스템 캐시를 포인팅하도록 현재 시스템 캐시를 포인팅하는 포인터를 변경하고, 현재 시스템 캐시를 삭제할 수 있다. 일부 실시예들에서, 프로세싱 로직은 현재 시스템 캐시를 대체하기 위해 현재 시스템 캐시를 삭제하고 현재 시스템 캐시의 로케이션으로 찾아진 시스템 캐시를 이동하도록 단일 어토믹 동작(예를 들어, 쇼브 동작)을 실행할 수 있다. 프로세싱 로직은 업데이트들의 다른 조합들에 대해 임시 영역에서 구축된 나머지 시스템 캐시들을 또한 삭제 또는 제거할 수 있다. 마지막으로, 프로세싱 로직은 승인된 업데이트들을 효과적으로 하기 위해 필요한 경우 컴퓨팅 시스템을 재시작할 수 있다(프로세싱 블록 338). 시스템 캐시가 업데이트들을 사용자에게 알리기 전에 추측에 근거하여 구축되었기 때문에, 사용자 인식 업데이트 시간(사용자가 선택된 업데이트들을 승인함으로부터 선택된 업데이트들을 커밋할 때까지 실행될 수 있음)이 종래의 업데이트 설치 시간 보다 더 짧다. 또한, 업데이트들의 미리 설치 중에 추측에 근거하여 구축된 시스템 캐시들은 또한 상이한 커널 확장들 및 라이브러리들이 상이한 전개들에 걸쳐 존재할 수 있게 한다.
그러나, 블록 333에서 승인된 부분집합이 미리결정된 조합들 중 하나가 아니라고 프로세싱 로직이 결정하면, 프로세싱 로직은 구축된 모든 시스템 캐시들을 취소할 수 있으며(프로세싱 블록 335), 사용자가 어떤 업데이트들을 승인하는지에 기초하여 시스템 캐시를 재구축하고(프로세싱 블록 339), 사용자가 승인한 업데이트들만을 커밋한다(프로세싱 블록 340). 마지막으로, 프로세싱 로직은 승인된 업데이트들을 효과적으로 하기 위해 필요한 경우 컴퓨팅 시스템을 재시작할 수 있다(프로세싱 블록 338).
블록 332에서, 사용자가 어떠한 이용가능한 업데이트들도 승인하지 않는다고 프로세싱 로직이 결정하면, 즉, 사용자가 모든 이용가능한 업데이트들을 거부하면, 프로세싱 로직은 구축된 시스템 캐시들을 취소할 수 있다(프로세싱 블록 342). 일부 실시예들에서, 프로세싱 로직은 차후 사용을 위해 컴퓨팅 시스템에 다운로드된 패키지들을 보유한다(프로세싱 블록 344). 예를 들어, 프로세싱 로직은 다시 차후에 업데이트들을 검사할 수 있으며, 제2 집합의 업데이트들을 찾을 수 있다. 또한, 프로세싱 로직은 이전에 다운로드된 패키지들의 일부가 제2 집합의 업데이트들을 설치하는데 여전히 필요하다고 결정할 수 있으며, 따라서, 이전에 다운로드된 패키지들이 후에 사용될 수 있다.
도 4는 본 발명의 일부 실시예들에 따른 프리-히팅된 소프트웨어 설치에서 사용될 수 있는 컴퓨팅 시스템의 컴퓨터 판독가능한 저장 디바이스의 일 실시예를 도시한 블록도이다. 컴퓨터 판독가능한 저장 디바이스(400)는 컴퓨팅 시스템의 하드 디스크를 포함할 수 있다. 컴퓨터 판독가능한 저장 디바이스(400)는 컴퓨팅 시스템의 현재 파일 시스템(410)을 저장한다. 또한, 현재 파일 시스템(410)으로부터 격리된 임시 영역(420)은 업데이트들의 미리 설치를 위해 예비된다. 업데이트들의 미리 설치 중에, 시스템 캐시(425)가 현재 파일 시스템(410)의 계층을 미러링한 디렉토리들의 계층으로 업데이트들과 연관된 파일들을 조직 및 저장함으로써 임시 영역(420)에서 구축될 수 있다. 추가의 시스템 캐시들이 업데이트들의 상이한 조합들에 대해 임시 영역(420)에서 구축될 수 있다.
사용자가 모든 업데이트들을 승인하면, 임시 영역(420)에서 구축된 시스템 캐시(425)는 현재 파일 시스템(410)으로 교환될 수 있다. 사용자가 모든 업데이트들을 거부하면, 구축된 시스템 캐시(425)는 삭제될 수 있다. 사용자가 업데이트들의 부분집합만을 승인하면, 구축된 시스템 캐시(425)는 삭제될 수 있으며, 업데이트들의 승인된 부분집합이 스크래치로부터 설치될 수 있다. 일부 실시예들에서, 업데이트들의 미리결정된 조합들에 대응하는 다수의 시스템 캐시들이 구축된 경우, 업데이트들의 승인된 부분집합이 업데이트들의 미리결정된 조합들 중 하나라면, 구축된 시스템 캐시들 중 하나는 업데이트들의 승인된 부분집합을 커밋하는데 사용될 수 있다. 소프트웨어 업데이트들의 미리 설치의 일부 실시예들의 세부 사항들은 상술되었다.
도 5는 본 명세서에 기술된 각종 실시예들을 구현하기에 적합한 컴퓨팅 환경을 도시한 블록도이다. 총괄하여, 이 컴포넌트들은, 범용 컴퓨터 시스템들(예를 들어, 서버들, 퍼스널 컴퓨터들, 랩탐 컴퓨터들 등) 및 특별 핸드헬드 컴퓨터 디바이스들(예를 들어, 퍼스널 디지털 어시스턴트들(PDAs), 스마트 폰들 등)을 포함하지만 이들로만 제한되지 않는 광범위한 범주의 하드웨어 시스템들을 나타내도록 의도된다.
컴퓨팅 시스템(500)은 버스(580)를 통해 서로 연결된 프로세서(510), I/O 디바이스들(540), 메인 메모리(520) 및 플래시 메모리(530)를 포함한다. 시스템 메모리(RAM), 및 비휘발성 저장 디바이스들(예를 들어, 자기 또는 광 디스크들) 중 하나 또는 그 이상을 포함할 수 있는 메인 메모리(520)는 프로세서(510)에 의해 사용될 명령들 및 데이터를 저장한다. 또한, 네트워크 인터페이스들(570) 및 데이터 스토리지(560)는 버스(580)를 통해 서로 연결된다. 데이터 스토리지(560)는 본 명세서에 기술된 구조화된 데이터(예를 들어, 접촉 정보, 캘린더 등)를 저장한다.
컴퓨팅 시스템(500)의 각종 컴포넌트들은 각종 실시예들에서 재구성될 수 있으며, 일부 실시예들은 상기 컴포넌트들 전부를 요구하거나 포함하지 않을 수 있다. 게다가, 추가 프로세서들(예를 들어, 디지털 신호 프로세서, 그래픽 프로세서 등), 저장 디바이스들, 메모리들, 네트워크/통신 인터페이스들 등의 추가 컴포넌트들이 시스템(500)에 포함될 수 있다.
일부 실시예들에서, 상술된 바와 같이 본 발명에 따른 프리-히팅된 소프트웨어 설치 또는 소프트웨어 업데이트들의 미리 설치를 위한 방법들 및 장치들이 도 5의 컴퓨팅 시스템(500)에 의해 실행되는 일련의 소프트웨어 루틴들로 구현될 수 있다. 이 소프트웨어 루틴들은 프로세서(510) 등의 하드웨어 시스템의 프로세싱 시스템에 의해 실행되는 복수의 또는 일련의 명령들을 포함한다. 처음에, 일련의 명령들은 데이터 스토리지 디바이스(560), 메모리(520), 및/또는 플래시(530)에 저장된다.
본 명세서에 기술된 각종 컴포넌트들은 본 명세서에 기술된 기능들을 실행하기 위한 수단일 수 있다. 본 명세서에 기술된 각각의 컴포넌트는 소프트웨어, 하드웨어, 또는 이들의 조합을 포함한다. 컴포넌트들은 소프트웨어 모듈들, 하드웨어 모듈들, 특별 목적 하드웨어(예를 들어, 애플리케이션 특정 하드웨어, 주문형 반도체들(ASICs), 디지털 신호 프로세서들(DSPs) 등), 내장형 제어기들, 하드와이어 회로 등으로서 구현될 수 있다. 소프트웨어 콘텐츠(예를 들어, 데이터, 명령들, 구성 등)는, 실행될 수 있는 명령들을 나타내는 콘텐츠를 제공하는, 컴퓨터 판독가능한 매체를 포함하는 제조품을 통해 제공될 수 있다. 콘텐츠는 컴퓨터가 본 명세서에 기술된 각종 기능들/동작들을 실행하게 야기할 수 있다. 컴퓨터 판독가능한(또는 머신 판독가능한 또는 전자적으로 액세스 가능한) 매체는, 기록 가능/기록 불가능 매체(예를 들어, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 디바이스들 등) 등의, 컴퓨팅 디바이스(예를 들어, 컴퓨터, PDA, 전자 시스템 등)에 의해 액세스 가능한 형태로 정보를 제공(즉, 저장 및/또는 전송)하는 임의의 메커니즘을 포함한다. 콘텐츠는 직접 실행가능한한 ("객체" 또는 "실행가능한" 형태), 소스 코드 등일 수 있다. 컴퓨터 판독가능한 매체는 콘텐츠가 다운로드될 수 있는 스토리지 또는 데이터베이스를 또한 포함할 수 있다. 컴퓨터 판독가능한 매체는 판매 시 또는 배달시 콘텐츠가 저장되어 있는 디바이스 또는 제품을 또한 포함할 수 있다. 따라서, 콘텐츠가 저장되어 있는 디바이스의 배달, 또는 통신 매체를 통해 다운로드할 콘텐츠의 제공은 본 명세서에 기술된 이러한 콘텐츠를 가진 제조품을 제공하는 것으로 이해될 수 있다.
본 명세서에 기술된 바 외에, 각종 변경들이 본 발명의 범위로부터 벗어나지 않은 채로 본 발명의 기술된 실시예들 및 구현들에 대해 이루어질 수 있다. 따라서, 본 명세서의 실례들 및 일례들은 제한적인 의미가 아니라 예시적인 의미로 해석되어야만 한다. 본 발명의 범위는 오직 이하의 청구항들을 참조해서만 판단되어야만 한다.
Claims (26)
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 프로세싱 디바이스에 의해 수행되는 컴퓨터 구현 방법으로서,
컴퓨팅 시스템에서 현재 실행 중인 프로세스들과 충돌하지 않고 상기 컴퓨팅 시스템 상의 소프트웨어에 대한 업데이트들의 집합의 설치의 일부분만을 수행하는 단계 - 상기 업데이트들의 집합의 설치의 일부분을 수행하는 단계는 복수의 시스템 캐시들을 구축하는 단계를 포함하고, 상기 복수의 시스템 캐시들의 각각은 업데이트들의 미리결정된 조합에 대응하고, 각각의 시스템 캐시는 상기 컴퓨팅 시스템 상에 사용 중인 시스템 캐시의 계층을 미러링하는 계층을 포함함 -;
상기 업데이트들의 집합의 설치의 일부분을 수행한 후에, 상기 업데이트들의 집합을 상기 컴퓨팅 시스템의 사용자에게 통지하는 단계;
상기 사용자가 업데이트들의 집합을 승인할 때까지, 상기 컴퓨팅 시스템 상의 상기 업데이트들의 집합의 설치의 완료를 보류하는 단계; 및
상기 업데이트들의 집합의 승인을 수신한 후에, 상기 업데이트들의 집합의 적어도 일부분의 설치를 완료하는 단계
를 포함하는 컴퓨터 구현 방법. - 제7항에 있어서,
상기 업데이트들의 집합 전체를 설치하는 대신에 상기 컴퓨팅 시스템 상에 설치할 상기 업데이트들의 집합의 부분집합을 사용자가 선택할 수 있게 하는 단계;
상기 사용자가 설치할 상기 업데이트들의 집합의 부분집합을 선택하는 것에 응답하여, 지금까지 수행된 설치를 취소하는 단계; 및
상기 컴퓨팅 시스템 상에 상기 선택된 업데이트들의 집합의 부분집합만을 재설치하는 단계
를 더 포함하는 컴퓨터 구현 방법. - 제7항에 있어서,
상기 방법은, 상기 업데이트들의 집합 전체의 설치의 완료를 보류하는 단계 이후에,
상기 사용자가 상기 업데이트들의 집합 전체를 거부하는 경우, 지금까지 수행된 설치를 취소하는 단계를 더 포함하는 컴퓨터 구현 방법. - 제7항에 있어서,
상기 업데이트들의 집합의 설치의 일부분을 수행하는 단계는,
상기 컴퓨팅 시스템의 컴퓨터 판독가능한 저장 디바이스 상의 임시 영역에 상기 업데이트들의 집합 내의 상기 업데이트들의 미리결정된 조합들 중 하나에 대한 시스템 캐시를 구축하는 단계; 및
상기 사용자가 상기 업데이트들의 미리결정된 조합을 승인하는 것에 응답하여, 상기 컴퓨팅 시스템의 현재 시스템 캐시와 상기 업데이트들의 미리결정된 조합에 대해 구축된 시스템 캐시를 교환(swapping)하는 단계
를 포함하는 컴퓨터 구현 방법. - 제10항에 있어서,
상기 방법은, 상기 업데이트들의 집합 전체의 설치의 완료를 보류하는 단계 이후에,
상기 사용자가 상기 업데이트들의 집합 전체를 허용하는 것에 응답하여, 상기 컴퓨팅 시스템의 현재 시스템 캐시를 대체하도록 상기 업데이트들의 집합 전체에 대해 구축된 시스템 캐시를 교환하는 단계를 더 포함하는 컴퓨터 구현 방법. - 제7항에 있어서,
상기 소프트웨어는 상기 컴퓨팅 시스템의 하나 이상의 사용자 애플리케이션들을 포함하는 컴퓨터 구현 방법. - 소프트웨어의 명령어들 및 데이터를 저장하는 컴퓨터 판독가능한 저장 디바이스;
상기 컴퓨터 판독가능한 저장 디바이스에 연결되어, 컴퓨팅 머신으로부터 상기 소프트웨어에 대한 업데이트들을 다운로드하도록 네트워크를 통해 상기 컴퓨팅 머신에 통신가능하게 연결되는 네트워크 인터페이스; 및
상기 네트워크 인터페이스에 연결되어, 상기 소프트웨어의 기존의 명령어들 및 데이터를 덮어쓰지 않고 상기 컴퓨터 판독가능한 저장 디바이스 상의 예비된 영역(reserved area)에서 상기 업데이트들을 미리 설치하는 프로세싱 디바이스 - 상기 다운로드된 업데이트들은 압축된 포맷의 복수의 패키지들을 포함하고, 상기 프로세싱 디바이스는 또한 상기 복수의 패키지들을 압축해제하여, 상기 컴퓨터 판독가능한 저장 디바이스 상의 상기 예비된 영역에 상기 복수의 패키지들을 저장하고, 상기 컴퓨터 판독가능한 저장 디바이스 상의 상기 예비된 영역에서의 상기 복수의 패키지들을 이용하여 복수의 시스템 캐시들을 구축하고, 상기 복수의 시스템 캐시들 각각은 상기 업데이트들 중 하나 이상의 업데이트들의 미리 결정된 조합에 대응함 -
를 포함하고
상기 프로세싱 디바이스는 또한 상기 예비된 영역에서 상기 업데이트들을 미리 설치한 이후에 사용자에게 이용가능한 업데이트들에 대해 통지하고 승인된 업데이트들에 대한 설치를 완료하는 장치. - 삭제
- 삭제
- 제13항에 있어서,
디스플레이 디바이스를 더 포함하고,
상기 프로세싱 디바이스는, 상기 업데이트들을 사용자에게 통지하기 위해, 상기 디스플레이 디바이스에 의해 디스플레이되는 사용자 인터페이스를 생성하는 장치. - 제16항에 있어서,
상기 업데이트들의 설치를 부분적으로 또는 전체적으로 승인하라는 또는 모든 업데이트들을 거부하라는 사용자 명령을 수신하는 사용자 입력 디바이스를 더 포함하는 장치. - 프로세싱 디바이스에 의해 수행되는 컴퓨터 구현 방법으로서,
컴퓨팅 시스템의 배경 동작에서 실행 중인 프로세스를 통해 상기 컴퓨팅 시스템 상에 소프트웨어에 대한 업데이트들을 부분적으로 설치하는 단계 - 상기 업데이트들을 부분적으로 설치하는 단계는 상기 컴퓨팅 시스템 상의 상기 소프트웨어의 현재 버전의 파일들로부터 격리된 임시 영역에서 하나 이상의 디렉토리들을 생성하고 상기 업데이트들과 연관된 상기 파일들을 상기 하나 이상의 디렉토리들로 복사하는 단계를 포함하고, 상기 하나 이상의 디렉토리들의 계층은 상기 소프트웨어의 현재 버전의 파일들의 계층을 미러링함 -;
상기 업데이트들을 부분적으로 설치한 후에, 상기 업데이트들을 상기 컴퓨팅 시스템의 사용자에게 통지하는 단계; 및
상기 사용자가 상기 업데이트들을 승인하는 것에 응답하여, 상기 컴퓨팅 시스템 상의 상기 업데이트들의 설치를 완료하는 단계
를 포함하는 컴퓨터 구현 방법. - 제18항에 있어서,
상기 업데이트들을 부분적으로 설치하는 단계는,
원격 소스로부터 다운로드된 복수의 패키지들로부터 상기 업데이트들과 연관된 파일들을 추출하는 단계
를 포함하는 컴퓨터 구현 방법. - 제19항에 있어서,
상기 방법은, 상기 업데이트들을 부분적으로 설치한 후 상기 업데이트들을 상기 컴퓨팅 시스템의 사용자에게 통지하는 단계 이후에,
상기 사용자가 상기 업데이트들 중 적어도 하나의 업데이트를 거부하는 것에 응답하여, 상기 거부된 업데이트들과 연관된 상기 파일들 중 하나 이상을 삭제하는 단계를 더 포함하는 컴퓨터 구현 방법. - 제19항에 있어서,
상기 방법은, 상기 업데이트들을 부분적으로 설치한 후 상기 업데이트들을 상기 컴퓨팅 시스템의 사용자에게 통지하는 단계 이후에,
상기 사용자가 모든 업데이트들을 거부하는 것에 응답하여, 상기 업데이트들과 연관된 파일들 및 상기 하나 이상의 디렉토리들을 모두 삭제하는 단계를 더 포함하는 컴퓨터 구현 방법. - 제19항에 있어서,
상기 컴퓨팅 시스템 상의 상기 업데이트들의 설치를 완료하는 단계는,
상기 사용자가 모든 업데이트들을 승인하는 것에 응답하여, 상기 컴퓨팅 시스템 상의 상기 소프트웨어의 현재 버전을 대체하기 위해, 상기 하나 이상의 디렉토리들을 그 안에 저장된 상기 업데이트들과 연관된 파일들과 함께 상기 컴퓨팅 시스템의 작업 파일 시스템으로 이동시키는 단계를 포함하는 컴퓨터 구현 방법. - 컴퓨팅 시스템에 대해 이용가능해지는 소프트웨어에 대한 업데이트들을 검출하기 위한 수단;
상기 컴퓨팅 시스템에 대한 업데이트들을 획득하기 위한 수단;
상기 컴퓨팅 시스템 상에 상기 업데이트들을 설치하기 위한 사용자 인식 시간(user-perceived time)을 감소시키기 위한 수단 - 상기 컴퓨팅 시스템 상에 상기 업데이트들을 설치하기 위한 사용자 인식 시간을 감소시키기 위한 수단은, 상기 컴퓨팅 시스템의 배경 동작에서 상기 컴퓨팅 시스템 상에 상기 업데이트들을 미리 설치하기 위한 수단을 포함하고, 상기 컴퓨팅 시스템의 배경 동작에서 상기 컴퓨팅 시스템 상에 상기 업데이트들을 미리 설치하기 위한 수단은 추가적으로 복수의 시스템 캐시들을 구축하는 것에 의해 상기 컴퓨팅 시스템의 상기 배경 동작을 통해 상기 컴퓨팅 시스템에 의해 컴퓨팅 시스템 상의 소프트웨어에 이용가능한 업데이트들의 부분집합을 부분적으로 설치하기 위한 수단을 포함하고, 시스템 캐시 각각은 상기 업데이트들의 미리결정된 조합에 대응함 -;
상기 업데이트들을 미리 설치한 후에, 상기 업데이트들을 상기 컴퓨팅 시스템의 사용자에게 통지하기 위한 수단; 및
상기 업데이트들에 대한 사용자 승인시 상기 업데이트들의 설치를 완료하는 것에 의해 상기 소프트웨어 업데이트들을 커밋팅하기 위한 수단 - 상기 소프트웨어 업데이트들을 커밋팅하기 위한 수단은 승인된 업데이트들의 조합과 연관된 시스템 캐시를 검색하기 위한 수단 및 현재 시스템 캐시를 승인된 업데이트들의 조합과 연관된 시스템 캐시와 대체하기 위한 수단을 포함함 -
을 포함하는 장치. - 삭제
- 명령어들을 저장하는 비일시적 컴퓨터 판독가능 매체로서, 상기 저장된 명령어들이 하나 이상의 프로세서들에 의해 실행되는 경우, 상기 하나 이상의 프로세서들로 하여금 제7항 내지 제12항 중 어느 한 항의 방법을 수행하도록 하는, 비일시적 컴퓨터 판독가능 매체.
- 명령어들을 저장하는 비일시적 컴퓨터 판독가능 매체로서, 상기 저장된 명령어들이 하나 이상의 프로세서들에 의해 실행되는 경우, 상기 하나 이상의 프로세서들로 하여금 제18항 내지 제22항 중 어느 한 항의 방법을 수행하도록 하는, 비일시적 컴퓨터 판독가능 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/958,236 | 2010-12-01 | ||
US12/958,236 US9378007B2 (en) | 2010-12-01 | 2010-12-01 | Pre-heated software installation |
PCT/US2011/061908 WO2012074848A1 (en) | 2010-12-01 | 2011-11-22 | Pre-heated software installation |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157034347A Division KR101723763B1 (ko) | 2010-12-01 | 2011-11-22 | 프리-히팅된 소프트웨어 설치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130085052A KR20130085052A (ko) | 2013-07-26 |
KR101575695B1 true KR101575695B1 (ko) | 2015-12-08 |
Family
ID=45418769
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157034347A KR101723763B1 (ko) | 2010-12-01 | 2011-11-22 | 프리-히팅된 소프트웨어 설치 |
KR1020137014148A KR101575695B1 (ko) | 2010-12-01 | 2011-11-22 | 프리-히팅된 소프트웨어 설치 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157034347A KR101723763B1 (ko) | 2010-12-01 | 2011-11-22 | 프리-히팅된 소프트웨어 설치 |
Country Status (9)
Country | Link |
---|---|
US (2) | US9378007B2 (ko) |
EP (1) | EP2646907B1 (ko) |
JP (1) | JP5796755B2 (ko) |
KR (2) | KR101723763B1 (ko) |
CN (2) | CN106201613B (ko) |
AU (1) | AU2011336953B2 (ko) |
BR (1) | BR112013013286A2 (ko) |
MX (1) | MX336862B (ko) |
WO (1) | WO2012074848A1 (ko) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8505003B2 (en) * | 2010-04-28 | 2013-08-06 | Novell, Inc. | System and method for upgrading kernels in cloud computing environments |
US20130055234A1 (en) * | 2011-08-30 | 2013-02-28 | Verizon Patent And Licensing Inc. | Media manager upgrading |
US8826264B1 (en) * | 2012-06-28 | 2014-09-02 | Emc Corporation | Non-disruptive upgrade of applications |
US8855605B2 (en) | 2012-09-25 | 2014-10-07 | Dropbox Inc. | Associating a particular account configuration during the out of box experience for a mobile device |
US9672023B2 (en) * | 2013-03-15 | 2017-06-06 | Apple Inc. | Providing a unified update center for security software updates and application software updates |
US9727326B2 (en) | 2013-03-15 | 2017-08-08 | Apple Inc. | Providing customized notifications for security software updates |
EP2827275A1 (en) * | 2013-07-16 | 2015-01-21 | Gemalto SA | Method for transferring user data between two instances of an application |
JP2015103105A (ja) | 2013-11-26 | 2015-06-04 | 株式会社リコー | 通信装置、通信システム、及び通信プログラム |
JP2015103106A (ja) * | 2013-11-26 | 2015-06-04 | 株式会社リコー | 通信装置、及び通信プログラム |
CN104092555B (zh) * | 2013-12-04 | 2017-09-12 | 腾讯数码(天津)有限公司 | 一种更新参数值的方法、装置和系统 |
KR101651854B1 (ko) * | 2013-12-26 | 2016-08-30 | 주식회사 엘지유플러스 | 푸시 메시지를 이용한 소프트웨어 업그레이드 방법 및 장치 |
CN104932916A (zh) * | 2015-05-18 | 2015-09-23 | 杭州魔品科技有限公司 | 苹果应用快速安装方法 |
CN106557379B (zh) * | 2015-09-30 | 2021-05-18 | 北京奇虎科技有限公司 | 一种静默安装包的生成方法和装置 |
US10083025B2 (en) * | 2015-11-20 | 2018-09-25 | Google Llc | Dynamic update of an application in compilation and deployment with warm-swapping |
US10209976B2 (en) | 2015-12-30 | 2019-02-19 | Dropbox, Inc. | Automated application installation |
WO2017139956A1 (zh) * | 2016-02-18 | 2017-08-24 | 吴伟东 | 手机软件更新方法及系统 |
US10362013B2 (en) | 2016-05-27 | 2019-07-23 | Dropbox, Inc. | Out of box experience application API integration |
US10613849B2 (en) * | 2016-09-23 | 2020-04-07 | Visa International Service Association | Update migration system and method |
CN108733391A (zh) * | 2017-04-18 | 2018-11-02 | 北京京东尚科信息技术有限公司 | 一种资源动态配置的方法和装置 |
US11379414B2 (en) * | 2017-07-11 | 2022-07-05 | Okera, Inc. | Generation of data configurations for a multiple application service and multiple storage service environment |
US10437580B2 (en) | 2017-09-11 | 2019-10-08 | Apple Inc. | Software updating methods and systems |
CN109413186B (zh) * | 2018-10-31 | 2021-07-30 | Oppo广东移动通信有限公司 | 应用程序更新方法、终端、服务器及系统 |
EP3915912A1 (en) * | 2020-05-29 | 2021-12-01 | KONE Corporation | A people conveyor system and a method for updating software of a people conveyor component in a people conveyor system |
CN112052022A (zh) * | 2020-09-02 | 2020-12-08 | 深圳创维-Rgb电子有限公司 | 智能电视系统更新方法、装置、智能电视和可读存储介质 |
AU2022427252A1 (en) * | 2021-12-31 | 2024-05-23 | Lg Electronics Inc. | Method for upgrading home appliance, and device for implementing same |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060130045A1 (en) | 2004-11-19 | 2006-06-15 | Jonathan Wesley | Systems and methods for dynamically updating computer systems |
US20060184926A1 (en) | 2002-07-17 | 2006-08-17 | Yan Or | Deployment of applications in a multitier compute infrastructure |
JP2007148656A (ja) * | 2005-11-25 | 2007-06-14 | Fuji Xerox Co Ltd | 情報処理装置、プログラム更新方法 |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6437621A (en) * | 1987-07-20 | 1989-02-08 | Ibm | Updating of program |
US6151643A (en) | 1996-06-07 | 2000-11-21 | Networks Associates, Inc. | Automatic updating of diverse software products on multiple client computer systems by downloading scanning application to client computer and generating software list on client computer |
US6282709B1 (en) | 1997-11-12 | 2001-08-28 | Philips Electronics North America Corporation | Software update manager |
US6167567A (en) | 1998-05-05 | 2000-12-26 | 3Com Corporation | Technique for automatically updating software stored on a client computer in a networked client-server environment |
US6353926B1 (en) | 1998-07-15 | 2002-03-05 | Microsoft Corporation | Software update notification |
US6397385B1 (en) | 1999-07-16 | 2002-05-28 | Excel Switching Corporation | Method and apparatus for in service software upgrade for expandable telecommunications system |
EP1096374A2 (en) * | 1999-11-01 | 2001-05-02 | Citicorp Development Center, Inc. | Method and system for simultancous and unattended installation of software on a self-service financial transaction terminal |
EP1160666A3 (en) | 2000-04-27 | 2005-03-23 | Ncr International Inc. | Switching versions of software in a system background |
US7574481B2 (en) | 2000-12-20 | 2009-08-11 | Microsoft Corporation | Method and system for enabling offline detection of software updates |
US7523142B2 (en) * | 2001-12-17 | 2009-04-21 | Sap Ag | Systems, methods and articles of manufacture for upgrading a database with a shadow system |
US7814476B2 (en) * | 2002-10-31 | 2010-10-12 | Oracle America, Inc. | Systems and methods for updating software |
US7607000B1 (en) | 2003-05-13 | 2009-10-20 | Apple Inc. | Method for booting an operating system |
US8555271B2 (en) * | 2003-10-29 | 2013-10-08 | Qualcomm Incorporated | Method, software and apparatus for application upgrade during execution |
US7574706B2 (en) | 2003-12-15 | 2009-08-11 | Microsoft Corporation | System and method for managing and communicating software updates |
US20060075001A1 (en) | 2004-09-30 | 2006-04-06 | Canning Jeffrey C | System, method and program to distribute program updates |
US7716660B2 (en) * | 2004-12-14 | 2010-05-11 | Microsoft Corporation | Method and system for downloading updates |
US7581029B2 (en) * | 2005-06-20 | 2009-08-25 | Intel Corporation | Updating machines while disconnected from an update source |
CN1892587A (zh) * | 2005-07-08 | 2007-01-10 | 福菱电子股份有限公司 | 一种嵌入式控制器及其更新固件的方法 |
US7970017B2 (en) | 2005-07-13 | 2011-06-28 | At&T Intellectual Property I, L.P. | Peer-to-peer synchronization of data between devices |
US8286159B2 (en) * | 2005-12-22 | 2012-10-09 | Alan Joshua Shapiro | Method and apparatus for gryphing a data storage medium |
US8578332B2 (en) * | 2007-04-30 | 2013-11-05 | Mark Murray | Universal microcode image |
US20080301667A1 (en) | 2007-05-30 | 2008-12-04 | Google Inc. | Dynamically Updating Software Applications on a Device |
CN101222534A (zh) * | 2007-11-28 | 2008-07-16 | 连云港杰瑞深软科技有限公司 | 零售信息终端 |
US20090193409A1 (en) | 2008-01-24 | 2009-07-30 | Microsoft Corporation | Per User Updates |
JP2009217656A (ja) | 2008-03-12 | 2009-09-24 | Hitachi Ltd | 情報機器におけるソフトウェア更新システム |
US8341384B2 (en) | 2008-06-06 | 2012-12-25 | Apple Inc. | Installation of software onto a computer |
US8694550B2 (en) | 2008-06-06 | 2014-04-08 | Apple Inc. | Merging file directories |
US8200634B2 (en) * | 2008-10-08 | 2012-06-12 | Sap Ag | Zero downtime maintenance using a mirror approach |
JP2010191786A (ja) * | 2009-02-19 | 2010-09-02 | Fujitsu Ten Ltd | 車載装置 |
US8484728B2 (en) * | 2009-06-03 | 2013-07-09 | Apple Inc. | Managing securely installed applications |
US8949737B2 (en) * | 2009-10-28 | 2015-02-03 | Red Hat, Inc. | Centralized application package distribution |
US20110265072A1 (en) | 2010-04-27 | 2011-10-27 | Jack Matthew | Dynamic Installation of Files for Running Programs |
US20110289499A1 (en) * | 2010-05-19 | 2011-11-24 | Microsoft Corporation | Techniques to automatically update software applications |
CN101895873B (zh) * | 2010-07-14 | 2015-08-12 | 中兴通讯股份有限公司 | 移动终端的Java应用的更新方法、服务器和移动终端 |
-
2010
- 2010-12-01 US US12/958,236 patent/US9378007B2/en active Active
-
2011
- 2011-11-22 AU AU2011336953A patent/AU2011336953B2/en active Active
- 2011-11-22 CN CN201610541344.2A patent/CN106201613B/zh active Active
- 2011-11-22 MX MX2013005599A patent/MX336862B/es active IP Right Grant
- 2011-11-22 WO PCT/US2011/061908 patent/WO2012074848A1/en active Application Filing
- 2011-11-22 EP EP11802200.3A patent/EP2646907B1/en active Active
- 2011-11-22 KR KR1020157034347A patent/KR101723763B1/ko active IP Right Grant
- 2011-11-22 JP JP2013542058A patent/JP5796755B2/ja active Active
- 2011-11-22 CN CN201180057791.6A patent/CN103229144B/zh active Active
- 2011-11-22 BR BR112013013286A patent/BR112013013286A2/pt not_active Application Discontinuation
- 2011-11-22 KR KR1020137014148A patent/KR101575695B1/ko not_active IP Right Cessation
-
2016
- 2016-06-24 US US15/192,357 patent/US10489146B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060184926A1 (en) | 2002-07-17 | 2006-08-17 | Yan Or | Deployment of applications in a multitier compute infrastructure |
US20060130045A1 (en) | 2004-11-19 | 2006-06-15 | Jonathan Wesley | Systems and methods for dynamically updating computer systems |
JP2007148656A (ja) * | 2005-11-25 | 2007-06-14 | Fuji Xerox Co Ltd | 情報処理装置、プログラム更新方法 |
Also Published As
Publication number | Publication date |
---|---|
US10489146B2 (en) | 2019-11-26 |
AU2011336953B2 (en) | 2015-12-24 |
KR101723763B1 (ko) | 2017-04-05 |
JP5796755B2 (ja) | 2015-10-21 |
BR112013013286A2 (pt) | 2016-09-06 |
CN106201613B (zh) | 2020-04-14 |
US9378007B2 (en) | 2016-06-28 |
MX2013005599A (es) | 2013-06-13 |
KR20130085052A (ko) | 2013-07-26 |
KR20150143871A (ko) | 2015-12-23 |
EP2646907B1 (en) | 2019-11-13 |
EP2646907A1 (en) | 2013-10-09 |
CN103229144B (zh) | 2016-06-01 |
JP2013544416A (ja) | 2013-12-12 |
US20160306621A1 (en) | 2016-10-20 |
MX336862B (es) | 2016-02-04 |
CN103229144A (zh) | 2013-07-31 |
AU2011336953A1 (en) | 2013-05-09 |
WO2012074848A1 (en) | 2012-06-07 |
CN106201613A (zh) | 2016-12-07 |
US20120144382A1 (en) | 2012-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101575695B1 (ko) | 프리-히팅된 소프트웨어 설치 | |
CN104995627B (zh) | 片上系统设备中的密钥撤消 | |
KR101963912B1 (ko) | 라이브러리 운영체제들과의 애플리케이션 호환성을 가능하게 하는 기법 | |
US8489922B2 (en) | Networked recovery system | |
US9851993B2 (en) | Virtual machine template optimization | |
EP2955627B1 (en) | Managing versions of components of a software suite | |
US9405523B2 (en) | Automated build and deploy system | |
US9146748B1 (en) | Systems and methods for injecting drivers into computing systems during restore operations | |
EP3115917B1 (en) | Information processing apparatus, method, and program | |
US20210182047A1 (en) | Installing Patches During Upgrades | |
EP2907064B1 (en) | License information access based on developer profiles | |
US11972245B2 (en) | Proactive prevention of data unavailability and data loss | |
US12118349B2 (en) | Systems and methods of context-mapped container deployment for controlled application updates | |
JP2014002600A (ja) | プログラム、通信装置及びインストール方法 | |
US20210191705A1 (en) | Installing Multiple Patches During Upgrades | |
CN117769703A (zh) | 无停机安全数据库迁移技术 | |
EP2867777A2 (en) | Managing the writing of a dataset to a data storage device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
A107 | Divisional application of patent | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |