KR102052776B1 - 병행가능하고 신뢰성 있는 설치를 위한 설치 엔진 및 패키지 포맷 - Google Patents

병행가능하고 신뢰성 있는 설치를 위한 설치 엔진 및 패키지 포맷 Download PDF

Info

Publication number
KR102052776B1
KR102052776B1 KR1020147019519A KR20147019519A KR102052776B1 KR 102052776 B1 KR102052776 B1 KR 102052776B1 KR 1020147019519 A KR1020147019519 A KR 1020147019519A KR 20147019519 A KR20147019519 A KR 20147019519A KR 102052776 B1 KR102052776 B1 KR 102052776B1
Authority
KR
South Korea
Prior art keywords
version
successor
predecessor
computer
application
Prior art date
Application number
KR1020147019519A
Other languages
English (en)
Other versions
KR20140113685A (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 KR20140113685A publication Critical patent/KR20140113685A/ko
Application granted granted Critical
Publication of KR102052776B1 publication Critical patent/KR102052776B1/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
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • 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
    • 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
    • G06F9/445Program loading or initiating

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)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

일 실시예에서, 애플리케이션 업데이터는 시스템 또는 프로세스의 오류 또는 재부팅을 야기하지 않고 컴퓨터 애플리케이션을 원활하게 업데이트할 수 있다. 프로세서는 컴퓨터 애플리케이션의 선행자 버전을 실행할 수 있다. 프로세서는 컴퓨터 애플리케이션의 후속자 버전을 사용자 계정 레벨에서 설치할 수 있다. 프로세서는 컴퓨터 애플리케이션의 후속자 버전을 실행할 수 있다.

Description

병행가능하고 신뢰성 있는 설치를 위한 설치 엔진 및 패키지 포맷{INSTALLATION ENGINE AND PACKAGE FORMAT FOR PARALLELIZABLE, RELIABLE INSTALLATIONS}
소프트웨어 개발자는 사용자 장치상의 컴퓨터 프로그램을 지속적으로 업그레이드할 수 있다. 사용자 장치는 업그레이드가 가능한지를 알아보기 위해 소프트웨어 개발자에 의해 관리되는 서버에 접촉할 수 있다. 업그레이드가 가능한 경우, 사용자 장치는 소프트웨어의 새로운 섹션들을 다운로드하고, 사용자 장치상에 현재 설치되어 있는 기존의 프로그램에 해당 섹션들을 추가할 수 있다.
본 요약은 이하 발명의 상세한 설명에서 보다 자세히 기술될 개념들 중 선택된 것들을 단순화된 형식으로 소개하기 위해 제공되는 것이다. 본 요약은 청구대상의 주된 사항 또는 핵심 사항을 밝히기 위한 것이 아니며, 청구대상의 범위를 한정하기 위한 것도 아니다.
아래에서 설명되는 실시예는 시스템이나 프로세스의 오류 또는 재부팅을 유발하지 않고 컴퓨터 애플리케이션을 원활하게 업데이트하는 것에 관한 것이다. 프로세서는 컴퓨터 애플리케이션의 선행자 버전(predecessor version)을 실행할 수 있다. 프로세서는 사용자 계정 레벨에서 컴퓨터 애플리케이션의 후속자 버전(successor version)을 설치할 수 있다. 프로세서는 컴퓨터 애플리케이션의 후속자 버전을 실행할 수 있다.
전술한 및 다른 이점과 특징이 얻어질 수 있는 방식을 설명하기 위해, 보다 특정한 설명이 첨부 도면에 예시된 특정 실시예를 참조하여 서술되고 묘사될 것이다. 이들 도면들은 단지 대표적인 실시예를 도시하고, 따라서 그 범위를 제한하는 것으로 간주되지 않으며, 실시예들은 첨부 도면을 사용하여 보다 구체적이고 자세하게 기술 및 설명될 것이다.
도 1은 컴퓨터 네트워크의 일 실시예를 블록도로 도시한다.
도 2는 컴퓨팅 장치의 일 실시예를 블록도로 도시한다.
도 3은 업데이트 서비스의 일 실시예를 데이터 흐름도로 예시한다.
도 4는 컴퓨터 애플리케이션의 업데이트를 위한 일 실시예를 블록도로 예시한다.
도 5는 데이터 저장 레이아웃의 일 실시예를 블록도로 도시한다.
도 6은 컴퓨터 애플리케이션을 업그레이드하기 위한 방법의 일 실시예를 흐름도로 나타낸다.
실시예들이 아래에 자세히 설명된다. 특정 실시예가 설명되어 있지만, 이것은 단지 설명을 목적으로 행해진 것임을 이해해야 한다. 당업자라면, 본 발명의 주제의 사상 및 범위를 벗어나지 않는 다른 컴포넌트 및 구성이 사용될 수 있음을 알 것이다. 실시예들은 컴퓨터 구현 방법, 컴퓨팅 장치의 적어도 하나의 프로세서를 위한 방법을 지시하는 명령어들의 집합을 저장하는 유형의 머신 판독가능 매체, 또는 컴퓨팅 장치를 위한 애플리케이션 업데이터일 수 있다.
컴퓨터 장치는 컴퓨터 장치의 각 사용자에 대해 사용자 계정을 유지할 수 있다. 사용자 계정은 컴퓨터 장치의 다른 사용자에 의한 액세스로부터 특정 데이터 파일을 보호할 수 있다. 애플리케이션 업데이터는 기존의 머신 단위뿐만 아니라 사용자 단위로 컴퓨터 애플리케이션을 업데이트할 수 있다. 사용자 단위는 머신의 다른 사용자 계정들보다는, 하나의 사용자 계정에 대해 컴퓨터 애플리케이션을 업데이트할 수 있다. 사용자 계정은 머신 레벨에서 설치하기 위해 사용자 계정의 사용자 권한을 상승시킬 수 있다.
애플리케이션 업데이터가 실행될 때마다, 애플리케이션 업데이터는 새로운 디렉토리 및 데이터 저장 위치에서 업데이트를 추출할 수 있고, 따라서 머신의 재부팅을 야기하는 임의의 파일 사용 중 문제(any file-in-use problems)를 제거할 수 있다. 또한, 컴퓨터 애플리케이션의 상이한 버전들은 이전에 머신 상에 설치된 컴퓨터 애플리케이션의 다른 버전과의 간섭없이 나란히 설치될 수 있어, 컴퓨터 애플리케이션은 컴퓨터 애플리케이션의 원활한 성능에 문제를 야기하지 않고 조용히 업데이트를 수행할 수 있다. 애플리케이션 업데이터는 현재 버전과의 간섭없이 컴퓨터 애플리케이션의 설치, 재설치 또는 수리의 일부로서 컴퓨터 애플리케이션의 동일한 버전 또는 보다 새로운 버전을 설치할 수 있다. 이용가능한 버전이 구버전이면, 애플리케이션 업데이터는 컴퓨터 애플리케이션의 다운그레이드를 방지하기 위해 널(null) 연산을 실행할 수 있다. 애플리케이션 업데이터는 여러 컴퓨터 애플리케이션을 동시에 설치할 수 있다.
따라서, 일 실시예에서, 애플리케이션 업데이터는 시스템 또는 프로세스의 오류 또는 재부팅을 유발하지 않고 컴퓨터 애플리케이션을 원활하게 업데이트할 수 있다. 프로세서는 컴퓨터 프로그램의 선행자 버전을 실행할 수 있다. 프로세서는 사용자 계정 레벨에서 컴퓨터 애플리케이션의 후속자 버전을 설치할 수 있다. 프로세서는 컴퓨터 애플리케이션의 후속자 버전을 실행할 수 있다.
도 1은 컴퓨터 네트워크(100)의 일 실시예를 블록도로 예시한다. 사용자 장치(110)는 데스크톱 컴퓨터, 랩탑 컴퓨터, 태블릿 컴퓨터, 휴대용 컴퓨터 또는 기타 컴퓨팅 장치일 수 있다. 사용자 장치(110)는 컴퓨터 애플리케이션(112)을 실행할 수 있다. 컴퓨터 애플리케이션(112)은 사용자 장치(110)에 의해 실행되는 임의의 소프트웨어 프로그램 또는 펌웨어 프로그램일 수 있다. 컴퓨터 애플리케이션(112)은 컴퓨터 애플리케이션(112)의 신판(iteration)을 나타내는 버전을 가질 수 있다. 컴퓨터 애플리케이션(112)은 데이터 네트워크 연결(130)을 통해 애플리케이션 서버(120)에 연결되는 업데이터 모듈(114)을 구비할 수 있다. 데이터 네트워크 연결(130)은 로컬 영역 네트워크 연결, 인터넷 연결, 모바일 네트워크 연결, 또는 다른 네트워크 연결일 수 있다. 업데이터 모듈(114)은 컴퓨터 애플리케이션(112)의 새 버전이 이용가능한지를 알아보기 위해 애플리케이션 서버(120)에 질의할 수 있다. 선행자 버전이 사용자 장치에서 현재 실행되는 컴퓨터 애플리케이션(112)의 버전이다. 후속자 버전은 컴퓨터 애플리케이션(112)의 새로운 버전이다. 업데이터 모듈(114)은 선행자 버전을 대체하는 후속자 버전을 다운로드 할 수 있다.
도 2는 애플리케이션 업데이터로서 동작할 수 있는 예시적인 컴퓨팅 장치(200)의 블록도를 도시한다. 컴퓨팅 장치(200)는 애플리케이션 업데이터를 구현하기 위해 하드웨어, 소프트웨어, 펌웨어 및 시스템 온 칩 기술 중 하나 이상을 결합할 수 있다. 컴퓨팅 장치(200)는 버스(210), 프로세서(220), 메모리(230), 판독 전용 메모리(ROM)(240), 저장 장치(250), 입력 장치(260), 출력 장치(270) 및 통신 인터페이스(280)를 포함할 수 있다. 버스(210)는 컴퓨팅 장치(200)의 구성 요소들 사이의 통신을 허용할 수 있다.
프로세서(220)는 명령어들의 집합을 해석하고 실행하는 적어도 하나의 종래의 프로세서 또는 마이크로 프로세서를 포함할 수 있다. 메모리(230)는 프로세서(220)에 의해 실행되는 명령어 및 정보를 저장하는 랜덤 액세스 메모리(RAM) 및 또 다른 유형의 동적 저장 장치일 수 있다. 메모리(230)는 또한 프로세서(220)에 의한 명령어들의 실행 동안 임시 변수나 다른 중간 정보를 저장할 수 있다. ROM(240)는 프로세서(220)를 위한 명령어들 및 정적 정보를 저장하는 종래의 ROM 장치 또는 다른 타입의 정적 저장 장치를 포함할 수 있다. 저장 장치(250)는 예를 들어 자기 또는 광학 기록 매체와 같은 임의의 타입의 유형의 머신 판독가능 매체 및 그에 대응하는 드라이브를 포함할 수 있다. 일시적인 매체 또는 신호와는 대조적으로, 유형의 머신 판독가능 매체는 머신 판독가능 코드 또는 명령어들을 저장하는 물리적 매체이다. 저장 장치(250)는 방법을 구현하는 명령어들의 집합을 저장할 수 있는데, 이 명령어들의 집합은 하나 이상의 프로세서에 의해 실행되는 경우 이 하나 이상의 프로세서가 방법을 수행하도록 한다.
입력 장치(260)는 키보드, 마우스, 음성 인식 장치, 마이크, 헤드셋 등과 같이, 사용자가 컴퓨팅 장치(200)에 정보를 입력할 수 있도록 해주는 하나 이상의 통상적인 메커니즘을 포함할 수 있다. 출력 장치(270)는 디스플레이, 프린터, 하나 이상의 스피커, 헤드셋, 또는 메모리, 또는 자기 또는 광 디스크와 같은 매체 및 그에 대응하는 디스크 드라이브를 비롯하여, 사용자에게 정보를 출력하는 하나 이상의 통상적인 메커니즘을 포함할 수 있다. 통신 인터페이스(280)는 컴퓨팅 장치(200)가 다른 장치 또는 네트워크와 통신할 수 있게 해주는 송수신기 형(transceiver-like) 장치를 포함할 수 있다. 통신 인터페이스(280)는 네트워크 인터페이스 또는 송수신기 인터페이스를 포함할 수 있다. 통신 인터페이스(280)는 무선, 유선 또는 광 인터페이스일 수 있다.
컴퓨팅 장치(200)는 예를 들어, 메모리(230), 자기 디스크 또는 광 디스크와 같은 컴퓨터 판독가능 매체에 포함된 명령어들의 시퀀스를 프로세서(220)가 실행하는 것에 응답하여 기능을 수행할 수 있다. 이러한 명령어들은 저장 장치(250)와 같은 또 다른 컴퓨터 판독가능 매체로부터, 또는 별도의 저장 장치로부터 통신 인터페이스(280)를 통해 메모리(230)로 판독될 수 있다.
도 3은 컴퓨터 애플리케이션(112)에 대한 업데이트 서비스(300)의 일 실시예를 데이터 흐름도로 예시한다. 시작시, 현재 버전(302)의 컴퓨터 애플리케이션(112)은 애플리케이션 서버(120)로부터 임의의 업데이트를 요청하도록 업데이터 모듈(114)에게 지시할 수 있다. 애플리케이션 서버(120)는 업데이터 모듈(114)에 업데이트 패키지를 보낼 수 있다. 업데이트 패키지는 업데이트 매니페스트(304) 및 컴퓨터 애플리케이션(112)의 현재 바이너리(306)를 구비할 수 있다. 업데이트 매니페스트(304)는 설치될 파일의 목록이다. 업데이트 매니페스트(304)는 각 파일에 대한 파일 경로, 파일 크기, 임의의 레지스트리 키 및 임의의 오류 검사 메카니즘을 설명할 수 있다. 업데이트 매니페스트(304)는 확장 가능한 마크업 언어(XML) 포맷일 수 있다. 현재 바이너리(306)는 컴퓨터 애플리케이션(112)에 대한 실행 파일 또는 연관된 파일, 예컨대 디지털 링크 라이브러리이다. 업데이터 모듈(114)은 업데이트 패키지를 사용하여 설치를 위한 인스톨러 모듈(308)을 생성할 수 있다.
도 4는 컴퓨터 애플리케이션에 대한 업데이트(400)의 일 실시예를 블록도로 도시한다. 애플리케이션 서버(120)로부터 전송된 업데이트 패키지(402)는 인스톨러 코드(404), 중립 리소스(406)의 세트, 지역화가능 리소스(408)의 세트 및 페이로드(410)를 가질 수 있다. 인스톨러 코드(404)는 사용자 장치(110)상에 인스톨러 모듈(308)를 인스턴스화한다. 중립 리소스(406)의 세트는 설치 동안 표시될 아이콘, 지역화가능하지 않은 문자열 및 지역화가능하지 않은 이미지와 같은, 설치 동안 사용되는 일반적인 리소스의 세트이다. 지역화가능한 리소스(408)의 세트는 메시지, 프롬프트 및 소리와 같은, 설치시에 사용되는 언어 특정 리소스의 세트이다. 페이로드(410)는 업데이트 매니페스트(304) 및 현재 바이너리(306)일 수 있다.
도 5는 데이터 저장 레이아웃(500)의 일 실시예를 블록도로 나타낸다. 사용자 장치(100)는 다수의 사용자에 대해 여러 사용자 계정을 지원할 수 있다. 사용자 계정은 다른 사용자로부터 암호로 보호될 수 있다. 데이터 저장 장치(250)는 다수의 사용자에 대해 여러 애플리케이션 프로파일을 저장할 수 있다. 제2 사용자가 업데이트를 포기할 수도 있지만 제1 사용자는 컴퓨터 애플리케이션(112)을 업데이트할 수 있다. 관리자(502)는 각 사용자 계정에 대해 컴퓨터 애플리케이션(112)을 업데이트할 수 있다. 기본 사용자 계정(504)은 컴퓨터 애플리케이션의 업데이트를 실행하는 사용자 계정이다. 보조 사용자 계정(506)은 컴퓨터 애플리케이션의 업데이트를 능동적으로 실행하지 않는 사용자 계정이다. 보조 사용자 계정(506)은 활성 상태 또는 휴면 상태일 수 있다.
데이터 저장 장치(250)는 컴퓨터 애플리케이션(112)의 선행자 버전(predecessor version)(508)을 선행자 위치(predecessor location)(510)에 저장할 수 있다. 기본 사용자 계정(504)은 선행자 버전(508)을 참조하는 기본 이름 데이터 저장 위치(primary name data storage location)(514)에 기본 파일 이름(primary file name)(512)을 저장할 수 있다. 파일 이름은 데이터 파일로의 하드 링크(hard link)이다. 기본 파일 이름(512)은 선행자 버전(508)으로의 하드 링크일 수 있다. 선행자 버전(508)은 관리자 계정(502)에 의해 변경되지 않는 한 불변일 수 있다. 기본 사용자 계정(504)은 사용자 계정 레벨에서 컴퓨터 애플리케이션(112)의 사용자의 후속자 버전(516)을 설치할 수 있다. 사용자 계정 레벨 설치는 기본 사용자 계정(504)에 대해 사용자의 후속자 버전(516)을 설치하지만, 보조 사용자 계정(506)에 대해서는 어떠한 업데이트도 하지 않는다. 기본 사용자 계정(504)은 비어있는(clean) 사용자의 후속자 데이터 저장 위치(518)에 사용자의 후속자 버전(516)을 배치할 수 있다. 비어있는 데이터 저장 위치는 현재 이 위치에 컴퓨터 애플리케이션(112)의 버전을 저장하고 있지 않다. 컴퓨터 애플리케이션(112)의 버전이 데이터 저장 위치에 존재하였고, 이후 종래의 방식대로 예를 들어 등록취소(deregistering)를 통해 소거된 경우에도 데이터 저장 위치는 비어있는 것으로 간주될 수 있다. 사용자의 후속자 버전(516)은 컴퓨터 애플리케이션(112)의 완전한 후속자 버전일 수 있다. 완전한 후속자 버전은 선행자 버전과 비교되지 않고 또한 임의의 겹치는 부분을 제거하지 않은 후속자 버전이다. 기본 파일 이름(512)은 사용자의 후속자 버전(516)으로의 하드 링크이도록 덮어쓰기될 수 있다.
보조 사용자 계정(506)은 컴퓨터 애플리케이션(112)의 보조 파일 이름(520)을 보조 이름 데이터 저장 위치(522)에 저장할 수 있다. 보조 파일 이름(520)은 선행자 버전(508)으로의 하드 링크일 수 있다. 보조 파일 이름(520)은 기본 파일 이름(512)이 사용자의 후속자 버전(516)으로의 하드 링크가 되더라도 선행자 버전(508)으로의 하드 링크를 유지할 수 있다.
관리자 계정(502)은 머신 레벨에서 컴퓨터 애플리케이션(112)의 관리자의 후속자 버전(524)으로 선행자 버전(508)을 대체할 수 있다. 관리자 계정(502)은 비어있는 관리자의 후속자 데이터 저장소 위치(524)에 관리자의 후속자 버전(524)을 배치할 수 있다. 운영 체제는 머신 레벨에서 업데이트를 수행하도록 사용자 계정에 대한 사용자 등급을 관리자 권한으로 높일 수 있다. 머신 레벨의 업데이트는 사용자 장치(110) 상의 각 사용자 계정에 후속자 버전을 설치한다. 관리자 계정(502)은 관리자의 후속자 버전(524)으로의 하드 링크이도록 기본 파일 이름(512) 및 보조 파일 이름(520)을 다시 설정할 수 있다.
도 6은 컴퓨터 애플리케이션(112)을 업그레이드하기 위한 방법(600)의 일 실시예를 블록도로 도시한다. 애플리케이션 업데이터는 컴퓨터 애플리케이션(112)의 선행자 버전(508)을 실행할 수 있다(블록 602). 애플리케이션 업데이터는 사용자의 눈에 안 띄게 업데이터 모듈(114)을 실행할 수 있다(블록 604). 애플리케이션 업데이터는 선행자 버전(508)을 무시하는 업데이터 모듈(114)을 사용하여 완전한 후속자 버전(516)을 다운로드할 수 있다(블록 606). 설치가 머신 단위로 이루어지는 경우(블록 608), 애플리케이션 업데이터는 관리자 권한으로 사용자 등급을 상향시킬 수 있다(블록 610). 애플리케이션 업데이터는 머신 레벨에서 컴퓨터 애플리케이션(112)의 완전한 후속자 버전(524)을 설치할 수 있다(블록 612). 설치가 사용자 단위로 이루어지는 경우(블록 608), 애플리케이션 업데이터는 사용자 계정 레벨에서 컴퓨터 애플리케이션의 완전한 후속자 버전(516)을 설치할 수 있다(블록 614). 완전한 후속자 버전(516)의 설치가 이루어지는 동안 애플리케이션 업데이트터는 선행자 버전(508)의 실행을 유지할 수 있다(블록 616). 애플리케이션 업데이터는 비어있는 후속자 데이터 저장 위치(514)에 완전한 후속자 버전(516)을 배치할 수 있다(블록 618). 애플리케이션 업데이터는 컴퓨터 애플리케이션(112)의 선행자 버전(508) 및 완전한 후속자 버전(516)을 동시에 실행할 수 있다(블록 620). 애플리케이션 업데이터는 선행자 버전(508)으로부터 완전한 후속자 버전(516)으로의 전환을 실행할 수 있다(블록 622). 애플리케이션 업데이터는 그러한 전환 동안 컴퓨터 애플리케이션(112)의 사용자 인터페이스의 프리젠테이션을 유지할 수 있다(블록 624). 애플리케이션 업데이터는 언인스톨 작업에 대해 선행자 버전(508)을 스케쥴링할 수 있다(블록 626). 언인스톨 작업이 시스템 재부팅 동안 스케쥴링되어 있는 경우(블록 628), 애플리케이션 업데이터는 시스템 재부팅 동안 선행자 버전(508)을 언인스톨할 수 있다(블록 630). 그렇지 않으면, 애플리케이션 업데이터는 완전한 후속자 버전(516)을 실행하는 동안 선행자 버전(508)을 언인스톨할 수 있다(블록 632).
본 발명은 구조적 특징 및/또는 방법론적 동작에 특정한 언어로 기술되었지만, 첨부한 청구항에 기재된 청구 대상은 전술한 바와 같은 특정 특징 또는 동작들에 반드시 국한될 필요는 없다. 그 보다, 전술한 특정 특징 및 동작들은 청구 대상을 구현하기 위한 예시적인 형식으로 개시되어 있다.
본 발명의 범주 내의 실시예들은 또한 컴퓨터 실행 가능 명령어들 또는 데이터 구조들을 저장하거나 운반하는 비 일시적 컴퓨터 판독 가능 저장 매체를 포함할 수있다. 이러한 비 일시적 컴퓨터 판독 가능 저장 매체는 범용 또는 전용 컴퓨터에 의해 액세스될 수 있는 임의의 이용 가능한 매체일 수 있다. 제한이 아닌 예로서, 이러한 비 일시적 컴퓨터 판독가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장소, 자기 디스크 저장소 또는 다른 자기 저장 장치, 또는 컴퓨터 실행가능 명령어 또는 데이터 구조의 형태로 원하는 프로그램 코드 수단을 운반 또는 저장하는데 사용될 수 있는 임의의 다른 매체를 포함할 수 있다. 상기의 조합은 또한 비 일시적 컴퓨터 판독가능 저장 매체의 범주 내에 포함되어야한다.
실시예들은 또한 태스크가 통신 네트워크를 통해 (유선 링크, 무선 링크, 또는 이들의 조합에 의해) 링크되는 로컬 및 원격 처리 장치에 의해 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다.
컴퓨터 실행가능 명령어는 예를 들어 범용 컴퓨터, 특수 목적 컴퓨터, 또는 특수 목적의 프로세싱 장치가 특정 기능 또는 기능의 그룹을 수행하게 하는 명령어들 및 데이터를 포함한다. 컴퓨터 실행가능 명령어는 또한 독립형 또는 네트워크 환경에서 컴퓨터에 의해 실행되는 프로그램 모듈을 포함한다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 컴퓨터 실행가능 명령어, 연관된 데이터 구조 및 프로그램 모듈은 본 명세서에서 기술된 방법의 단계들을 실행하기 위한 프로그램 코드의 예를 나타낸다. 이러한 실행가능한 명령어 또는 연관된 데이터 구조의 특정 시퀀스는 이러한 단계에서 설명된 기능들을 구현하기 위한 대응하는 동작들의 예를 나타낸다.
이상의 설명은 특정 세부 사항을 포함할 수 있지만, 이들은 어떤 식으로든 청구항을 한정하는 것으로 해석되어서는 안된다. 설명된 실시예의 다른 구성은 본 발명의 범주의 일부이다. 예를 들어, 본 발명의 원리는 각각의 사용자가 개별적으로 이러한 시스템을 배포할 수 있는 각 개별 사용자에게 적용될 수 있다. 이것은 가능한 다수의 애플리케이션 중 어느 것이라도 본 명세서에 기재된 기능을 사용하지 않는 경우에도 각 사용자가 본 발명의 이점을 활용할 수 있도록 해준다. 다수의 전자 장치 각각은 콘텐츠를 다양한 가능한 방식으로 처리할 수 있다. 실시예들은 반드시 모든 최종 사용자에 의해 사용되는 하나의 시스템에서 구현될 필요는 없다. 따라서, 임의의 주어진 특정예보다는, 첨부된 청구 범위 및 그 법적 등가물만이 본 발명을 정의한다.

Claims (20)

  1. 컴퓨터 장치의 기본 사용자 계정에서 컴퓨터 애플리케이션의 선행자 버전(predecessor version)을 실행하는 단계와,
    상기 기본 사용자 계정을 위한, 상기 컴퓨터 애플리케이션의 후속자 버전(successor version)을 설치하는 단계와,
    상기 컴퓨터 장치의 보조 사용자 계정이 상기 선행자 버전을 갖고 있는 동안, 상기 기본 사용자 계정에서 상기 컴퓨터 애플리케이션의 상기 후속자 버전을 실행하는 단계와,
    상기 선행자 버전으로부터 상기 후속자 버전으로의 전환을 실행하는 단계와,
    상기 전환 동안 상기 컴퓨터 애플리케이션의 사용자 인터페이스의 프리젠테이션을 유지하는 단계
    를 포함하는
    머신 구현 방법.
  2. 제1항에 있어서,
    업데이터 모듈을 사용하여 완전한 후속자 버전(complete successor version)을 다운로드하는 단계
    를 더 포함하는
    머신 구현 방법.
  3. 제2항에 있어서,
    상기 업데이터 모듈을 사용자의 눈에 안 띄게 실행하는 단계
    를 더 포함하는
    머신 구현 방법.
  4. 제1항에 있어서,
    상기 후속자 버전을 비어있는(clean) 후속자 데이터 저장 위치에 배치하는 단계
    를 더 포함하는
    머신 구현 방법.
  5. 제1항에 있어서,
    상기 후속자 버전의 설치가 이루어지는 동안 상기 선행자 버전의 실행을 유지하는 단계
    를 더 포함하는
    머신 구현 방법.
  6. 삭제
  7. 삭제
  8. 제1항에 있어서,
    상기 선행자 버전과 상기 후속자 버전을 동시에 실행하는 단계
    를 더 포함하는
    머신 구현 방법.
  9. 제1항에 있어서,
    상기 후속자 버전을 실행하는 동안 상기 선행자 버전을 언인스톨링하는 단계
    를 더 포함하는
    머신 구현 방법.
  10. 방법을 구체화하는 명령어들의 집합이 저장된, 유형의(tangible) 머신 판독가능 매체로서,
    상기 명령어들의 집합은 하나 이상의 프로세서에 의해 실행될 때 상기 하나 이상의 프로세서로 하여금 제1항 내지 제5항, 제8항 또는 제9항 중 어느 한 항에 따른 방법을 수행하게 하는,
    유형의 머신 판독가능 매체.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 애플리케이션 업데이터로서,
    컴퓨터 애플리케이션의 완전한 후속자 버전을 다운로드하는 통신 인터페이스와,
    상기 컴퓨터 애플리케이션의 선행자 버전을 선행자 데이터 저장 위치에 저장하고 상기 완전한 후속자 버전을 비어있는 후속자 데이터 저장 위치에 저장하는 데이터 저장소와,
    기본 사용자 계정에서 상기 선행자 버전을 실행하고, 상기 기본 사용자 계정을 위한 상기 완전한 후속자 버전을 설치하고, 보조 사용자 계정이 상기 선행자 버전을 갖고 있는 동안 상기 기본 사용자 계정에서 상기 컴퓨터 애플리케이션의 상기 완전한 후속자 버전을 실행하고, 상기 선행자 버전으로부터 상기 완전한 후속자 버전으로의 전환을 실행하고, 상기 전환 동안 상기 컴퓨터 애플리케이션의 사용자 인터페이스의 프리젠테이션을 유지하는 프로세서
    를 포함하는
    애플리케이션 업데이터.
  20. 제19항에 있어서,
    상기 프로세서는 상기 완전한 후속자 버전의 설치가 이루어지는 동안 상기 선행자 버전의 실행을 유지하는
    애플리케이션 업데이터.
KR1020147019519A 2012-01-15 2013-01-07 병행가능하고 신뢰성 있는 설치를 위한 설치 엔진 및 패키지 포맷 KR102052776B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/350,810 2012-01-15
US13/350,810 US8893116B2 (en) 2012-01-15 2012-01-15 Installation engine and package format for parallelizable, reliable installations
PCT/US2013/020519 WO2013106276A1 (en) 2012-01-15 2013-01-07 Installation engine and package format for parallelizable, reliable installations

Publications (2)

Publication Number Publication Date
KR20140113685A KR20140113685A (ko) 2014-09-24
KR102052776B1 true KR102052776B1 (ko) 2019-12-05

Family

ID=48780903

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147019519A KR102052776B1 (ko) 2012-01-15 2013-01-07 병행가능하고 신뢰성 있는 설치를 위한 설치 엔진 및 패키지 포맷

Country Status (11)

Country Link
US (2) US8893116B2 (ko)
EP (1) EP2805233B1 (ko)
JP (1) JP6198229B2 (ko)
KR (1) KR102052776B1 (ko)
CN (1) CN104040495A (ko)
AU (1) AU2013208296B2 (ko)
BR (1) BR112014017283B1 (ko)
CA (1) CA2860657C (ko)
MX (1) MX337871B (ko)
RU (1) RU2635891C2 (ko)
WO (1) WO2013106276A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024010177A1 (ko) * 2022-07-04 2024-01-11 삼성전자 주식회사 보안 회로의 애플릿을 갱신하기 위한 전자 장치 및 그의 동작 방법

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2508599A (en) * 2012-12-04 2014-06-11 Ibm Software version management when downgrading software
US9639342B2 (en) * 2013-05-01 2017-05-02 Starkey Laboratories, Inc. Unobtrusive firmware updates for hearing assistance devices
CN103442077A (zh) * 2013-09-04 2013-12-11 珠海金山网络游戏科技有限公司 一种软件客户端通过网络进行更新的方法及系统
CN108733517A (zh) * 2018-06-05 2018-11-02 深圳忆联信息系统有限公司 Ssd固件升级保护方法及装置
CN109933465B (zh) * 2019-03-12 2021-12-10 北京同城必应科技有限公司 异常处理方法、装置、服务器和存储介质
CN111769966B (zh) * 2020-05-08 2023-06-23 厦门亿联网络技术股份有限公司 一种克隆升级方法、系统和应用

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5764992A (en) 1995-06-06 1998-06-09 Apple Computer, Inc. Method and apparatus for automatic software replacement
US20080177994A1 (en) 2003-01-12 2008-07-24 Yaron Mayer System and method for improving the efficiency, comfort, and/or reliability in Operating Systems, such as for example Windows

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0954734A (ja) * 1995-08-17 1997-02-25 Fujitsu Ltd ネットワークを活用したソフトウェア流通・保守システムおよび方法
US5835911A (en) * 1994-02-08 1998-11-10 Fujitsu Limited Software distribution and maintenance system and method
US5966715A (en) * 1995-12-29 1999-10-12 Csg Systems, Inc. Application and database security and integrity system and method
US5732275A (en) * 1996-01-11 1998-03-24 Apple Computer, Inc. Method and apparatus for managing and automatically updating software programs
GB9623298D0 (en) 1996-11-08 1997-01-08 Int Computers Ltd Updating mechanism for software
JPH1145179A (ja) * 1997-07-25 1999-02-16 Digital Vision Lab:Kk プログラム管理方法
US6141683A (en) * 1998-01-30 2000-10-31 Lucent Technologies, Inc. Method for remotely and reliably updating of the software on a computer with provision for roll back
US6463352B1 (en) * 1999-01-21 2002-10-08 Amada Cutting Technologies, Inc. System for management of cutting machines
US6385623B1 (en) * 1999-11-12 2002-05-07 Dell Usa, L.P. System and method for ensuring proper execution of scheduled file updates
US7287259B2 (en) * 2000-04-24 2007-10-23 Microsoft Corporation Isolating assembly versions for binding to application programs
US6711557B1 (en) * 2000-08-14 2004-03-23 Adobe Systems Incorporated Client-based background update monitoring
US20040003266A1 (en) 2000-09-22 2004-01-01 Patchlink Corporation Non-invasive automatic offsite patch fingerprinting and updating system and method
US20040133606A1 (en) * 2003-01-02 2004-07-08 Z-Force Communications, Inc. Directory aggregation for files distributed over a plurality of servers in a switched file system
TW518513B (en) * 2001-03-28 2003-01-21 Synq Technology Inc System and method to update an executing application software by modular way
US7100158B2 (en) * 2002-04-30 2006-08-29 Toshiba Tec Kabushiki Kaisha Program management apparatus, program management system, and program management method
US20040010786A1 (en) * 2002-07-11 2004-01-15 Microsoft Corporation System and method for automatically upgrading a software application
US7784044B2 (en) * 2002-12-02 2010-08-24 Microsoft Corporation Patching of in-use functions on a running computer system
US7089548B2 (en) * 2003-01-13 2006-08-08 Taiwan Semiconductor Manufacturing Company, Ltd. Method and system for nondisruptive deployment during upgrading of enterprise systems
US7228541B2 (en) * 2003-01-17 2007-06-05 National Instruments Corporation Creation of application system installer
US7546594B2 (en) * 2003-12-15 2009-06-09 Microsoft Corporation System and method for updating installation components using an installation component delta patch in a networked environment
JP2005301500A (ja) * 2004-04-08 2005-10-27 Fujitsu Ltd 情報処理装置
US7664834B2 (en) * 2004-07-09 2010-02-16 Maxsp Corporation Distributed operating system management
US20060075001A1 (en) * 2004-09-30 2006-04-06 Canning Jeffrey C System, method and program to distribute program updates
JP2006119901A (ja) 2004-10-21 2006-05-11 Toshiba Corp 携帯可能電子装置および携帯可能電子装置のアプリケーション更新方法
US20110197114A1 (en) * 2004-12-08 2011-08-11 John Martin Electronic message response and remediation system and method
US7810089B2 (en) 2004-12-30 2010-10-05 Citrix Systems, Inc. Systems and methods for automatic installation and execution of a client-side acceleration program
US7774195B2 (en) * 2005-03-08 2010-08-10 Microsoft Corporation Method and system for creating, storing, managing and consuming culture specific data
JP2006268752A (ja) * 2005-03-25 2006-10-05 Seiko Epson Corp 複数のバージョンに対応したモジュールの起動
US20060271926A1 (en) * 2005-05-31 2006-11-30 Microsoft Corporation Split download for electronic software downloads
US7516422B2 (en) * 2005-07-21 2009-04-07 International Business Machines Corporation Graphical display of hierarchical hardlinks to files in a file system
SE529676C2 (sv) * 2006-03-02 2007-10-23 Abb Ab En metod för att utvärdera en applikation, ett automationssystem och en styrenhet
US8726267B2 (en) * 2006-03-24 2014-05-13 Red Hat, Inc. Sharing software certification and process metadata
JP4946141B2 (ja) * 2006-04-11 2012-06-06 ブラザー工業株式会社 構成変更プログラム、および情報処理装置
US8769522B2 (en) * 2006-08-21 2014-07-01 Citrix Systems, Inc. Systems and methods of installing an application without rebooting
US20080301660A1 (en) * 2007-05-30 2008-12-04 Google Inc. Maintaining Multiple Versions of a Software Application on a Device
US20090193409A1 (en) * 2008-01-24 2009-07-30 Microsoft Corporation Per User Updates
US20090259999A1 (en) * 2008-04-11 2009-10-15 Oracle International Corporation Method and system for applying a patch during application execution
US20090319740A1 (en) * 2008-06-18 2009-12-24 Fujitsu Limited Virtual computer system, information processing device providing virtual computer system, and program thereof
US8561087B2 (en) * 2008-07-16 2013-10-15 Sandisk Il Ltd. Methods for enabling software in storage-capable devices
US20100058321A1 (en) * 2008-09-04 2010-03-04 Anderson Greg L Approach for deploying software to network devices
JP2010198383A (ja) * 2009-02-25 2010-09-09 Fujitsu Ltd ストレージ装置、ソフトウェア更新方法およびソフトウェア更新プログラム
US20100242037A1 (en) 2009-03-17 2010-09-23 Microsoft Corporation Software Deployment over a Network
US20120011496A1 (en) * 2009-03-30 2012-01-12 Nec Corporation Service providing apparatus, service providing system, method of processing data in service providing apparatus, and computer program
EP2438527B1 (en) * 2009-06-04 2018-05-02 Abbott Diabetes Care, Inc. Method and system for updating a medical device
US20110289499A1 (en) * 2010-05-19 2011-11-24 Microsoft Corporation Techniques to automatically update software applications
CN102299940A (zh) * 2010-06-25 2011-12-28 龚华清 一种不间断网络服务的软件升级方法
US20120137278A1 (en) * 2010-11-30 2012-05-31 International Business Machines Corporation Generating a customized set of tasks for migration of a deployed software solution
US8726103B2 (en) 2010-12-07 2014-05-13 At & T Intellectual Property I, Lp Visual outage management tool
US9733921B1 (en) * 2014-01-23 2017-08-15 NetSuite Inc. System and methods for management of cloud application extensions

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5764992A (en) 1995-06-06 1998-06-09 Apple Computer, Inc. Method and apparatus for automatic software replacement
US20080177994A1 (en) 2003-01-12 2008-07-24 Yaron Mayer System and method for improving the efficiency, comfort, and/or reliability in Operating Systems, such as for example Windows

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024010177A1 (ko) * 2022-07-04 2024-01-11 삼성전자 주식회사 보안 회로의 애플릿을 갱신하기 위한 전자 장치 및 그의 동작 방법

Also Published As

Publication number Publication date
EP2805233B1 (en) 2022-11-16
EP2805233A1 (en) 2014-11-26
WO2013106276A1 (en) 2013-07-18
CN104040495A (zh) 2014-09-10
AU2013208296B2 (en) 2018-03-15
CA2860657C (en) 2020-10-13
BR112014017283A2 (pt) 2017-06-13
BR112014017283A8 (pt) 2017-12-12
MX2014008561A (es) 2014-09-26
US8893116B2 (en) 2014-11-18
AU2013208296A1 (en) 2014-07-31
US20150067668A1 (en) 2015-03-05
RU2014128842A (ru) 2016-02-10
JP6198229B2 (ja) 2017-09-20
US20130185709A1 (en) 2013-07-18
BR112014017283B1 (pt) 2021-08-17
CA2860657A1 (en) 2013-07-18
KR20140113685A (ko) 2014-09-24
RU2635891C2 (ru) 2017-11-16
EP2805233A4 (en) 2015-08-26
JP2015503812A (ja) 2015-02-02
MX337871B (es) 2016-03-22

Similar Documents

Publication Publication Date Title
KR102052776B1 (ko) 병행가능하고 신뢰성 있는 설치를 위한 설치 엔진 및 패키지 포맷
JP5007046B2 (ja) コンポーネントベースのソフトウェア・プロダクトの保守
KR101963912B1 (ko) 라이브러리 운영체제들과의 애플리케이션 호환성을 가능하게 하는 기법
CN102081535B (zh) 基于Android的应用程序升级方法、系统及应用开发平台
US11561784B2 (en) Versioning of pipeline templates for continuous delivery of services on datacenters configured in cloud platforms
US8387032B1 (en) Captive runtime deployment
US10747510B1 (en) Application runtime modification
US9690567B2 (en) Runtime detection of software configurations and upgrades
US11321080B2 (en) Patch package generation method and device
US11392366B1 (en) Optimized compilation of pipelines for continuous delivery of services on datacenters configured in cloud platforms
US20130346958A1 (en) Automatic provisioning of a software platform to a device ecosystem
KR20150022849A (ko) 핸드세이크를 이용한 클라이언트 인터페이스 실행 중의 자동 업데이트 기법
US9286083B2 (en) Satisfying missing dependencies on a running system
CN103677937A (zh) 升级软件和运行软件的方法及装置
CN116783581A (zh) 在云平台中配置的数据中心上部署软件发布
US10514940B2 (en) Virtual application package reconstruction
CN116069366A (zh) 客户端应用程序更新方法及装置、存储介质及电子设备
WO2011157105A2 (zh) 组件扩展方法和装置
CN109960522B (zh) 一种软件升级方法及装置
US20100023955A1 (en) Method and system and apparatus for dynamic software environment
US11900091B2 (en) Extensible upgrade and modification as a service
US11442710B2 (en) Repository dependency management
US20210286637A1 (en) Operating system-agnostic container runtime
CN117201469A (zh) 用于开发部署定制化项目的方法及计算设备

Legal Events

Date Code Title Description
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right