KR20110099310A - 컴퓨터 플랫폼에 프로그램을 설치하기 위한 방법과 장치 및 컴퓨터 판독가능 저장 매체 - Google Patents

컴퓨터 플랫폼에 프로그램을 설치하기 위한 방법과 장치 및 컴퓨터 판독가능 저장 매체 Download PDF

Info

Publication number
KR20110099310A
KR20110099310A KR1020117016134A KR20117016134A KR20110099310A KR 20110099310 A KR20110099310 A KR 20110099310A KR 1020117016134 A KR1020117016134 A KR 1020117016134A KR 20117016134 A KR20117016134 A KR 20117016134A KR 20110099310 A KR20110099310 A KR 20110099310A
Authority
KR
South Korea
Prior art keywords
module
computer program
installer
plug
software
Prior art date
Application number
KR1020117016134A
Other languages
English (en)
Inventor
로만 클레이너
티모시 거버
스티븐 반니스터
Original Assignee
노키아 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 노키아 코포레이션 filed Critical 노키아 코포레이션
Publication of KR20110099310A publication Critical patent/KR20110099310A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/62Uninstallation
    • 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/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • 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)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명의 일 예시적인 실시형태에 따르면, 획득된 컴퓨터 프로그램이 컴퓨터 플랫폼에 설치되도록 하기 위한 설치 인터페이스를 제공하는 소프트웨어 인스톨러 프레임워크 모듈과, 설치될 컴퓨터 프로그램의 하나 이상의 유형 중 각각에 대한 적어도 하나의 인스톨러 플러그인 모듈인 복수의 인스톨러 플러그인 모듈이 제공되는데, 각각의 인스톨러 플러그인 모듈은 사용 시에 그와 관련된 컴퓨터 프로그램의 유형을 컴퓨터 플랫폼으로 및/또는 컴퓨터 플랫폼으로부터 설치 및/또는 설치해제할 수 있도록 구성된다. 사용 시에, 소프트웨어 인스톨러 프레임워크 모듈에서 설치 인터페이스를 통해 특정 컴퓨터 프로그램과 관련한 설치 또는 설치해제 커맨드가 수신되고, 소프트웨어 인스톨러 프레임워크 모듈은 특정 컴퓨터 프로그램의 유형에 따라 복수의 인스톨러 플러그인 모듈 중 하나를 선택하고, 선택된 인스톨러 플러그인 모듈은 그 후 컴퓨터 플랫폼으로 또는 컴퓨터 플랫폼으로부터 특정 컴퓨터 프로그램의 설치 또는 설치해제를 수행한다.

Description

컴퓨터 플랫폼에 프로그램을 설치하기 위한 방법 및 장치{METHOD AND APPARATUS FOR INSTALLING PROGRAMS ON A COMPUTER PLATFORM}
본 발명의 예는 컴퓨터 플랫폼 상에 프로그램을 설치하는 방법 및 장치에 관한 것이고, 더 구체적으로는 프로그램이 설치 프레임워크를 사용하여 설치될 수 있는 그러한 방법 및 장치에 관한 것이다.
일반적으로 컴퓨터 시스템에서, 상이한 유형의 실행코드(executable code)가 시스템 상에 설치될 수 있고, 운영 체제 유형에 따라 실행코드를 위한 설치 프로세스는 실행 코드 자체의 유형에 의존하여 결정된다.
본 발명의 다양한 예가 청구범위에 제시된다.
본 발명의 제 1 태양에 따르면, a) 획득된 컴퓨터 프로그램이 컴퓨터 플랫폼에 설치되도록 하기 위한 설치 인터페이스를 제공하는 소프트웨어 인스톨러 프레임워크 모듈과, b) 설치될 컴퓨터 프로그램의 하나 이상의 유형 중 각각에 대한 적어도 하나의 인스톨러 플러그인 모듈인 복수의 인스톨러 플러그인 모듈- 각각의 상기 인스톨러 플러그인 모듈은 사용시에 그와 관련된 컴퓨터 프로그램의 유형을 컴퓨터 플랫폼으로 및/또는 컴퓨터 플랫폼으로부터 설치 및/또는 설치해제(uninstall)할 수 있도록 구성됨- 을 포함하는 장치가 제공되는데, 사용 시에, 상기 소프트웨어 인스톨러 프레임워크 모듈에서 상기 설치 인터페이스를 통해 특정 컴퓨터 프로그램과 관련한 설치 또는 설치해제 커맨드가 수신되고, 상기 소프트웨어 인스톨러 프레임워크 모듈은 상기 특정 컴퓨터 프로그램의 유형에 따라 상기 복수의 인스톨러 플러그인 모듈 중 하나를 선택하고, 상기 선택된 인스톨러 플러그인 모듈은 그 후 상기 컴퓨터 플랫폼으로 또는 상기 컴퓨터 플랫폼으로부터 상기 특정 컴퓨터 프로그램의 상기 설치 또는 설치해제를 수행한다.
본 발명의 제 2 태양에 따르면, 본 발명의 제 1 태양의 장치와 사용하기 위한 인스톨러 플러그인 모듈을 포함하는 장치로서, 상기 인스톨러 플러그인 모듈은, 사용 시에, 상기 소프트웨어 인스톨러 프레임워크 모듈로부터 설치 또는 설치해제 커맨드를 수신하고, 상기 수신된 커맨드에 따라 특정 유형의 특정 컴퓨터 프로그램을 설치 또는 설치해제 하도록 구성되고, 상기 인스톨러 플러그인 모듈은 하나의 특정 유형의 컴퓨터 프로그램을 설치 또는 설치해제하도록 구성된 장치가 제공된다.
본 발명의 제 3 태양에 따르면, 적어도 하나의 프로세서와, 컴퓨터 프로그램 코드를 포함하는 적어도 하나의 메모리를 포함하는 장치로서, 상기 적어도 하나의 메모리와 상기 컴퓨터 프로그램 코드는, 상기 적어도 하나의 프로세서를 이용하여, 상기 장치로 하여금 적어도, a) 상기 장치에서 제공되는 소프트웨어 인스톨러 프레임워크 모듈에 의해 제공되는 설치 인터페이스에서 특정 컴퓨터 프로그램과 관련한 설치 또는 설치해제 커맨드를 수신하고, b) 상기 특정 컴퓨터 프로그램의 유형에 따라, 설치될 컴퓨터 프로그램의 하나 이상의 유형 중 각각에 대한 적어도 하나의 인스톨러 플러그인 모듈인 복수의 인스톨러 플러그인 모듈 중 하나를 선택하고-각각의 상기 인스톨러 플러그인 모듈은 사용 시에 그와 관련된 컴퓨터 프로그램의 유형을 상기 장치로 및/또는 상기 장치로부터 설치 및/또는 설치해제 할 수 있도록 구성됨-, c) 그 후 상기 선택된 인스톨러 플러그인 모듈이 상기 장치로 또는 상기 장치로부터 상기 특정 컴퓨터 프로그램의 상기 설치 또는 설치해제 실행하는 것을 수행하게 하도록 구성된 장치가 제공된다.
본 발명의 제 4 태양에 따르면, 적어도 하나의 프로세서와, 컴퓨터 프로그램 코드를 포함하는 적어도 하나의 메모리를 포함하는 장치로서, 상기 적어도 하나의 메모리와 상기 컴퓨터 프로그램 코드는, 상기 적어도 하나의 프로세서를 이용하여, 상기 장치로 하여금 적어도, 인스톨러 플러그인 모듈을 동작시키는 것- 상기 인스톨러 플러그인 모듈은, 사용 시, 소프트웨어 인스톨러 프레임워크 모듈로부터 설치 또는 설치해제 커맨드를 수신하고, 상기 수신된 커맨드에 따라, 특정 유형의 특정 컴퓨터 프로그램을 설치 또는 설치해제하도록 구성됨-을 수행하게 하도록 구성되고 상기 인스톨러 플러그인 모듈은 하나의 특정 유형의 컴퓨터 프로그램을 설치 또는 설치해제 하도록 구성된 장치가 제공된다.
본 발명의 제 5 태양에 따르면, a) 컴퓨터 플랫폼에서 제공되는 소프트웨어 인스톨러 프레임워크 모듈에 의해 제공되는 설치 인터페이스에서 특정 컴퓨터 프로그램과 관련한 설치 또는 설치해제 커맨드를 수신하는 단계와, b) 상기 특정 컴퓨터 프로그램의 유형에 따라, 설치될 컴퓨터 프로그램의 하나 이상의 유형 중 각각에 대한 적어도 하나의 인스톨러 플러그인 모듈인 복수의 인스톨러 플러그인 모듈 중 하나를 선택하는 단계-각각의 상기 인스톨러 플러그인 모듈은 사용 시에 그와 관련된 컴퓨터 프로그램의 유형을 상기 컴퓨터 플랫폼으로 및/또는 상기 컴퓨터 플랫폼으로부터 설치 및/또는 설치해제 할 수 있도록 구성됨-와, c) 그 후 상기 선택된 인스톨러 플러그인 모듈이 상기 컴퓨터 플랫폼으로 또는 상기 컴퓨터 플랫폼으로부터 상기 특정 컴퓨터 프로그램의 상기 설치 또는 설치해제 실행하는 단계를 포함하는 방법이 제공된다.
본 발명의 제 6 태양에 따르면, 인스톨러 플러그인 모듈을 동작시키는 단계를 포함하는 방법으로서, 상기 인스톨러 플러그인 모듈은, 사용 시에, 상기 소프트웨어 인스톨러 프레임워크 모듈로부터 설치 또는 설치해제 커맨드를 수신하고, 상기 수신된 커맨드에 따라 특정 유형의 특정 컴퓨터 프로그램을 설치 또는 설치해제 하도록 구성되고, 상기 인스톨러 플러그인 모듈은 하나의 특정 유형의 컴퓨터 프로그램을 설치 또는 설치해제하도록 구성된 방법이 제공된다.
본 발명의 제 7 태양에 따르면, 컴퓨터 프로그램 또는 컴퓨터 프로그램 묶음(suite)으로서, 컴퓨터 플랫폼에 의해 실행되는 때에, 상기 플랫폼이 위 태양 중 어느 하나의 방법을 수행하게 하도록 구성되는, 컴퓨터 프로그램 또는 컴퓨터 프로그램 묶음이 제공된다. 또한, 이러한 컴퓨터 프로그램 또는 컴퓨터 프로그램 묶음(suite) 중 적어도 하나를 저장하는 컴퓨터 판독가능 매체도 제공된다.
본 발명의 예시적인 실시형태의 더 완전한 이해를 위해, 첨부된 도면과 관련하여 아래의 설명을 참조한다.
도 1은 본 발명의 예시적인 실시형태를 위한 컴퓨팅 플랫폼을 형성할 수 있으며 스마트폰의 통상의 하드웨어 구조를 설명하는 블록도이다.
도 2는 본 발명의 제 2 예시적 실시형태의 구성요소의 블로도이다.
도 3은 본 발명의 제 2 예시적인 실시형태에서 수행되는 단계 및 상호 통신을 도시하는 프로세스도이다.
도 4는 도 2의 SCR(Software Component Registry)의 더 자세한 사항을 도시하는 블록도이다.
도 5는 도 2의 SIF(Software Install Framework)의 더 자세한 사항을 도시하는 블록도이다.
도 6은 추가적인 인스톨러 플러그인이 제조 후에 컴퓨터 시스템 상에 설치될 수 있는 방법을 설명하는 프로세스도이다.
도 7은 제 2 예시적인 실시형태에서 사용되는 코드 모듈을 저장하는 컴퓨터 판독 가능 매체를 도시하는 도면이다.
도면과 관련하여 몇몇의 예시적인 실시형태를 설명한다.
많은 현대의 전자 장치가 운영 체제(operating system)를 이용한다. 현대의 운영 체제는, PC, 인터넷 서버, 휴대전화, 음악 플레이어, 라우터, 스위치, 무선 액세스 포인트, 네트워크 스토리지, 게임 콘솔, 디지털 카메라, DVD 플레이어, 재봉틀(sewing machine) 및 망원경과 같이 집적 회로로 구성된 여하한 것에어 찾아볼 수 있다. 일 예에서, 운영 체제는 장치의 리소스 공유를 관리하고, 이들 리소스에 액세스하기 위한 인터페이스를 프로그래머에게 제공하는 소프트웨어이다. 일 예에서, 운영 체제는 시스템 데이터와 사용자 입력을 처리하고, 사용자와 시스템 상의 프로그램에 서비스로서 태스크와 내부 시스템 리소스를 할당 및 관리함으로써 응답한다. 일 예에서, 가장 기본적으로, 운영 체제는 메모리의 제어와 할당, 시스템 요청의 우선순위화(prioritizing), 입력 및 출력 장치의 제어, 네트워크 용이화(facilitating), 파일 관리와 같은 태스크를 수행한다. 일 예에서, 운영 체제는 핵심적으로, 상위의 애플리케이션이 장치의 하드웨어에 액세스할 수 있는 인터페이스이다.
운영 체제를 이용하는 현대 전자 장치의 많은 예는, 그 기본으로 유사한 물리적 하드웨어 구조를 가져, 일부 예에서는 장치 운영 체제 뿐만 아니라 장치의 기능을 결정하는 고수준 애플리케이션 프로그램을 저장하는 적절한 메모리가 제공된 애플리케이션 프로세서를 이용한다. 일부 예에서, 운영 체제와 다른 프로그램은 비휘발성 ROM(Read-Only Memory)에 통상 저장되고, 운영 체제가 먼저 로딩되어 애플리케이션이 처리된 후에 고수준 애플리케이션 프로그램을 실행할 수 있도록 한다. 운영 체제를 이용하는 한가지 매우 흔한 현대 전자 장치는 스마트폰인데, 이에 대한 예시적인 일반 하드웨어 구조가 도 1에 도시된다.
도 1을 참조하면, 예시적인 스마트폰(10)은 전화 기능을 수행하는 하드웨어와 함께, 전화가 스마트폰에 희망되는, 예를 들어, 메시지, 캘린더, 워드 프로세싱 기능 등과 같은 다른 기능 가질 수 있도록 하는 애플리케이션 프로세서 및 대응 지원 하드웨어를 포함한다. 도 1의 예에서, 전화 하드웨어는, 전화 신호의 송신 및 그로부터의 수신을 위해 안테나(126)에 RF 신호를 제공하는 RF 프로세서(102)로 표현된다. 추가적으로 이 예에서 RF 프로세서(102)에 신호를 제공하고 RF 프로세서(102)로부터 신호를 수신하는 베이스밴드 프로세서(104)가 제공된다. 이 예에서, 베이스밴드 프로세서(104)는 공지된 바와 같이 가입자 아이덴티티 모듈(106)과 상호작용하기도 한다. 스마트폰(10)의 전화 서브시스템은 본 설명의 범위를 벗어난다.
이 예에서, 또한 통상으로 제공되는 것은 디스플레이(116)와 키패드(118)이다. 이들은 이 예에서 애플리케이션 프로세서(108)에 의해 제어되는데, 프로세서(108)는 (항상 그런 것은 아니지만) 자주 베이스밴드 프로세서(104) 및 RF 프로세서(102)와 별개의 집적 회로이지만 단일 칩 솔루션이 사용될 수도 있다. 이 예에서, 전력 및 오디오 제어기(120)는 배터리(미도시)로부터 전화 서브시스템, 애플리케이션 프로세서 및 기타 하드웨어에 전력을 공급하도록 제공된다. 추가적으로, 이 예에서 전력 및 오디오 제어기(120)는 마이크로폰(122)으로부터의 입력과 스피커(124)를 통한 오디오 출력도 제어한다.
이 예에서, 애플리케이션 프로세서(108)가 동작하기 위해, 다양한 서로 다른 유형의 메모리가 종종 제공된다. 먼저, 이 예에서 애플리케이션 프로세서(108)에는 데이터 및 프로그램 코드가 의도한대로 기록되고 판독될 수 있는 몇몇 RAM(Random Access Memory)(112)이 제공될 수 있다. 이 예에서, RAM의 어느 위치에 위치한 코드도 RAM으로부터 애플리케이션 프로세서(108)에 의해 실행될 수 있다.
추가적으로 이 예에서, 예를 들어 사용자 애플리케이션 프로그램(통상 장치의 기능을 결정하는 고수준 애플리케이션 프로그램) 뿐만 아니라 사용자 데이터 파일 등과 같은 사용자 데이터를 저장하는데 사용되는 별도의 사용자 메모리(110)가 제공된다.
전술한 바와 같이, 이 예에서 애플리케이션 프로세서(108)가 동작하기 위해, 스마트폰 시스템(10)이 먼저 스위치 온되자마자 시작되어야 하는 운영 체제가 필요하다. 이 예에서, 운영 체제 코드는 ROM에 저장되고, 이 예에서 ROM은 NAND 플래시 ROM(114)이다. 이 예에서, ROM은 장치(10)가 동작하기 위해 필요한 운영 체제 요소를 저장할 것이지만, 예를 들어, 애플리케이션 프로그앰 등과, 특히, 스마트폰의 경우 통신 애플리케이션 등과 같은 장치에 강제적인 애플리케이션 프로그램과 같은 다른 소프트웨어 프로그램도 저장될 수 있다. 이 예에서, 이들은 통상 전화가 최초에 판매될 때 장치 제조사에 의해 스마트폰에 번들된 애플리케이션일 것이다. 또한, 사용자에 의해 스마트폰에 추가된 애플리케이션은 보통 예를 들어 사용자 메모리(110)에 저장될 것이다.
전술한 바와 같이, 스마트폰(10)을 포함하는 예시적인 컴퓨터 시스템에서, 시스템 상에 상이한 유형의 실행 코드가 설치될 수 있고, 역사적으로 운영 체제 유형에 따라 실행 코드에 대한 설치 프로세서는 실행 코드 자체의 유형에 의존하여 결정된다. 예를 들어, 이러한 소프트웨어는, 소프트웨어의 요구사항 및 목적한 전달 방법(delivery method)에 따라 다양한 방법 및 프로그램 언어를 이용하여 개발될 수 있다. 반면, 운영 체제의 사용자는 일반적으로 상기 소프트웨어의 개발 방법에 대해서는 관심이 없고, 그 시스템 상에서 소프트웨어 구성요소를 균일한 방식으로 리스트, 실행 및 관리하는 기능에 가치를 둔다.
소프트웨어는 그 개발 및 전달 방법(예를 들어, 자바 미들렛(Java MDIlets), 자바스크립트 위젯(JavaScript Widgets), 엠에스 윈도우 네이티브(MS Windows native), 심비안 OS 네티티브(Symbian OS native) 는 서로 다른 개발 및 전달 방법을 갖는다)에 따라 현저히 다르기 때문에, 운영 체제가 애플리케이션의 다양성을 유지하면서 통일적인 보기(view)를 제공하는 것은 어려운 일이다. 또한, 시스템의 보안을 유지하는 것, 예를 들어, 낮은 신뢰 수준을 갖는 자바스크립트 위젯을 높은 신뢰 수준을 갖는 네이티브 애플리케이션의 보안 모델을 방해하지 않고 설치할 수 있게 하는 것도 어렵다.
예를 들어, 마이크로소프트 윈도우즈 모바일(Microsoft Windows Mobile device) 장치에서, 네이티브 애플리케이션(즉, 윈도우즈 모바일 플랫폼을 위해 특별히 개발된 애플리케이션)의 설치는 네이티브 인스톨러 모듈을 이용하여 수행된다. 자바 미들렛과 같은 비-네이티브 코드(즉, 플랫폼을 위해 특별하게 개발되지 않았고 다른 플랫폼들에 걸쳐 일반적인 애플리케이션)는 별도의 설치 관리자 엔티티를 사용한다. 또한, 이러한 실행 코드는 일반적으로 중앙 레지스트리(registry)에 레지스터되지 않아 장치가 사용자가 모든 애플리케이션과 장치에 설치된 다른 실행 코드를 볼 수 있도록 하는 단일 인터페이스를 사용자에게 제공하는 것이 불가능하다. 윈도우 모바일 솔루션은 각각의 소프트웨어 유형에 대해 몇몇의 애플리케이션과 장치 관리자를 개발할 것으로 요구한다. 이는 사용자의 편의에 악영향을 주고(사용자가 동일한 태스크를 달성하기 위해 다수의 애플리케이션을 사용하여야 하므로), 관리된 실행 환경 및 인스톨러(예를 들어, 쇼크웨이브 플래시, 게임 엔진 등)를 제공하는 제3자에 대한 매력에 악영향을 미친다.
OS를 이용하는 장치로의 공통 설치 경로를 제공하는 한 운영 체제는 리눅스(Linux)이고, 특히 RPM(Red Hat Package Manager)를 이용한다. RPM은 사용자가 리눅스 장치에 프로그램을 설치하는 단일한 방안을 제공하고, 설치된 프로그램의 메타 정보 전부를 포함하는 데이터베이스와 인덱싱의 목적으로 사용되는 다수의 데이터베이스도 제공한다. 데이터베이스는 (RPM을 사용하는) 사용자가 패키지를 설치하는 때에 변경 또는 생성되는 모든 파일을 추적하는데 사용되고, 그에 따라, 사용자가 (RPM을 통해) 이후에 변경을 되돌리고 배키지를 삭제할 수 있게 한다.
RPM 데이터베이스를 제공할 뿐만 아니라, RPM은 코드 유형과 상관없이 리눅스 장치에 실행 코드를 분배하기 위한 분배 패키지 형식도 제공한다. 그러므로, 여하한 유형의 실행 코드도 RPM 형식을 이용하여 패키지되고 리눅스 장치에 설치될 수 있다. RPM 데이터베이스는 어떤 프로그램이 설치되었는지에 대한 기록을 제공하고, 필요한 경우 쉽게 설치해제(uninstallation)을 가능하게 한다.
그러나, RPM이 장치에 프로그램을 설치하는 단일한 방법을 제고하지만, 이 단일성은 모든 코드를 동일하게, 특히 설치되고 있는 소프트웨어의 보안 요구사항과 관련하여 동일하게 취급한다는 것을 의미한다. 예를 들어, 네이티브 소프트웨어, 자바 미들렛 또는 게임 모듈은 설치 시간에 모두 서로 다른 보안 체크 및 레지스트레이션을 필요로 할 수 있지만, 리눅스 솔루션은 그 스크립팅 언어에 의해 제한되는 동작만을 제공한다. 예를 들어, 강도높은 데스트와 개발을 겪은 네이티브 애플리케이션은 그렇게 높은 수준으로 검증되지 않은 일반 코드에 비해 시스템의 기능과 하드웨어에 더 많은 액세스를 가지는 것이 가능할 수 있다. 또한, 개발 시간이 감소되어 강도 높은 테스트와 보안 검증이 가능하지 않았던 네이티브 코드, 예를 들어, 게임 코드 등은 강도 높게 테스트된 네이티브 코드와 동일하게 취급되어서는 안된다. 그러나, 공통 설치 경로를 제공함으로써, RPM은 통상 이러한 보안 요구사항을 무시한다.
본 발명의 제 1 예시적인 실시형태를 설명한다.
더 구체적으로, 제 1 예시적인 실시형태는, 예를 들어, 애플리케이션 또는 자바스크립트 위젯, 자바 미들렛 등과 같은 다른 실행 코드와 같은 상이한 유형의 컴퓨터 프로그램의 설치를 위한 구성을 제공한다. 제 1 예시적인 실시형태에서, 컴퓨터 프로그램이 설치되거나 플랫폼으로부터 설치해제되도록 하기 위해 사용자 및/또는 다른 애플리케이션이 인터페이스할 수 있는 단일의 공통 설치 인터페이스를 제공하는 소프트웨어 인스톨러 프레임워크 모듈이 제공된다. 제 1 예시적인 실시형태에서, 그러한 단일 공통 인터페이스를 제공함으로써 플랫폼으로의 단일의 설치 경로가 제공된다.
또한, 제 1 예시적인 실시형태에서, 높은 수준으로 테스트된 네이티브 코드인던 테스트되지 않은 애호가 코드(hobbyist code)이던 모든 실행 코드 아이템을 동일하게 취급하는 것으로부터 오는 보안 문제를 방지하기 위해, 본 발명의 제 1 예시적인 실시형태에서, 실제 설치 기능은 복수의 플러그인 인스톨러 모듈에 의해 제공되며, 이는 예를 들어 설치될 수 있는 컴퓨터 프로그램의 각 유형에 대한 적어도 하나일 수 있다. 예를 들어, 각각의 인스톨러에는 설치하고 있는 코드의 유형과 관련하여 적절한 보안 허가가 제공된다. 예를 들어, 높은 수준으로 테스트되었고 높은 신뢰도를 갖는 네이티브 코드에 대한 인스톨러는 액세스할 수 있는 하드웨어와 파일에 있어 더 많은 보안 허가를 가질 수 있다. 역으로, 예를 들어, 낮은 신뢰도를 갖는 게임 파일 유형에 대한 인스톨러는 제한된 보안 허가를 가지고, 예를 들어, 소프트웨어를 특정 디렉토리에 설치하거나 및/또는 특정 게임 서버에 접속하거나 및/또는 컴퓨팅 플랫폼 상에서 특정 하드웨어 또는 소프트웨어 리소스를 액세스하도록만 허가될 수 있다. 제 1 예시적인 실시형태에서, 설치 책임을 파일 유형 따라 다른 인스톨러 플러그인으로 나눔으로써, 컴퓨팅 플랫폼의 보안 및 신뢰도가 보호될 수 있다.
제 1 예시적인 실시형태에서, 컴퓨터 플랫폼에 상이한 유형의 컴퓨터 프로그램들을 설치하기 위한 시스템이 제공된다. 더 구체적으로, 제 1 예시적인 실시형태의 시스템은 획득된 컴퓨터 플그램이 설치되도록 하기 위한 설치 인터페이스를 제공하는 소프트웨어 인스톨러 프로그램 모듈을 포함한다. 시스템은 또한 복수의 인스톨러 플러그인 모듈을 포함하는데, 이는, 예를 들어, 설치될 컴퓨터 프로그램의 각 유형에 대한 적어도 하나의 인스톨러 플러그인 모듈이다. 제 1 예시적 실시형태에서, 각 인스톨러 플러그인 모듈은 사용시에 관련 컴퓨터 프로그램의 유형을 설치 및/또는 설치해제할 수 있도록 배열된다. 설치 또는 설치해제는 적절하게 컴퓨터 프로그램으로 및/또는 컴퓨터프로그램으로부터 이루어진다.
설치 또는 설치해제가 이루어지기 위해, 제 1 예시적인 실시형태에서 구체적인 컴퓨터 프로그램과 관련한 설치 또는 설치 해제 커맨드가 설치 인터페이스를 통해 소프트웨어 인스톨러 프레임워크 모듈에서 수신되고, 그 후 소프트웨어 인스톨러 프레임워크 모듈은 설치 또는 설치 해제를 수행하는 복수의 인스톨러 플러그인 모듈 중 하나를 선택한다. 제 1 예시적인 실시형태에서, 플러그인 모듈의 선택은 구체적인 컴퓨터 프로그램의 유형에 따라, 예를 들어 프로그램의 MIME(Multipurpose Internet Mail Extensions) 유형에 기초하여 이루어진다. 일단 선택되면, 예시적인 실시형태에서, 선택된 인스톨러 플러그인 모듈은 구체적인 컴퓨터 프로그램의 컴퓨터 플랫폼으로의 또는 컴퓨터 플랫폼으로부터의 설치 또는 설치 해제를 수행한다. 그러한 구성으로, 제 1 예시적인 실시형태에서는 컴퓨팅 플랫폼으로의 단일의 설치 경로가 제공되는 한편 플랫폼의 보안 및 신뢰도가 유지된다.
제 1 예시적인 실시형태에서, 각각의 소프트웨어 유형에 대해 단일의 플러그인이 제공된다. 다른 예에서, 다수의 플러그인이 각 소프트웨어 유형에 대해 제공될 수 있다. 그러나, 각 유형에 대해 단일의 플러그인을 제공함으로써, 제 1 예시적인 실시형태에서, 새로운 설치가 수행되어야 할 때 플러그인 선택 프로세스가 단순화되는데, 이는, 그러면 설치될 소프트웨어의 유형을 결정하는 것만이 필요하고 그러면 어떤 플러그인이 사용될지는 즉시 명확하게 되기 때문이다. 이는 특정 소프트웨어 유형에 대해 사용가능한 인스톨러 플러그인의 부분집합으로부터 더 선택을 하여야 하는 것을 방지한다.
제 1 예시적인 실시형태에서, 시스템은 유형과 무관하게 현재 컴퓨팅 플랫폼 상에 설치된 컴퓨터 프로그램의 데이터베이스를 갖는 소프트웨어 요소(component) 레지스트리 모듈을 더 포함한다. 이는, 예를 들어, 플랫폼 상에 설치된 모든 컴퓨터 프로그램이 기록될 수 있는 단일 레지스트리를 제공하고, 그에 따라 사용자 및 다른 프로그램에 의한 그러한 프로그램으로의 더 용이한 액세스를 가능하게 한다.
제 1 예시적인 실시형태에서, 소프트웨어 요소 레지스트리 모듈은 그 데이터베이스에, 컴퓨터 플랫폼 상에 존재하는 인스톨러 플러그인 모듈과 관련한 데이터를 포함하고, 사용 시 소프트웨어 인스톨러 프레임워크 모듈은 소프트웨어 요소 레지스트리 모듈로부터 설치될 또는 설치 해제될 컴퓨터 프로그램 유형에 관련된 복수의 인스톨러 플러그인 모듈 중 하나의 플러그인 ID를 획득한다. 그러므로, 제 1 예시적인 실시형태에서, 인스톨러 플러그인 모듈까지 소프트웨어 요소 레지스트리에 기록되고, 소프트웨어 인스톨러 프레임워크는 레지스트리 내의 설치된 플러그인의 목록을 참고함으로써 사용될 플러그인을 선택한다.
제 1 예시적인 실시형태는 사용시에 사용자에게 컴퓨팅 플랫폼에 설치된 컴퓨터 프로그램을 표시하도록 구성된 애플리케이션 시각화(visualisation) 모듈도 포함한다. 이와 관련하여, 예에서, 애플리케이션 시각화 모듈은 소프트웨어 요소 레지스트리 모듈과 상호작용하여 표시를 위해 설치된 컴퓨터 프로그램에 대한 정보를 획득한다. 이는, 예를 들어, 플랫폼 상에 설치된 모든 컴퓨터 프로그램이 단일 애플리케이션을 이용하여 사용자에게 표시될 수 있도록 한다. 또한, 예에서, 사용자는 디스플레이로부터 실행할 프로그램을 선택할 수도 있고, 그러므로 통합 시각화 및 실행 디스플레이가 제공된다.
제 1 예시적인 실시형태에서, 사용 시에 설치된 컴퓨터 프로그램이 저장되는 컴퓨팅 플랫폼의 파일 시스템 상의 트랜잭션(transaction)을 기록하는 소프트웨어 트랜잭션 서비스 모듈이 더 제공된다. 이는, 예를 들어, 선택된 인스톨러 플러그인 모듈에 의해 구체적인 컴퓨터 프로그램의 설치 프로세스가 기록될 수 있도록 한다. 예시적인 실시형태에서, 설치 프로세스의 기록은 프로세스 동안의 여하한 에러나 전원 방해 발생시에 프로세스의 롤백(rollback)을 가능하게 한다. 또한, 예시적인 실시형태에서, 설치 프로세스의 기록은 인스톨러 플러그인 모듈에 의해 구체적인 컴퓨터 프로그램을 필요한 때에 설치 또는 적어도 부분적으로 설치하는데 사용된다.
제 1 예시적인 실시형태에서, 인스톨러 플러그인 모듈과 관련된 하나 이상의 보안 정책이 제공된다. 제 1 예시적 실시형태에서 보안 정책은 특정 인스톨러 플러그인 모듈에 의해 설치된 컴퓨터 프로그램이 컴퓨팅 플랫폼의 어떤 리소스에 액세스할 수 있는지를 정의하는 데이터를 포함한다. 예를 들어, 게임 프로그램 또는 스크립트 프로그램에 대한 인스톨러는 인스톨러에 의해 설치된 컴퓨터 프로그램이 액세스할 수 있는 컴퓨팅 플랫폼의 적은 리소스를 특정하는 보안 정책을 갖는다. 예를 들어, 보안 정책은 액세스가능하지 않을 수 있는 장치 상의 저장 영역, 예를 들어 특정 드라이브 또는 디렉토리를 정의할 수 있다. 또한, 보안 정책은 액세스가능하지 않을 수 있는 특정 리소스 또는 서버를 정의할 수 있다. 예를 들어, 전화 리소스는, 또는 LAN 포트, 또는 근거리 무선 접속과 같은 다른 네트워킹 리소스는 액세스가능하지 않을 수 있다. 컴퓨팅 플랫폼의 리소스는, 하드웨어이건, 소프트웨어이건, 또는 통신 관련 리소스이던, 보안 정책의 대상이 될 수 있다.
일 예에서, 보안 정책은 긍정적으로 정의되어 특정 플러그인에 의해 설치된 컴퓨터 프로그램이 어떤 리소스를 액세스할 수 있는지를 정의할 수 있다. 다른 예에서, 보안 정책은 부정적으로 정의되어, 특정 플러그인에 의해 설치된 컴퓨터 프로그램이 어떤 리소스를 액세스할 수 없는지를 정의할 수 있다. 일 예에서, 예를 들어, 엄격히 테스트된 네이티브 애플리케이션과 같은 더 신뢰되는 유형의 컴퓨터 프로그램과 관련된 인스톨러 플러그인 모듈은 더 많은 컴퓨팅 플랫폼의 리소스로의 액세스를 허용하는 보안 정책을 가질 것이다. 역으로, 일 예에서, 게임 프로그램 또는 스크립트 프로그램과 같이 덜 신뢰되는 유형의 컴퓨터 프로그램과 관련되는 인스톨러 플러그인 모듈은 더 적은 리소스로의 액세스를 허용하는 보안 정책을 가질 것이다.
그러므로 제 1 예시적인 실시형태에서, 컴퓨터 프로그램에 제공되는 컴퓨터 플랫폼 리소스로의 액세스 수준은 그 컴퓨터 프로그램을 설치하는 인스톨러 플러그인 모듈과 관련된 보안 정책에 의해 정의된다. 이러한 방식으로, 컴퓨팅 플랫폼의 보안이 유지될 수 있다.
도 2내지 6을 참조하여 제 2 예시적 실시형태를 상세히 설명한다. 그러나, 제 2 예시적 실시형태의 상세한 설명을 시작하기 전에, 제 2 예시적 실시형태의 구성요소들과 그 동작 및 상호작용의 간략한 개요가 제공될 것이다.
본 발명의 제 2 예시적인 실시형태는 각각이 특정 기능을 수행하는 일련의 모듈을 제공한다. 예를 들어, 모듈은 실시형태의 운영 환경을 제공하는 컴퓨팅 플랫폼에서 실행된다. 제 2 예시적인 실시형태에서, 컴퓨팅 플랫폼은 전술한 스마트폰(10)이지만, 다른 예시적인 실시형태에서는 랩탑이나 데스크탑 컴퓨터, 비디오 게임 콘솔, MP3 플레이어와 같은 A/V 장치 또는 셋탑 박스와 같은 다른 유형의 연장 장치가 사용될 수 있다. 예를 들어, 애플리케이션이나 다른 실행 코드와 같은 프로그램가 설치될 수 있는 여하한 연산 장치도 예시적인 실시형태의 컴퓨팅 플랫폼으로 사용될 수 있다.
제 2 예시적인 실시형태는 운영 시스템에 걸쳐 공통 소프트웨어 수명주기를 관리하도록 설계된 요소의 프레임워크를 도입한다. 예를 들어, OS 상의 모든 소프트웨어에 공통인 서비스와 속성 세트를 식별함으로써, 예시적인 실시형태는 다양성을 허용하면서 단일한 관리와 사용을 가능하게 한다.
도 2는 예시적인 실시형태의 메인 엔티티와 상호작용을 도시한다. 제 2 예시적인 실시형태를 형성하는 메인 엔티티는 회색 바탕에 굵은 글씨로 표시되고 예시적인 실시형태에 참가하는 다른 OS 요소는 흰색 바탕으로 표시된다.
더욱 구체적으로, 도 2에 도시된 바와 같이, 예시적인 실시형태는, 예를 들어, 인터넷 브라우저(216), 애플리케이션 매니저(218), 장치 매니저(220) 및 파일 유형 검출 모듈(214)와 같은 몇몇 기존의 운영 시스템 엔티티 및 애플리케이션을 이용한다. 다른 기능 중에서도, 인터넷 브라우저(216)는 예를 들어 새로운 소프트웨어 요소의 다운로드 및 설치를 가능하게 한다. 예시적인 실시형태는 또한 브라우저가 코드 변화 없이 무결절 방식으로(seamlessly) 새로운 소프트웨어 요소 유형을 설치할 수 있도록 한다. 예를 들어, 먼저 파일 유형을 검출하고 그 후 파일에 대한 적절한 핸들러(handler)를 식별함으로써, 브라우저는 어떠한 특별한 핸들링 코드를 제공할 필요 없이 설치를 소프트웨어 설치 프레임워크(후술)에 위임할 수 있다.
본 제 2 예시적인 실시형태에서, 파일 유형 검출 모듈(214)은 파일 유형을 수립하기 위한 일반적 메커니즘을 제공한다. 예를 들어, 검출 모듈은, 공지된 바와 같이, 통상 MIME 표준을 이용하여 MIME 파일 유형을 결정한다. 이와 같이, 이 요소 및 인터넷 브라우저와 그의 상호작용은 운영 체제에 공통적이다.
예시적인 실시형태에서 애플리케이션 매니저(218)는 모든 설치된 소프트웨어를 리스트하고, 사용자가 특정 소프트웨어 패키지를 제거할 수 있도록 한다. 예에서, 단일화된 소프트웨어 요소 레지스트리(후술)를 이용하여, 각 요소 유형에 대해 수 개의 애플리케이션 관리자를 갖는 대신에, 단일 애플리케이션 관리자가 OS에 대해 개발될 수 있다. 또한, SIF(Software Install Framework)를 이용함으로써, 예에서 단일의 애플리케이션 관리자가, 설치 해제를 위한 특별한 새 로직을 하지 않고 새로운 소프트웨어 유형을 지원할 수 있다.
예시적인 실시형태에서, 장치 관리자 유틸리티(220)는 원격 커맨드 또는 사전 결정된 스케줄에 의한 소프트웨어의 설치해제 및 설치를 가능하게 한다. 애플리케이션 관리자와 유사하게, 예에서 단일한 장치 관리자가 OS에 존재하여 제한없는 개수의 요소 유형을 지원할 수 있다.
본 예시적인 실시형태의 주 구성요소는 SIF(Software Install Framework)(202)와 관련 플러그인(206)이다. 예시의 방법으로, 도 2는 컴퓨팅 플랫폼에 네이티브인 소프트웨어를 설치하는데 사용되는 네이티브 소프트웨어를 위한 플러그인(206a), 자바 미들렛의 설치 및 설치해제를 다루기 위한 자바 미들렛 인스톨러 플러그인(206b), 자바스크립트 위젯의 설치 및 설치해제를 다루기 위한 자바스크립트 위젯 인스톨러 플러그인(206c)의 3개의 플러그인 모듈을 도시한다. 예를 들어, 다른 실행코드 유형을 위한 다른 플러그인도 제공될 수 있고, 제조 후에 장치에 설치될 수 있다. 이후, 상이한 코드 유형들에 대한 추가적인 인스톨러 플러그인을 위한 설치 프로세서를 설명할 것이다.
예시적인 실시형태에서, 소프트웨어 설치 프레임워크 모듈(202)(이하 SIF)은 소프트웨어 설치 관리를 위한 공통의 확장가능한 인터페이스를 제공한다. 이는 특정 동작에 대한 적절한 플러그인을 선택하기 위해 소프트웨어 요소 레지스트리(후술)을 이용한다. 플러그인은 별개의 애플리케이션으로서 동작하고, 설치 과정 동안 그 자신과 사용자와의 상호작용을 구현한다. 일 예에서, 상이한 사용자 상호작용을 갖는 수 개의 플러그인이 동일한 소프트웨어 유형(예를 들어, 사일런트 및 GUI 네이티브 인스톨러)에 대해 함께 공존할 수 있다. 그러나, 다른 예에서, 각 소프트웨어 유형에 대해 단일의 플러그인이 제공되는데, 이는 새로운 설치가 수행되어야 할 때 플러그인 선택 과정을 단순화하기 때문이다. 본 제 2 예시적인 실시형태에서, SIF는 확장가능한 플러그인 프레임워크를 사용하여 새로운 인트톨러 구현의 무결절 및 보안적인 추가를 가능하게 한다. 예시적인 실시형태는 시스템의 수명 동안 새로운 SIF 플러그인의 전달과 제거를 가능하게 한다. 중앙 SIF 모듈은 그 후 모든 소프트웨어에 공통인 속성과 인터페이스에 집중하는 반면, 설치 및 설치해제 동작은 플러그인에 위임한다. 그러므로, 여하한 특정 코드 유형에 대해, 예에서, 그 코드 유형에 대해 요구되는 보통의 설치 및 설치해제 동작은 SIF 모듈이 아니라 플러그인에 의해 수행된다.
또한 제 2 예시적인 실시형태에 의해 제공되는 것은 공통 소프트웨어 관리 서비스 모듈(210)이다. 이는 취소되거나 예상치 못하게 중단된 소프트웨어 관리 동작의 원자적(atomic) 되돌리기를 가능하게 하는 다수의 소프트웨어 트랜잭션 서비스(STS; Software Transaction Services)를 제공한다. 예를 들어, STS는 상이한 인스톨러들에 의해 수행된 동작을 구별하는 한편 공통의 트랜잭션 관리를 가능하게 한다. 예를 들어, 이는 고신뢰 인스톨러(예를 들어 자바 미들렛) 대신에 저신뢰 인스톨러(프리 펄(free Pearl) 인스톨러 등)가 동작을 레지스터하는 것을 방지한다.
예를 들어, 소프트웨어 트랜잭션 서비스는 비-저널(non-journalled) 운영 체제 파일 시스템의 위에서 트랜잭션을 제공한다. 인스톨러(SIF 플러그인)은, 예를 들어, 새로운 트랜잭션을 시작할 수 있고, 취소된 설치/설치해제/업그레이드의 경우에 이들을 원자적으로 롤 백(roll back)할 수 있다. 예시의 방법으로, 트랜잭션에서의 통상의 동작은 "파일 X 추가, 파일 Y 삭제, 임시 파일 Z 추가"를 포함할 수 있다. 이러한 경우에, 트랜잭션의 롤백은, 예를 들어, "파일 X 삭제, 파일 Y 복원, 파일 Z 삭제"일 수 있다. 트랜잭션이 일어나면, 동작은 파일 Z를 삭제하는 것이된다. 통상, 예를 들어, STS의 구현은 기존 소프트웨어 설치(SWI; software install) 서비스에 기반할 수 있고, 여기서 각각의 수정된 드라이브에 대해 저널 파일의 집중화된(centralized) 세트가 통상 유지된다.
예시적인 실시형태의 다른 요소는 소프트웨어 요소 레지스트리(SCR)(204)이다. 예시적인 실시형태에서, 이 요소는 OS 내 모든 설치된 소프트웨어의 상태를 불러오고 관리하기 위한 단일의 지점을 제공한다. 예를 들어, 모든 소프트웨어에 공통인 속성(이름과 공급자(vendor) 등)과 환경에 특유한 속성(자바 보안 도메인 등)을 기록하기 위한 메커니즘을 모두 제공한다. 예시적인 실시형태에서, 이 요소는 고신뢰 소프트웨어 인스톨러(즉, SIF 플러그인)와 덜 신뢰되는 인스톨러의 공존을 가능하게 하는 보안 모델을 제공하여, 소프트웨어 유형들에 걸쳐 상이한 타임-투-마켓(time-to-market) 경로와 능력을 가능하게 한다. 예를 들어, 제3자는 제한된 능력을 갖는 SIF 플러그인으로서 게임 엔진을 개발할 수 있는데, 이는 네이티브 소프트웨어 인스톨러와 같은 엄격한 사정을 요구하지 않게 된다. 전자의 플러그인은, 예를 들어, 그래픽을 표시하고 게임 서버에 접속하는 소프트웨어만을 설치할 수 있는 반면, 후자는 전달할 수 있는 소프트웨어에 제한이 없다. SCR과 그 동작에 대한 추가적인 세부사항은 후술한다.
최종적으로, 제 2 예시적인 실시형태에서 언급할 마지막 요소는 애플리케이션 실행 및 시각화 요소(212)이다. 이 OS 요소는 예를 들어 사용자가 실행할 수 있는 애플리케이션의 목록을 표시(보통 그래픽으로)하고 실행을 위한 메커니즘을 제공한다. 예를 들어 윈도우즈 OS에서, 이 요소(윈도우 탐색기(Windows Explorer)라고도 알려져 있음)는 데스크탑과 시작 메뉴 아이콘을 관리한다. 예를 들어, 리눅스에서, 이는 윈도우 서브시스템(예를 들어, KDE)의 일부이다. 예를 들어 심비안 OS에서, 이는 애플리케이션 아키텍처의 일부이다. 본 예시적인 실시형태에서, 중앙 소프트웨어 레지스트리 SCR(204)가 존재하므로, 예를 들어, 애플리케이션을 장치로 전달하는데 사용된 방법과 무관하게, 또한 네이티브로 실행되는지 관리된 실행 환경(자바 가상 머신 등)을 이용하는지 여부와 무관하게, 실행 애플리케이션을 무결절로 표시 및 실행할 수 있도록 SCR(204)과 상호작용하는 단일의 그러한 요소(212)를 가지는 것이 가능하다.
본 제 2 예시적인 실시형태에서, 위 요소와 대응하는 소프트웨어 코드 모듈이 제공되고, 이는 프로세서에서 실행될 때 요소 기능을 제공한다. 본 예시적인 실시형태에서와 같이, 컴퓨팅 플랫폼이 스마트폰(10)인 때에, 본 예시적인 실시형태에서, 통상 코드 모듈은 도 7에 더 상세히 도시된 바와 같이 NAND 플래시 ROM(114)에 저장된다. 특히, 도 7은, 스마트폰(10)의 NAND 플래시 ROM(114)에 저장된 본 예시적인 실시형태의 상술한 요소에 대응하는 코드 모듈을 도시한다.
제 2 예시적인 실시형태의 SCR의 더 상세한 사항은 SCR에 의해 제공되는 다양한 계층의 기능을 보여주는 도 4로부터 명백할 것이다. 이와 관련하여, SCR은 다음 엔티티들의 수명 주기를 관리하는 것을 담당한다.
● 소프트웨어 요소
●설치 환경 및 지원되는 소프트웨어 유형
●애플리케이션
제 2 예시적인 실시형태에서, 소프트웨어 요소는 애플리케이션 관리자, 장치 관리자 및, 마지막으로 그러나 이에 제한되지 않고 SIF 플러그인, 즉, 인스톨러에 의해 관리되고 표시지만, 설치 환경은 네이티브 소프트웨어 인스톨러(208)에 의해 관리된다. 제 2 예시적인 실시형태의 SCR 설계는 클라이언트의 상이한 카테고리에 대한 무결절 지원에 응답하면서도 보안 수단 (후술) 뿐만 아니라 성능 및 일치(concurrency) 요구도 고려하여야 한다.
제 2 예시적인 실시형태에서, SCR 자체는 명확한 기능 세트를 갖는 계층으로 나누어진다:
SQLLite 계층(2049)은 예를 들어 데이터베이스(DB) 데이터 관리를 제공하고 DB 및 저널 파일이 핸들에 의해 제공될 수 있도록 한다.
데이터 계층(2048)은 SQLLite API 주위의 SCR 랩어라운드(wrapper around)이다. 예를 들어, 이 별개의 계층은 필요한 경우 상이한 DB 구현 또는 API로 스위칭하는 것을 가능하게 한다. 이러한 위험은 SQLLite C API가 여전히 성능 또는 보안 필요에 불충분한 것으로 증명된 경우에 존재한다. 데이터 계층은 또한, SQL 선언과 파라미터 바인딩의 별도 컴필레이션을 수행하여, 예를 들어, SQL 인젝션(injection) 공격으로부터 방어한다.
SQL 변환 계층(2046)은 SCR API 호출을 예를 들어 SQL 쿼리로 변환한다. 제 2 예시적인 실시형태에서, 이는 요소 내 SCR 엔티티와 관련한 인식(awareness)의 대부분을 포함한다. 제 2 예시적인 실시형태에서, 이는 SQL 선언을 스트링으로 전달할 수 있게 하는 데이터 계층으로의 얇은 인터페이스를 갖는다.
보안 계층(2044)은 후술하는 요구되는 보안 수단의 대부분을 구현한다. 이들은, 예를 들어, 수정되고 있는 데이터에 대한 호출 프로세스의 정체(identity)를 체크하는 것을 포함한다.
세션 계층(2042)은 서버 측에서의 보통의 OS 클라이언트-서버 유지를 구현한다.
제 2 예시적인 실시형태에서, SCR이 기능하기 위해, SCR 데이터베이스(2043)가 존재하여야 한다. 예를 들어, 장치 상의 여하한 사전 패키지된 데이터베이스를 가정할 수 없기 때문에, 예시적인 실시형태에서 이는 필요에 따라 생성되어야 한다. 이를 달성하기 위해, 제 2 예시적인 실시형태에서, DB를 찾을 수 없는 경우 DB를 생성하기 위해 SCR 헬퍼 모듈(2045)이 제공되는데, 이러한 경우는, 예를 들어, 처음 설치, 설치해제 또는 설치된 프로그램 폴더 액세스에서 보통의 상황에서 발생하여야 한다.
제 2 예시적인 실시형태에서, SCR의 보안은 매우 중요하다. SCR에 대한 위협은 상이한 공격 벡터들로부터 나타날 수 있다. 이하는 망라된 목록은 아니다.
● SCR API 오용.
o SQL 인젝션.
o API를 그 의도된 목적에 따르지 않고 사용.
● 데이터베이스를 직접 수정. 이 카테고리는, 제 2 예시적인 실시형태에서 DB는 적어도 프라이빗(private) 디렉토리에 의해 보호되는 것으로 가정되므로, ALLFiles 기능을 갖는 프로세스에 적용된다. 콜드-플래시(Cold-flash) 공격도 이 카테고리에 속한다.
o DB 파일에 액세스 및 기록.
o DB에 의해 생성된 임시 저널 파일에 액세스 및 기록.
위의 제 1 공격 벡터는 제 2 예시적인 실시형태에서 SCR에서 폴리싱(policing)을 요구하고, 몇몇의 보안 수단이 관련된다.
제 2 공격 벡터는 수정의 특정 유형과 관계 없이 제 2 예시적인 실시형태에서 적용되며, 전체로서 대응된다- 즉, SCR를 통하지 않은 DB의 수정은 예를 들어 금지되거나 적어도 검출된다.
제 2 예시적인 실시형태에서, SCR에 대한 위협에 대응하기 위해, SCR은 다수의 보안 수단(SM으로 숫자를 매김)을 구현하는데, 이들은 아래에 목록의 형식으로 설명되며 이는 순전히 예시이다. 아래의 수단은 제 2 예시적인 실시형태에서 가장 일반적으로 적용가능한 것들과 관련된다. 다른 수단은 사용되는 구체적인 운영 체제에 따라 다른 예시적인 실시형태에서 요구될 수 있다. 또한, 일부 예시적인 실시형태에서, 모든 수단이 동시에 구현되거나 사용될 필요가 없거나, 사실 전혀 그럴 필요가 없다. 아래의 예에서, TCB라는 약어는 신뢰되는 연산 베이스(Trusted Computing Base)를 지칭하는데, 이는 심비안 OS 용어로서 하드웨어에 액세스를 갖는 운영 체제의 가장 신뢰되는 요소와 관련되고, 단지 예시로서만 사용된다. 심비안 TCB는 다른 예시적인 실시형태에서 사용될 수 있는 다른 운영 체제의 커널과 유사하다.
SMO1: SCR API가 SQL 파라미터를 허용하지 않는다. 또한, SCR은 API로부터 SQL 계층을 추출(abstract)하도록 설계되고, SQL 쿼리를 생성하기 전에 모든 파라미터에 대한 탈출 계층을 추가한다.
SM02: SQLLite 클라이언트 API는 파라미터를 처리하기 전에 SQL 선언을 준비하고 컴파일한다.
SM03: SCR API: n 요소 매칭 설치 환경에 의해서만 요소 및 공통 SCR 속성이 부가, 업데이터 또는 삭제될 수 있다. 클라이언트의 SID를 SCR 내 요소의 소프트웨어 유형에 대한 레지스터된 인스톨러의 SID와 비교함으로써 폴리싱이 이루어진다.
SM04: SCR API: 요소 속성은 요소 매칭 설치 환경 또는 대응하는 실행 환경(관리된 소프트웨어에 대해, 예를 들어 JVM)에 의해 업데이트, 추가 또는 삭제될 수 있다. 장치 상의 다른 실행 코드(executable)는 이런 동작을 수행할 수 없다. 폴리싱은 SM03에서와 유사한 방식으로 이루어진다.
SM05: SCR API: 요소에 대한 파일 레지스트레이션은 SM04에서와 동일한 엔티티에 의해서만 이루어질 수 있다. 동일한 폴리싱 메커니즘이 이루어진다.
SM06: SCR API: 소프트웨어 유형 및 설치 환경은 네이티브 소프트웨어 인스톨러 네이티브 SWI(208)에 의해서만 업데이트, 추가 또는 삭제될 수 있다. 폴리싱은 SWI UID에 기초하여 이루어진다.
SM07: SWI: 클레임된 MIME 유형의 목록은 설치 패키지 내 사전 정의된 리소스 파일에 레지스터된다. 리소스 파일의 타겟 위치는 제한되지 않는다. SIF 플러그인이 전달되고 파일이 없는 경우, SWI는 설치를 거부할 것이다. 파일이 존재하면, SWI는 클레임된 MIME 유형을 파싱하고 그들이 SCR에 레지스터되어 있는지 확인한다. 그렇지 않으면, SWI는 새로운 유형과 환경을 SCR에 레지스터하고, 평소와 같이 설치를 진행할 것이다. 만약 그렇다면, SWI는 MIME 유형을 이미 클레임한 설치 환경의 신뢰 수준과 UID를 체크할 것이다. 설치되고 있는 패키지를 패키지 A라고 하고 MIME 유형에 대한 기존 설치 환경의 세트를 패키지 B1...Bn이라고 하자. 여기서 패키지 Bi는 디폴트 설치 환경(즉, 불투명한, 즉 특별한 옵션이 없음)이다. SWI는 다음의 조건 중 하나가 참인 경우, 그리고 참인 경우에만 설치를 허용할 것이다.
1. A가 패키지 Bi의 올바른 SA/PU이고 Bi와 동일한 불투명한 옵션을 갖는다. (네이티브 소프트웨어로의 SA/PU 업그레이드는 원래 파일을 덮어쓸 수 있고 별도로 설치해제될 수 없다)
2. A는 패키지 Bi의 올바른 SP이고 Bi와 다른 불투명한 옵션을 갖는다. (네이티브 소프트웨어로의 SP 업그레이드는 파일을 덮어쓸 수 없지만 별도로 설치해제될 수 있다)
3. A는 패키지 Bi에 비해 덜 신뢰되지 않고 Bi와 동일한 불투명한 옵션을 갖는다.
4. A는 패키지 Bi보다 덜 신뢰되지 않고 B1...Bn내의 모든 패키지와 상이한 불투명한 옵션을 갖는다. (이는 모든 설치 환경이 적어도 디폴트 환경과 같이 신뢰됨을 의미한다)
설치가 승인되면, SWI는 설치된 환경 및 지원되는 소프트웨 유형의 리스트와 표를 SCR에서 업데이트할 것이다. 위의 규칙에 더해서, SWI는 SIS MIME 유형을 레지스터하는 인스톨러의 추가를 허용하지 않는데, 즉, 네이티브 소프트웨어에 대한 사후 시장(post-market) 인스톨러는 허용되지 않는다.
SM08: SCR API: 인스톨러는, 다른 소프트웨어 유형에 대한 인스톨러가 이미 동일한 파일을 클레임한 경우에는, 그 패키지가 그 파일을 소유한다고 클레임할 수 없다. 동일한 소프트웨어 유형의 다른 인스톨러가 SCR에서 동일한 파일을 클레임할 수 있다. 이러한 체크는 /private과 /sys 아래의 파일에 적용되는데, 이는 퍼블릭 데이터 파일은 OS 수준에서 보호되지 않으며 그 레지스트레이션을 허용하는 것은 저신뢰 인스톨러가 고신뢰 인스톨러로부터의 동작을 차단할 수 있게 하기 때문이다. 업데이트를 DB에 제출하기 전에 이 확인이 SCR에 의해 이루어진다.
SM09 .1 : 또한, SWI 동작에서 서비스의 거부를 방지하는 다른 수단은 SWI 동작에서 다른 요소에 속하는 레지스트레이션을 고려하지 않는 것이다. 이는, 소유(ownership)와 종속 (dependency)를 체크하려 하는 때에 SWI가 네이티브 요소에 레지스터된 파일만을 찾는다는 것을 의미한다. SWI는 이들 파일을 "고아(orphaned)" 즉 소유자가 없는 것으로 취급하고 대응하는 UI 통지를 일으키지 않을 것이다.
SM10: SCR: DB에서의 기록가능한 트랜잭션은 설치/업그레이드/설치해제 프로세스에 걸쳐 동시적인 판독을 위해 DB를 잠그지 않는다. 커밋(commit)하는 동안 DB는 판독을 위해 잠궈진다.
SM11: STS 는 TCB(\sys) 영역에 저널을 유지하는 신뢰되는 연산 베이스(TCB-운영 체제의 핵심으로서 심비안이 아닌 OS에서는 보통 커널이라고 한다) 프로세스이다.
SM12: 각각의 인입 저널 요청에 대해, STS는 데이터 케이지(cage) 규칙을 검증한다. STS는 프로세스가 프라이빗 데이터 케이지(cage)를 위반하는 동작(예를 들어 SID에 대응하지 않는 파일을 삭제)을 레지스터하는 것을 막고, 비-TCB 프로세스에 대해 \sys  디렉토리에서의 동작을 레지스터하는 것을 막는다.
SM13: SIF는 별개의 프로세스에서 구현되고 SIF API는 클라이언트-서버 경계를 넘는다.
SM14: SIF는 SIF 플러그인에게 그 호출자의 보안 컨텍스트를 전달하여, 그들이 SIF의 인보커(invoker)에 기초하여 보안 결정을 내릴 수 있도록 한다.
SM15: DB 파일은 /sys 디렉토리 트리 하의 TCB-보호되는 디렉토리에 유지된다. 작은 TCB 프로세스인 SCR 헬퍼(Helper)는 파일을 기록 가능 모드에서 로딩하고 핸들에 의해 SCR로 전달한다. SCR의 정체는 ProtServ 기능 및 SID(SM16 참조)를 통해 SCR 헬퍼에 의해 수립된다. 이는 ALLFiles 기능(즉, 어떠한 파일도 액세스할 수 있는 기능)을 갖는 파일이 DB 파일을 직접 수정하는 것을 방지한다.
SM16 .1: SQLLite는 클라이언트 모드에서 사용된다. 이는 SCR DB로의 파일 핸들이 프로세스를 빠져나가는 것을 막는다. TCB 프로세스와 SCR 만이 항상 데이터베이스에 액세스할 수 있다.
SM16 .2: SCR 헬퍼는 DB 저널 파일을 국지적으로(locally) 생성하고 이를 핸들에 의해 SCR로 전달하며, SCR은 이를 SQLLite 라이브러리로 전달한다. 이 기능을 가능하게 하고 SQLLite가 그러한 파일을 작업(working) 디렉토리에서 동적으로 생성하지 못하게 하는 특별 래퍼(wrapper)가 SQLLite 라이브러리 주위에서 개발된다. 이는 비-TCB 프로세스 (SCR 외)가 DB 저널 파일을 수정하지 못하게 한다.
SM17: SCR은 명백한(manifest) 데이터를 직접 저장하지 않는다. SCR은 인스톨러가 DB 내 제어기를 위한 경로를 레지스터할 수 있게 할 뿐이다. 이는 악성/잘못 기록된 인스톨러가 다른 소프트웨어 유형에 속하는 제어기로의 액세스를 얻는 경우를 회피하는데, 이는 인스톨러가 명백한 파일로의 경로를 얻더라도 여전히 통상의 데이터 케이징 체크를 거쳐야하기 때문이다.
SM18: SCR은 인스톨러 프로세스가, 파일명이 인스톨러가 업데이트하도록 허락되지 않은 보호된 디렉토리에 대응하는 경우에 소프트웨어 요소에 대한 파일을 레지스터하는 것을 허용하지 않는다.
SM19: SIF는 플러그인 프레임워크로 구현되는데, 여기서 각 SIF 플러그인은 허가된 기능에 따라 제한된다. 예를 들어, 자바 인스톨러는 그 보안 모델을 구현할 수 있지만, 인스톨러 자체가 가지는 기능 및 데이터 케이징 규칙에 제한된다.
SM20: SIF 플러그인을 선택하는 때에, SIF는 파일 유형 MIME 인식에 의존하고 플러그인에 의해 직접 보고된 정보에 의존하지 않는다.
SM21: SCR API는 애플리케이션 관리자가 애플리케이션에 대한 소프트웨어 유형(예를 들어, 미들렛에 대한 특정 아이콘)을 표시할 수 있도록 한다. 이는 사용자가 설치해제될 소프트웨어를 선택하면서 애플리케이션을 구별할 수 있도록 한다.
SM22 - SCR API: 트랜잭션 관리는 레지스터된 인스톨러 또는 실행 환경에 대해서만 허용된다.
SM23 - SWI는 설치 동안 여하한 체크를 하면서 다른 소프트웨어 유형으로부터의 요소는 고려하지 않는다.
SM24: SCR은 ProtServ 기능 및 예약된 SID를 갖는다. 이는 ROM 스터브를 통해서는 업데이트할 수 없다. 이는 두 계층의 보호를 제공한다. SWI는, 패키지가 제조자에 의해 구체적으로 그 목적으로 사인되지 않으면, 여하한 패키지도 SCR을 소멸(eclipse)시키도록 허용하지 않을 것이다. 예약된 SID를 갖는 것은 ACS 퍼블리셔 ID가 없는 제3자가 SCR 업데이트에 사인하는 것을 방지할 것이다. 또한, ProtServ 기능을 갖는 것은 사인되지 않은 패키지가 SCR을 구현하는 것을 방지한다. SCR 클라이언트는 그가 접속하는 서버가 SCR 예약 SID를 가짐을 검증한다. 이는 다른 SID를 갖는 악성 ProtServ 프로세스가 SCR로 위장하는 것을 방지한다.
그러므로, 제 2 예시적인 실시형태에서, SCR은 장치에 설치된 애플리케이션 및 기타 실행 코드와 관련된 정보를 포함하는 보호된 데이터베이스를 제공할 수 있다. 예를 들어, 새로운 코드에 대한 설치 프로세스 동안 SIF 모듈이 실행 코드를 설치 또는 설치해제하는데 어떤 플러그인을 사용하여야 하는지를 결정하는데 SCR이 사용된다. 또한, SCR은 예를 들어 애플리케이션 시각화 및 실행 모듈(212)에 의해 액세스될 수 있어 사용자에게 표시하기 위한 설치된 실행코드의 리스트를 제공하고, 이로부터 사용자가 실행되게 할 실행코드를 선택할 수 있다.
제 2 예시적인 실시형태의 SIF 모듈의 더 상세한 사항은 도 5에 도시되어 있다. 특히, 제 2 예시적인 실시형태의 SIF 모듈(202)은, MIME 유형에 따라 또는 소프트웨어 요소 고유 식별자에 따라 설치 파일 유형 결정을 수행하는 SIF 결정자(2024)를 더 포함한다. 두 번째 경우는 설치해제에 적용된다. 도면은 또한 예시의 방법으로 자바스크립트 인스톨러 플러그인과 네이티브 설치 플러그인을 모두 도시한다. 다른 코드 유형에 대한 다른 플러그인은 도시되지 않았지만 당연히 가능하다. 본 예에서, 네이티브 인스톨러 플러그인(206a)은 네이티브 애플리케이션을 설치하는데 네이티브 소프트웨어 인스톨러(208)에 의존한다. 네이티브 SWI(208)는 예를 들어 OS 내에 이미 존재할 것이다. 통상 다른 플러그인 유형은, 예를 들어, 플러그인이 관련된 코드의 유형을 설치 및 설치 해제하기 위한 그 자신의 인스톨러 기능을 가질 것이다. 플러그인은, 예를 들어 본 실시형태를 위한 플랫폼을 제공하는 연산 장치가 제조될 때 설치되거나, 또는 예를 들어 사용자에 의해 제조 후에 설치될 수 있다.
본 예시적인 실시형태에서, 제조 후 인스톨러 관리 특징은 장치가 제조되고 사용자에게 전달된 후에 새로운 소프트웨어 환경(예를 들어 파이톤(Python) 스크립트 등)을 추가하거나 삭제할 수 있는 능력을 제공한다. 예를 들어, 최근의 제조 후 제품 및 미디어 서비스로의 이동 경향에 비추어보면 이 특징은 유용하다.
더욱 구체적으로, 제 2 예시적인 실시형태에서, 새로운 플러그인에 대해 플러그인 내 인스톨러와 새로운 환경에 대한 여하한 새로운 실행 엔진 양자 모두가 네이티브 API에 기록된다고 가정한다. 제 2 예시적인 실시형태에서, 관련 환경이 삭제되었으면 모든 관련 소프트웨어아 삭제되어야 한다는 요구사항은 없다. 예를 들어, 자바스크립트 엔진 및 인스톨러가 사용자에 의해 삭제된 경우 모든 자바스크립트를 삭제하는 기능은 없다. 도 6은 제 2 예시적인 실시형태에서 새로운 플러그인을 설치함에 있어 발생하는 이벤트의 시퀀스의 시퀀스도를 도시한다.
오직 예시의 방법으로, 도 6의 과정은 SIF 요소 모듈이 이미 실행 중이고 사용자는 모듈에게 예를 들어, 다운로드 된 새로운 플러그인의 설치를 수행할 것을 지시하였다고 가정한다. 그러므로, 제 2 예시적인 실시형태에서, 새로운 플러그임을 설치하라는 사용자 명령은 블록 6.2에서 SIF 모듈에 의해 수신된다. 다음, 블록 6.4에서 SIF 모듈은 설치될 해당 플러그인을 찾기 위해 소프트웨어 요소 레지스트리(204), 즉 다운로드된 플러그인이 저장된 곳에 접속한다. 다음, 상기와 같이 플러그인이 플랫폼에 대한 네이티브 코드에 있으므로, SIF는 설치를 수행하기 위해 네이티브 플러그인(206)을 사용할 것이다. 그러므로, 블록 6.6에서, 네이티브 플러그인이 런칭되고, 블록 6.6에서 설치가 그에 릴레이된다. 본 예시적인 실시형태에서, 네이티브 플러그인은 컴퓨팅 플랫폼의 일부를 형성하는 운영 체제 내의 고유의 네이티브 소프트웨어 인스톨러인 네이티브 소프트웨어 인스톨러(208)에 의존한다. 그러므로, 블록 6.8에서, SIF 네이티브 플러그인은 네이티브 소프트웨어 인스톨러(208)에게 새로운 플러그인의 설치를 시작할 것을, 즉, 파일 시스템 내 적절한 위치에 플러그인 파일이 확실히 복사되도록 하는 설치 로직을 통해 실행을 시작할 것을 명령한다. 블록 6.10에서, 이 프로세스 동안 소프트웨어 인스톨러는 그 자신을 모니터링하여 SIF 플러그인이 정확한 위치에 설치되는 것을 확인한다.
본 예시적인 실시형태에서, 블록 6.12에서 설치 프로세스의 첫 단계 중 하나로서, 네이티브 소프트웨어 인스톨러(208)는 소프트웨어 요소 레지스트리(204)를 이용하여 동일한 MIME 유형에 대한 다른 플러그인이 이미 레지스터되었는지 여부를 체크한다; 이 체크는 블록 6.12에서 수행되고, 그 후 체크 결과는 보안 수단 07(SM07)로 상술한 보안 규칙에서 사용된다. 본 예에서 이들 보안 규칙은 블록 6.14에서 수행되고, 예를 들어 플러그인이 관련된 코드의 MIME 유형에 대한 플러그인이 아직 레지스터되지 않았음을 보장하기 위한 것이다.
제 2 예시적인 실시형태에서, 보안 규칙이 통과되면, 블록 6.16에서 플러그인에 대응하는 새로운 실행 및 설치 환경이 소프트웨어 요소 레지스트리(204)에 레지스터된다. 예를 들어, 예기에는, 플러그인에 관련되고 또한, 새로운 실행 환경에 관련되는 이미 설치된 다른 관련 프로그램이 있다면 이에도 관련되는 SCR 데이터베이스에서 새로운 데이터베이스 엔트리를 생성하는 것이 관여된다. 다음, 필요하다면, SIF모듈은 MIME 유형에 대한 핸들러로 레지스터되고, 요구된다면 이 레지스트레이션은 예를 들어 파일 유형 검출 모듈(214)을 이용하여 수행된다.
설치는 그 후 블록 6.18에서 계속되는데, 제 2 예시적인 실시형태의 소프트웨어 인스톨러(208)는 설치의 파일을 컴퓨팅 플랫폼 파일 시스템의 적당한 위치로 전달하고, 즉, 적당한 디렉토리에 설치 파일을 저장하고, 그 후 블록 6.20에서 파일을 이용하여 설치된 여하한 새로운 소프트웨어 패키지를 소프트웨어 요소 레지스트리에 레지스터한다.
그러므로, 상기 내용으로, 제 2 예시적인 실시형태에서는 새로운 플러그인 및 실행 환경이, 실행 환경을 이용하는 새로운 실행 코드와 함께 설치될 수 있다. 이는, 예를 들어, 자바 또는 플래시의 새로운 버전과 같은 새로운 실행 환경이 컴퓨팅 플랫폼에 제조 후에 설치될 수 있도록 하며, 실행 환경을 이용하여 실행되는 플러그인이 제공될 수 있게 하며, 그 환경을 이용햐여 실행되는 새로운 실행 코드가 본 예시적인 실시형태의 소프트웨어 설치 프레임워크를 이용하여 설치될 수 있도록 한다. 그러므로, 발명의 본 예시적인 실시형태를 이용하는 컴퓨팅 플랫폼은 그 수명 동안 새로운 소프트웨어 및 실행 환경으로 업데이트될 수 있다.
이제까지, 본 예시적인 실시형태의 요소 및 어떻게 그들 요소가 업데이트될 수 있는지를 설명했다. 약술하면, 본 예시적인 실시형태는, 예를 들어 사용자가 컴퓨팅 플랫폼에 새로운 실행 코드를 설치할 수 있도록 하는 기본적인 인터페이스를 제공하는 소프트웨어 설치 프레임워크 모듈(202)을 제공한다. 그러나, 새로운 실행 코드의 실제 설치는 예시적인 실시형태에서 코드 유형에 따라 각각의 플러그인에 의해 수행된다. 예를 들어, 각 플러그인은 실행 코드를 설치 또는 설치해제 하는데 요구되는 기능을 갖고, 각 플러그인은, 예를 들어, 실행 코드의 유형에 따라 상이한 보안 정책을 구현할 수 있다. 이는 실행 코드가, 예를 들어, 코드가 신뢰도 및 보안을 위해 완전히 테스트될 필요 없이 훨씬 더 빨리 개발될 수 있도록 한다. 대신, 예시적인 실시형태에서, 코드 유형에 따라, 그 보안 수준에 따라 컴퓨팅 플랫폼의 부분에 대한 액세스를 갖는 적절한 플러그인이 실행 코드를 설치하는데 사용될 수 있고, 그에 따라 보안 조항이 위반되지 않도록 보장한다.
그러므로, 예를 들어, 본 예시적인 실시형태에서, 컴퓨팅 플랫폼의 모든 부분에 액세스를 갖게 되는 네이티브 소프트웨어 인스톨러는 강한 테스트를 받지 않은 비 네이티브 코드를 설치하는데 사용되지 않는다. 대신, 비 네이티브 코드에 관련되는 플러그인이 사용된다. 이와 관련하여, 상이한 소프트웨어 유형은 상이한 보안 주의 및 품질 보장을 가질 수 있어, 다양한 위험 수준을 만든다. 예를 들어, 시스템 상에서 모든 것을 할 수 있는(omnipotent) 네이티브 소프트웨어는 높게 신뢰되고 강도있게 분석된 인스톨러를 가질 수 있는 반면, 스크립트 인스톨러는 예를 들어 고독한 애호가(lone hobbyist)에 의해 작성되어 그것이 전달하는 스크립트는 훨씬 제한된 기능을 가질 수 있다. 본 예시적인 실시형태의 소프트웨어 설치 프레임워크는 플랫폼의 보안을 존중하면서도 동일한 컴퓨팅 플랫폼 상에 이렇게 다양한 소프트웨어 유형이 평화롭게 공존할 수 있게 한다.
구체적으로, 본 예시적인 실시형태에서, 다양한 소프트웨어 인스톨러에 각각이 연산 플렛폼의 리소스에 대해 갖는 액세스의 수준을 정의하는 보안 정책이 제공된다. 보안 정책은, 예를 들어, 전화 서비스, 네트워크 서비스 또는 오디오 및 비디오 입력 및 출력 장치 및 저장소와 메모리와 같은 하드웨어 리소스에 대한 액세스를 다룰 수 있고, 또는 특정 서버나, 예를 들어 이메일 애플리케이션, 캘린더 애플리이션, 다이어리 애플리케이션 또는 연락처 애플리케이션과 같이 컴퓨팅 플랫폼 상에서 실행되는 애플리케이션과 같은 소프트웨어 리소스로의 액세스를 다룰 수 있다.
컴퓨터 프로그램이 인스톨러에 의해 설치되는 때에, 제 2 예시적인 실시형태에서, 컴퓨팅 플랫폼의 리소스에 액세스할 수 있는 능력에 있어서 설치된 프로그램의 허가 또는 기능은 프로그램을 설치한 인스톨러 모듈로부터 정의 또는 상속(inherit)된다. 이러한 방식으로, 인스톨러 모듈의 보안 허가 및 기능을 제어함으로써, 설치된 컴퓨터 프로그램의 플랫폼 리소스에 액세스할 수 있는 능력도 제어된다.
이제까지 제 2 예시적인 실시형태와 관련하여 각 요소 및 그 기능을 논의했지만, 아직 새로운 애플리케이션 또는 기타 실행 코드의 일부 (piece)를 설치하는데 설치 프레임워크가 어떻게 사용되는지의 예를 설명하지 않았다. 그러나, 제 2 예시적인 실시형태에서 그렇게 하는데 있어서의 소프트웨어 설치 프레임워크에 의해 수행되는 일련의 태스크는 도 3에 도시된다.
일반적인 수준에서, 제 2 예시적인 실시형태의 설치 과정에는 다음이 관여된다. 먼저, 사용자는 통상 예를 들어 새로운 실행 코드를 검출하고 설치되도록 할 수 있는 기존 애플리케이션을 실행하고 있을 것이다. 이는, 예를 들어, 일반적 인터넷 브라우저일 수 있는데, 이는 인터넷으로부터 컴퓨팅 플랫폼에 설치하기 위한 애플리케이션 및 기타 실행 코드를 다운로드할 수 있다.
다음, 제 2 예시적인 실시형태에서, 사용자가 새로운 애플리케이션 또는 기타 실행 코드를 설치하고자 한다고 사용자가 결정하는 때에, 코드의 유형이 결정되어야 하고 그 후에 소프트웨어 설치 프레임워크는 설치될 코드의 유형에 따라 플러그인을 선택한다. 예를 들어, 각 실행 코드 유형에 대해 특정 유형의 코드를 설치 및 설치해제할 수 있는 기능을 포함하는 플러그인이 있다는 것을 기억할 것이다.
플러그인 유형을 검출한 후에, 제 2 예시적인 실시형태에서, 소프트웨어 설치 프레임워크는 플러그인을 불러오고, 플러그인은 실행을 시작하고 설치를 수행한다. 예를 들어, 네이티브 코드의 설치의 경우에, 네이티브 인스톨러 플러그인이 네이티브 소프트웨어 인스톨러(208)를 실행할 수 있다. 그러나, 다른 유형의 실행 코드에 대해, 플러그인 자체가 인스톨러 기능을 포함할 것이다.
제 2 예시적인 실시형태에서, 플러그인을 통한 프로그램의 설치에는 통상 3개의 동작이 관여된다. 먼저, 실행 코드의 실제 파일을 컴퓨팅 플랫폼 파일 시스템의 적절한 부분에 설치하는 것이 관여된다. 이는, 예를 들어, 실행 코드가 실제로 파일 시스템에 물리적으로 설치되고 컴퓨팅 플랫폼에 의해 액세스 가능함을 보장하기 위한 것이다.
두 번째로, 설치를 추적하고 그 롤백과 설치해제를 가능하게 하기 위해, 제 2 예시적인 실시형태에서, 파일 시스템 트랜잭션이 소프트웨어 트랜잭션 서비스 모듈(201)에 의해 모니터링 된다. 이는 설치 동안 파일 시스템 트랜잭션의 로그를 유지하여, 예를 들어, 필요한 때에 설치가 롤백 되거나 설치해제될 수 있도록 한다.
세 번째로, 설치를 반영하기 위해, 제 2 예시적인 실시형태에서, 플러그인은 소프트웨어 요소 레지스트리를 업데이트하고 특히 새로운 데이터베이스 엔트리가 소프트웨어 요소 레지스트리 데이터베이스 내에 생성되어 새로이 설치된 애플리케이션 또는 기타 실행 코드를 반영한다. 이들 3개의 태스크가 수행되어, 제 2 예시적인 실시형태에서, 플러그인은 새로운 애플리케이션 또는 기타 실행 코드를 성공적으로 설치할 것이고, 그 설치는 필요에 따라 설치해제 될 수 있도록 소프트웨어 트랜잭션 서비스 모듈(210)에 의해 저널링되었을 것이다. 또한, 예시적인 실시형태에서, 설치는, 예를 들어 컴퓨팅 플랫폼에 설치된 모든 애플리케이션 및 기타 실행 코드를 볼 수 있도록 소프트웨어 요소 레지스트리에 기록되었을 것이다.
위의 사항을 염두에 두고, 도 3은 새로운 네이티브 애플리케이션을 설치함에 있어 본 예시적인 실시형태의 다양한 요소에 의해 수행되는 일련의 동작을 도시한다. 이와 관련하여, 도 3의 시퀀스는 네이티브 소프트웨어 인스톨러 및 네이티브 소프트웨어 인스톨러(208)에 의존한다. 예를 들어, 네이티브가 아니고 따라서 비 네이티브 플러그인에서 제공되는 설치 기능을 사용하는 다른 유형의 애플리케이션 또는 실행 코드가 설치되어야 한다면, 네이티브 소프트웨어 플러그인(206) 및 네이티브 소프트웨어 인스톨러(208)에 의해 수행되는 동작은 합쳐질 것이다.
도 3을 참조하면, 제 2 예시적인 실시형태에서, 먼저 사용자가 블록 3.2에서 불러온 일반 브라우저(generic browser)(216)를 사용하고 있다고 가정하자. 일반 브라우저를 사용하여, 사용자는, 예를 들어, 다운로드한 새로운 애플리케이션 또는 다른 실행 코드를 설치하고자 한다고 결정한다. 본 예에서, 브라우저(216)는 그 후 블록 3.4에서, 예를 들어 파일 유형 검출 모듈(214)을 이용하여 애플리케이션 또는 기타 실행 코드의 파일 유형을 결정한다. 본 예에서, 파일 유형 검출 모듈(214)은 블록 3.6에서 다운로드된 파일의 MIME 유형을 검출하고, 블록 3.8에서 SIF 모듈(202)을 불러온다. 본 예에서, SIF 모듈은 올바른 플러그인을 부르기 위해 파일 유형을 다시 검출할 필요가 있고, 이는 블록 3.10 에서 수행된다. 그 후, 설치될 파일의 MIME 유형을 결정한 후에, 본 예에서, SIF 모듈(202)은 소프트웨어 요소 레지스트리(204)에 접속하여 파일 MIME 유형에 기초하여 사용될 플러그인 ID를 찾는다. 예에서, SCR(204)은 SIF 모듈에 의해 전달된 MIME 유형에 기초하여 올바른 플러그인 ID를 반환하고, 그러면 SIF 모듈은 올바른 플러그인을 런칭하여 블록 3.14에서 그에게 설치를 위임한다. 도 3에 도시된 본 예에서, 설치되고 있는 것은 네이티브 코드이고, 그러므로 네이티브 소프트웨어 인스톨러 플러그인(206)이 런칭된다. 그러나, 다른 예에서, 비 네이티브 코드가 설치되고 있는 경우, 파일 유형에 관련된 플러그인, 예를 들어 자바스크립트 위젯 인스톨러 등이 설치될 것이다.
도 3에서, 본 예시적 실시형태가 네이티브 소프트웨어에 의존하므로, 네이티브 소프트웨어인스톨러 플러그인(206)이 네이티브 소프트웨어 인스톨러(208)를 호출하여 실제로 설치를 수행한다. 그러나, 다른 파일 유형에 대한 다른 예에서, 그 파일 유형에 대한 인스톨러 플러그인이 인스톨러 동작을 수행할 것이다. 본 예시적인 실시형태에서, 인스톨러 동작은 블록 3.18과 블록 3.20을 포함한다. 특히, 블록 3.18에서, 인스톨러 플러그인은 소프트웨어 트랜잭션 서비스 모듈(210)을 이용하여 파일 시스템 트랜잭션을 시작한다. 즉, 본 예시적인 실시형태에서, 소프트웨어 트랜잭션 서비스 모듈(210)은 플러그인에 의해 소프트웨어의 설치가 일어나는 때에 파일 시스템 트랜잭션의 기록을 시작할 것을 지시받는다. 유사하게, 본 예에서, 소프트웨어 요소 레지스트리는 SCR 트랜잭션을 시작할 것, 즉 새로운 애플리케이션 또는 기타 실행 코드가 설치되고 있음을 레지스터할 것을 지시받고, 그에 따라, 애플리케이션 또는 기타 실행 코드에 대한 새로운 데이터베이스 엔트리를 열어야 한다.
다음, 본 예에서, 블록 3.24에서 인스톨러 플러그인은 여하한 적절한 통지를 사용자에게 표시하고, 설치를 계속하라는 사용자 허가를 얻으며, 이는 블록 3.26에서 소프트웨어 인스톨러(208)에게 보고된다. 물론, 예시적인 GUI 이벤트에서, 계속하라는 사용자 허가를 얻는 것은 설치 과정에 걸쳐 여하한 요구되는 지점에서 일어날 수 있다: 편의를 위해 하나의 그러한 이벤트만이 여기 도시된다. 다른 예에서, 다수의 그러한 이벤트가 일어날 수 있다. 다시, 네이티브 코드 외 다른 유형의 코드가 설치되고 있다면, 본 예시적인 실시형태에서 소프트웨어 인스톨러(208)에 의해 수행되는 모든 동작은 인스톨러 플러그인에 의해 수행될 것이고 따라서 두 엔티니 사이에서 보고할 필요가 없을 것이다.
계속하라는 사용자 확인을 수신하면, 소프트웨어 트랜잭션 서비스 모듈(210)은 파일 시스템 트랜잭션을 기록하고, 본 예시적인 실시형태에서, 블록 3.28에서 애플리케이션 또는 실행 코드 파일의 설치를 반영하도록 SCR 데이터베이스 내에서 엔트리가 만들어지고, 동시에 이들 파일이 블록 3.30에서 적절한 디렉토리 또는 디렉토리들에 파일 시스템 내에서 전달 및 저장된다. 그 후, 본 예에서, 파일이 파일 시스템의 적당한 부분으로 복사되고 소프트웨어 트랜잭션 서비스 모듈 저널링 기능이 완료되면, 소프트웨어 트랜잭션 서비스 모듈(210)에 의해 만들어진 설치를 위한 저널 엔트리가 블록 3.32에서 커밋된 세션에 의해 완료된다. 유사하게, 본 예에서, 블록 3.34에서 SCR 세션을 커밋하는 인스톨러에 의해 소프트웨어 요소 레지스트리 데이터베이스 엔트리도 완성된다.
그러므로, 상기 내용으로, 본 예시적인 실시형태에서, 새로운 애플리케이션 또는 기타 실행 코드가 설명된 소프트웨어 설치 프레임워크를 이용하여 컴퓨팅 플랫폼 상에 설치될 수 있다.
아래의 청구범위의 범위, 해석 또는 적용을 제한함이 없이, 여기 개시된 하나 이상의 예시적인 실시형태의 기술적 효과는 OS에 대해 좀 더 풍부한 개발 선택을 제공한다는 것이다. 성능에 비해 타임-투-마켓을 강조하는 개발자는, 그들의 제품이 다른 우선순위 세트를 선택한 것과 같이 플랫폼 상에서 가시적일 것임을 알면서, 관리된 환경(자바 또는 .NET 등)에 대해 개발할 것이다.
여기 개시된 하나 이상의 예시적인 실시형태의 다른 기술적 효과는, 사용자가 그들의 소프트웨어가 어떠한 래핑에서 왔는지를 알거나 관심가질 필요가 없기 때문에 OS의 사용성을 개선한다는 것이다. 사용자는 동일한 유틸리티 세트 및 동일한 시각적 단서를 이용하여 그들의 OS에서 동일한 방법으로 애플리케이션을 사용하거나 관리할 수 있을 것이다.
여기 개시된 하나 이상의 예시적인 실시형태의 다른 기술적 효과는, 제 2 예시적인 실시형태는 OS의 생태계를 풍부하게도 하여 상이한 기술적 배경을 가진 개발자들이 그들의 소프트웨어에 대해 균일한 가시성을 얻으면서 OS에 대한 개발을 할 수 잇도록 하는 것이다.
여기 개시된 하나 이상의 예시적인 실시형태의 다른 기술적 효과는, 기업 환경에 특성을 부가하는 것이다. 예를 들어, 시스템 관리자는, 인스톨러 플러그인의 세트를 제한함으로써 시스템에 더 적은 손상을 줄 수 있는 소프트웨어를 사용자가 설치할 수 있도록 할 수 있다. 이는 사용자가 많은 보안 결정을 내려야 하거나 기업에 의해 명시적으로 신뢰될 필요가 없음을 의미하기도 한다.
여기서 개시된 하나 이상의 예시적인 실시형태의 다른 기술적 효과는, 인스톨러 개발자에 대해 더 빠른 타임-투-마켓을 가능하게 한다는 것이다. 예를 들어, OS에서 공통 기능 세트를 사용함으로써, SIF 플러그인의 제3자 개발자는 그들의 애플리케이션 언어 또는 전달 모드의 구체적인 특징에 집중할 수 있다.
여기에 개시된 하나 이상의 예시적 실시형태의 다른 기술적 효과는, 맞춤화 가능한 설치의 제공, 예를 들어, 소프트웨어 유형에 따라 설치 프로세스 동안 추가적인 동작을 수행할 수 있는 능력이다. 예를 들어, 미들렛 설치는 설치 또는 설치해제 동안 네트워크 제공자에게 메시지를 보낼 수 있거나(OTA 프로토콜), 또는, 네이티브 인스톨러는 복잡한 업그레이드 규칙 등을 구현할 수 있다.
본 발명의 실시형태는 소프트웨어, 하드웨어, 애플리케이션 로직 또는 소프트웨어, 하드웨어 및 애플리케이션 로직의 결합에서 구현될 수 있다. 예시적인 실시형태에서, 애플리케이션 로직, 소프트웨어 또는 명령 세트는 다양한 종래의 컴퓨터 판독 가능 매체 중 여하한 것에 유지될 수 있다. 이 문서의 맥락에서, "컴퓨터 판독 가능 매체"는 컴퓨터와 같은 명령 실행 시스템, 장치 또는 장비와 관련하여 또는 그에 의해 사용되기 위한 명령을 담거나, 저장하거나, 통신하거나, 전파하거나 전송할 수 있는 여하한 매체 또는 수단일 수 있는데, 컴퓨터의 일 예는 도 1에 도시되고 설명되며, 컴퓨터 판독 가능 매체의 일 예는 도 7에 도시되고 설명된다. 컴퓨터 판독 가능 매체는 컴퓨터와 같은 명령 실행 시스템, 장치 또는 장비와 관련하여 또는 그에 의해 사용되기 위한 명령을 담거나 저장할 수 있는 여하한 매체 또는 수단일 수 있는 컴퓨터 판독 가능 저장 매체를 포함할 수 있다.
희망하는 경우, 여기에서 논의된 상이한 기능들이 다른 순서로 및/또는 서로 동시에 수행될 수 있다. 더욱이, 희망하는 경우, 상술한 기능 중 하나 이상은 선택적(optional)이거나 결합될 수 있다.
본 발명의 다양한 태양이 독립항에 제시되었으나, 본 발명의 다른 태양은 설명된 실시형태 및/또는 종속항으로부터의 특징들과 독립항의 특징의 다른 결합을 포함하고, 청구항에 명시된 조합만을 포함하는 것은 아니다.
또한 위에서 본 발명의 예시적인 실시형태가 설명되지만 이들 설명은 제한적인 것으로 보아서는 안 된다는 점을 유의하라. 오히려, 첨부된 청구범위에 정의된 본 발명의 범위를 벗어남이 없이 이루어질 수 있는 몇몇의 변형이나 변경이 존재한다.

Claims (26)

  1. a) 획득된 컴퓨터 프로그램이 컴퓨터 플랫폼에 설치되도록 하기 위한 설치 인터페이스를 제공하는 소프트웨어 인스톨러 프레임워크 모듈과,
    b) 설치될 컴퓨터 프로그램의 하나 이상의 유형 중 각각에 대한 적어도 하나의 인스톨러 플러그인 모듈인 복수의 인스톨러 플러그인 모듈- 각각의 상기 인스톨러 플러그인 모듈은 사용시에 그와 관련된 컴퓨터 프로그램의 유형을 컴퓨터 플랫폼으로 및/또는 컴퓨터 플랫폼으로부터 설치 및/또는 설치해제(uninstall)할 수 있도록 구성됨-
    을 포함하고,
    상기 소프트웨어 인스톨러 프레임워크 모듈은 상기 설치 인터페이스를 통해 특정 컴퓨터 프로그램과 관련한 설치 또는 설치해제 커맨드를 수신하고, 상기 특정 컴퓨터 프로그램의 유형에 따라 상기 복수의 인스톨러 플러그인 모듈 중 하나를 선택하도록 구성되고, 상기 선택된 인스톨러 플러그인 모듈은 상기 컴퓨터 플랫폼으로 또는 상기 컴퓨터 플랫폼으로부터 상기 특정 컴퓨터 프로그램의 상기 설치 또는 설치해제를 수행하도록 구성된
    장치.
  2. 제 1 항에 있어서,
    유형과 무관하게 상기 컴퓨터 플랫폼에 현재 설치된 상기 컴퓨터 프로그램의 데이터베이스를 갖는 소프트웨어 요소(component) 레지스트리 모듈을 더 포함하는
    장치.
  3. 제 2 항에 있어서,
    상기 소프트웨어 요소 레지스트리 모듈은 그 데이터베이스에 상기 컴퓨터 플랫폼에 존재하는 상기 인스톨러 플러그인 모듈과 관련된 데이터를 포함하고, 상기 소프트웨어 인스톨러 프레임워크 모듈은 사용 시 상기 소프트웨어 요소 레지스트리 모듈로부터 상기 복수의 인스톨러 플러그인 모듈 중 설치 또는 설치해제될 컴퓨터 프로그램 유형과 관련된 하나의 인스톨러 플러그인 모듈의 플러그인 ID를 획득하는
    장치.
  4. 제 2 항 또는 제 3 항에 있어서,
    사용 시 사용자에게 상기 컴퓨터 플랫폼에 설치된 상기 컴퓨터 프로그램을 표시하도록 구성된 애플리케이션 시각화 모듈을 더 포함하고, 상기 애플리케이션 시각화 모듈은 상기 설치된 컴퓨터 프로그램과 관련된 정보를 표시를 위해 획득하도록 상기 소프트웨어 요소 레지스트리 모듈과 상호작용하는
    장치.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    사용 시에, 설치된 컴퓨터 프로그램이 저장된 상기 컴퓨터 플랫폼의 파일 시스템 상에서 트랜잭션을 기록하는 소프트웨어 트랜잭션 서비스 모듈을 더 포함하고, 그에 의해 상기 선택된 인스톨러 플러그인 모듈에 의한 상기 특정 컴퓨터 프로그램의 설치 프로세스가 기록되는
    장치.
  6. 제 5 항에 있어서,
    상기 설치 프로세스의 기록은, 필요한 때에 상기 특정 컴퓨터 프로그램을 설치해제, 또는 적어도 부분적으로 설치해제하는 데 상기 인스톨러 플러그인 모듈에 의해 사용되는
    장치.
  7. 제 1 항 내지 제 6 항 중 어느 한 항의 장치와 사용하기 위한 인스톨러 플러그인 모듈을 포함하는 장치로서,
    상기 인스톨러 플러그인 모듈은, 사용 시에, 상기 소프트웨어 인스톨러 프레임워크 모듈로부터 설치 또는 설치해제 커맨드를 수신하고, 상기 수신된 커맨드에 따라 특정 유형의 특정 컴퓨터 프로그램을 설치 또는 설치해제 하도록 구성되고, 상기 인스톨러 플러그인 모듈은 하나의 특정 유형의 컴퓨터 프로그램을 설치 또는 설치해제하도록 구성된
    장치.
  8. 제 1 항 내지 제 7 항 중 어느 한 항에 있어서,
    상기 인스톨러 플러그인 모듈(들)과 관련된 하나 이상의 보안 정책을 더 포함하고,
    각각의 상기 보안 정책은 특정 인스톨러 플러그인 모듈에 의해 설치된 컴퓨터 프로그램이 상기 컴퓨터 플랫폼의 어떤 리소스에 액세스할 수 있는지를 정의하는 데이터를 포함하는
    장치.
  9. 적어도 하나의 프로세서와,
    컴퓨터 프로그램 코드를 포함하는 적어도 하나의 메모리를 포함하는 장치로서,
    상기 적어도 하나의 메모리와 상기 컴퓨터 프로그램 코드는, 상기 적어도 하나의 프로세서를 이용하여, 상기 장치로 하여금 적어도,
    a) 상기 장치에서 제공되는 소프트웨어 인스톨러 프레임워크 모듈에 의해 제공되는 설치 인터페이스에서 특정 컴퓨터 프로그램과 관련한 설치 또는 설치해제 커맨드를 수신하고,
    b) 상기 특정 컴퓨터 프로그램의 유형에 따라, 설치될 컴퓨터 프로그램의 하나 이상의 유형 중 각각에 대한 적어도 하나의 인스톨러 플러그인 모듈인 복수의 인스톨러 플러그인 모듈 중 하나를 선택하고 -각각의 상기 인스톨러 플러그인 모듈은 사용 시에 그와 관련된 컴퓨터 프로그램의 유형을 상기 장치로 및/또는 상기 장치로부터 설치 및/또는 설치해제 할 수 있도록 구성됨-,
    c) 그 후 상기 선택된 인스톨러 플러그인 모듈이 상기 장치로 또는 상기 장치로부터 상기 특정 컴퓨터 프로그램의 상기 설치 또는 설치해제를 실행하는 것
    을 수행하게 하도록 구성된
    장치.
  10. 제 9 항에 있어서,
    상기 적어도 하나의 메모리와 상기 컴퓨터 프로그램 코드는, 상기 적어도 하나의 프로세서를 이용하여, 상기 장치로 하여금, 유형과 무관하게 상기 장치에 현재 설치된 상기 컴퓨터 프로그램의 데이터베이스를 갖는 소프트웨어 요소 레지스트리 모듈로 상기 특정 컴퓨터 프로그램의 설치 및 설치해제를 레지스터하도록 하는
    장치.
  11. 제 10 항에 있어서,
    상기 소프트웨어 요소 레지스트리 모듈은 그 데이터베이스에 상기 컴퓨터 플랫폼에 존재하는 상기 인스톨러 플러그인 모듈과 관련된 데이터를 포함하고, 상기 적어도 하나의 메모리와 상기 컴퓨터 프로그램 코드는, 상기 적어도 하나의 프로세서를 이용하여, 상기 장치로 하여금, 상기 소프트웨어 인스톨러 프레임워크 모듈에서 상기 소프트웨어 요소 레지스트리 모듈로부터 상기 복수의 인스톨러 플러그인 모듈 중 설치 또는 설치해제될 컴퓨터 프로그램 유형과 관련된 하나의 인스톨러 플러그인 모듈의 플러그인 ID를 획득하게 하도록 구성되는
    장치.
  12. 제 9 항 또는 제 10 항에 있어서,
    상기 적어도 하나의 메모리와 상기 컴퓨터 프로그램 코드는, 상기 적어도 하나의 프로세서를 이용하여, 상기 장치로 하여금, 애플리케이션 시각화 모듈을 통해 사용자에게 상기 장치에 설치된 상기 컴퓨터 프로그램을 표시하게 하도록 더 구성되고, 상기 애플리케이션 시각화 모듈은 상기 설치된 컴퓨터 프로그램과 관련된 정보를 표시를 위해 획득하도록 상기 소프트웨어 요소 레지스트리 모듈과 상호작용하는
    장치.
  13. 제 9 항 내지 제 12 항 중 어느 한 항에 있어서,
    상기 적어도 하나의 메모리와 상기 컴퓨터 프로그램 코드는, 상기 적어도 하나의 프로세서를 이용하여, 상기 장치로 하여금, 설치된 컴퓨터 프로그램이 저장된 상기 장치의 파일 시스템 상에서 트랜잭션을 기록하게 하도록 더 구성되고, 그에 의해 상기 선택된 인스톨러 플러그인 모듈에 의한 상기 특정 컴퓨터 프로그램의 설치 프로세스가 기록되는
    장치.
  14. 제 13 항에 있어서,
    상기 설치 프로세스의 기록은, 필요한 때에 상기 특정 컴퓨터 프로그램을 설치해제, 또는 적어도 부분적으로 설치해제하는 데 상기 인스톨러 플러그인 모듈에 의해 사용되는
    장치.
  15. 적어도 하나의 프로세서와,
    컴퓨터 프로그램 코드를 포함하는 적어도 하나의 메모리를 포함하는 장치로서,
    상기 적어도 하나의 메모리와 상기 컴퓨터 프로그램 코드는, 상기 적어도 하나의 프로세서를 이용하여, 상기 장치로 하여금 적어도,
    인스톨러 플러그인 모듈을 동작시키는 것 -상기 인스톨러 플러그인 모듈은, 사용 시, 소프트웨어 인스톨러 프레임워크 모듈로부터 설치 또는 설치해제 커맨드를 수신하고, 상기 수신된 커맨드에 따라, 특정 유형의 특정 컴퓨터 프로그램을 설치 또는 설치해제하도록 구성됨-
    을 수행하게 하도록 구성되고,
    상기 인스톨러 플러그인 모듈은 하나의 특정 유형의 컴퓨터 프로그램을 설치 또는 설치해제 하도록 구성된
    장치.
  16. 제 9 항 내지 제 15 항 중 어느 한 항에 있어서,
    상기 적어도 하나의 메모리와 상기 컴퓨터 프로그램 코드는, 상기 적어도 하나의 프로세서를 이용하여, 상기 장치로 하여금, 상기 인스톨러 플러그인 모듈(들)과 관련된 하나 이상의 보안 정책을 적용하게 하도록 구성되고, 각각의 상기 보안 정책은 특정 인스톨러 플러그인 모듈에 의해 설치된 컴퓨터 프로그램이 상기 장치의 어떤 리소스에 액세스할 수 있는지를 정의하는 데이터를 포함하는
    장치.
  17. a) 컴퓨터 플랫폼에서 제공되는 소프트웨어 인스톨러 프레임워크 모듈에 의해 제공되는 설치 인터페이스에서 특정 컴퓨터 프로그램과 관련한 설치 또는 설치해제 커맨드를 수신하는 단계와,
    b) 상기 특정 컴퓨터 프로그램의 유형에 따라, 설치될 컴퓨터 프로그램의 하나 이상의 유형 중 각각에 대한 적어도 하나의 인스톨러 플러그인 모듈인 복수의 인스톨러 플러그인 모듈 중 하나를 선택하는 단계 -각각의 상기 인스톨러 플러그인 모듈은 사용 시에 그와 관련된 컴퓨터 프로그램의 유형을 상기 컴퓨터 플랫폼으로 및/또는 상기 컴퓨터 플랫폼으로부터 설치 및/또는 설치해제 할 수 있도록 구성됨- 와,
    c) 그 후 상기 선택된 인스톨러 플러그인 모듈이 상기 컴퓨터 플랫폼으로 또는 상기 컴퓨터 플랫폼으로부터 상기 특정 컴퓨터 프로그램의 상기 설치 또는 설치해제를 실행하는 단계
    를 포함하는
    방법.
  18. 제 17 항에 있어서,
    유형과 무관하게 상기 컴퓨터 플랫폼에 현재 설치된 상기 컴퓨터 프로그램의 데이터베이스를 갖는 소프트웨어 요소 레지스트리 모듈로 상기 특정 컴퓨터 프로그램의 설치 및 설치해제를 레지스터하는 단계를 더 포함하는
    방법.
  19. 제 18 항에 있어서,
    상기 소프트웨어 요소 레지스트리 모듈은 그 데이터베이스에 상기 컴퓨터 플랫폼에 존재하는 상기 인스톨러 플러그인 모듈과 관련된 데이터를 포함하고, 상기 방법은, 상기 소프트웨어 인스톨러 프레임워크 모듈에서 상기 소프트웨어 요소 레지스트리 모듈로부터 상기 복수의 인스톨러 플러그인 모듈 중 설치 또는 설치해제될 컴퓨터 프로그램 유형과 관련된 하나의 인스톨러 플러그인 모듈의 플러그인 ID를 획득하는 단계를 더 포함하는
    방법.
  20. 제 17 항 또는 제 18 항에 있어서,
    애플리케이션 시각화 모듈을 통해 사용자에게 상기 컴퓨터 플랫폼에 설치된 상기 컴퓨터 프로그램을 표시하는 단계를 더 포함하고,
    상기 애플리케이션 시각화 모듈은 상기 설치된 컴퓨터 프로그램과 관련된 정보를 표시를 위해 획득하도록 상기 소프트웨어 요소 레지스트리 모듈과 상호작용하는
    방법.
  21. 제 17 항 내지 제 20 항 중 어느 한 항에 있어서,
    설치된 컴퓨터 프로그램이 저장된 상기 컴퓨터 플랫폼의 파일 시스템 상에서 트랜잭션을 기록하는 단계를 더 포함하고, 그에 의해 상기 선택된 인스톨러 플러그인 모듈에 의한 상기 특정 컴퓨터 프로그램의 설치 프로세스가 기록되는
    방법.
  22. 제 21 항에 있어서,
    상기 설치 프로세스의 기록은, 필요한 때에 상기 특정 컴퓨터 프로그램을 설치해제, 또는 적어도 부분적으로 설치해제하는 데 상기 인스톨러 플러그인 모듈에 의해 사용되는
    방법.
  23. 제 17 항 내지 제 22 항 중 어느 한 항의 방법과 사용하기 위한 인스톨러 플러그인 모듈을 동작시키는 단계를 포함하는 방법으로서,
    상기 인스톨러 플러그인 모듈은, 사용 시에, 상기 소프트웨어 인스톨러 프레임워크 모듈로부터 설치 또는 설치해제 커맨드를 수신하고, 상기 수신된 커맨드에 따라 특정 유형의 특정 컴퓨터 프로그램을 설치 또는 설치해제 하도록 구성되고, 상기 인스톨러 플러그인 모듈은 하나의 특정 유형의 컴퓨터 프로그램을 설치 또는 설치해제하도록 구성된
    방법.
  24. 제 17 항 내지 제 23 항 중 어느 한 항에 있어서,
    상기 인스톨러 플러그인 모듈(들)과 관련된 하나 이상의 보안 정책을 적용하는 단계를 더 포함하고,
    각각의 상기 보안 정책은 특정 인스톨러 플러그인 모듈에 의해 설치된 컴퓨터 프로그램이 상기 컴퓨터 플랫폼의 어떤 리소스에 액세스할 수 있는지를 정의하는 데이터를 포함하는
    방법.
  25. 컴퓨터 프로그램 또는 컴퓨터 프로그램 묶음(suite)으로서, 컴퓨터 플랫폼에 의해 실행되는 때에, 상기 플랫폼이 제 17 항 내지 제 24 항 중 어느 한 항의 방법을 수행하게 하도록 구성되는, 컴퓨터 프로그램 또는 컴퓨터 프로그램 묶음.
  26. 제 25 항에 따른 상기 컴퓨터 프로그램 또는 컴퓨터 프로그램 묶음(suite) 중 적어도 하나를 저장하는 컴퓨터 판독가능 매체.
KR1020117016134A 2008-12-12 2009-12-02 컴퓨터 플랫폼에 프로그램을 설치하기 위한 방법과 장치 및 컴퓨터 판독가능 저장 매체 KR20110099310A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0822749A GB2466220A (en) 2008-12-12 2008-12-12 Installing or uninstalling computer programs using installer plug-in modules
GB0822749.8 2008-12-12

Publications (1)

Publication Number Publication Date
KR20110099310A true KR20110099310A (ko) 2011-09-07

Family

ID=40326055

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117016134A KR20110099310A (ko) 2008-12-12 2009-12-02 컴퓨터 플랫폼에 프로그램을 설치하기 위한 방법과 장치 및 컴퓨터 판독가능 저장 매체

Country Status (7)

Country Link
US (1) US20120137281A1 (ko)
EP (1) EP2359240A4 (ko)
KR (1) KR20110099310A (ko)
CN (1) CN102246144A (ko)
CA (1) CA2746434A1 (ko)
GB (1) GB2466220A (ko)
WO (1) WO2010067266A1 (ko)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9356991B2 (en) * 2010-05-10 2016-05-31 Litera Technology Llc Systems and methods for a bidirectional multi-function communication module
US20120036496A1 (en) * 2010-08-05 2012-02-09 Computer Associates Think, Inc. Plug-in based high availability application management framework (amf)
US9593558B2 (en) 2010-08-24 2017-03-14 Exxonmobil Upstream Research Company System and method for planning a well path
US8832855B1 (en) 2010-09-07 2014-09-09 Symantec Corporation System for the distribution and deployment of applications with provisions for security and policy conformance
US8955152B1 (en) * 2010-09-07 2015-02-10 Symantec Corporation Systems and methods to manage an application
US9043863B1 (en) 2010-09-07 2015-05-26 Symantec Corporation Policy enforcing browser
JP5699500B2 (ja) * 2010-09-16 2015-04-08 株式会社リコー インストールプログラム、インストール方法、画像形成装置、及び記録媒体
CA2823017A1 (en) 2011-01-26 2012-08-02 Exxonmobil Upstream Research Company Method of reservoir compartment analysis using topological structure in 3d earth model
EP2678802A4 (en) 2011-02-21 2017-12-13 Exxonmobil Upstream Research Company Reservoir connectivity analysis in a 3d earth model
WO2013006226A1 (en) 2011-07-01 2013-01-10 Exxonmobil Upstream Research Company Plug-in installer framework
US9165332B2 (en) * 2012-01-27 2015-10-20 Microsoft Technology Licensing, Llc Application licensing using multiple forms of licensing
US20140007070A1 (en) * 2012-06-29 2014-01-02 International Business Machines Corporation Managing Software Product Lifecycle Across Multiple Operating System Platforms
US8893152B2 (en) * 2012-09-06 2014-11-18 Intel Corporation Application registration with a non-OS service
US8997088B2 (en) * 2012-11-02 2015-03-31 Wipro Limited Methods and systems for automated deployment of software applications on heterogeneous cloud environments
US8918780B2 (en) * 2013-03-14 2014-12-23 International Business Machines Corporation Automatic quality assurance for software installers
EP3008281A2 (en) 2013-06-10 2016-04-20 Exxonmobil Upstream Research Company Interactively planning a well site
US8789040B1 (en) * 2013-07-16 2014-07-22 Appenity LLC Converting non-natively executable programs to downloadable executable programs
US9411702B2 (en) * 2013-08-30 2016-08-09 Globalfoundries Inc. Flexible and modular load testing and monitoring of workloads
US9864098B2 (en) 2013-09-30 2018-01-09 Exxonmobil Upstream Research Company Method and system of interactive drill center and well planning evaluation and optimization
EP2879074A1 (en) * 2013-11-29 2015-06-03 Gemalto SA Method for loading a native code on a secure element
CN103984553B (zh) * 2014-05-26 2017-10-24 中科创达软件股份有限公司 一种3d桌面显示方法和系统
CN106294411B (zh) * 2015-05-25 2020-03-17 腾讯科技(深圳)有限公司 软件类别的识别方法及识别系统
CN105677389A (zh) * 2015-12-29 2016-06-15 深圳市科漫达智能管理科技有限公司 一种Virgo组件的安装更新方法及装置
US10324700B2 (en) 2016-03-09 2019-06-18 International Business Machines Corporation Storing computing component installation information
JP6412276B2 (ja) * 2016-04-25 2018-10-24 深▲せん▼前海達闥雲端智能科技有限公司Cloudminds (Shenzhen) Robotics Systems Co., Ltd. 仮想マシン作成方法及び装置
CN108153533B (zh) * 2016-12-02 2020-12-11 腾讯科技(深圳)有限公司 制作安装程序的方法和装置、程序的安装方法和装置
US20180181381A1 (en) * 2016-12-23 2018-06-28 Microsoft Technology Licensing, Llc Application program package pre-installation user interface
US10673704B2 (en) * 2017-02-15 2020-06-02 Arista Networks, Inc. System and method of dynamic hardware policer allocation
CN108038369A (zh) * 2017-12-26 2018-05-15 上海展扬通信技术有限公司 一种应用权限控制方法及终端
US10698673B2 (en) 2018-04-20 2020-06-30 Red Hat, Inc. Managing software installation
CN108959937A (zh) * 2018-06-29 2018-12-07 北京奇虎科技有限公司 插件处理方法、装置和设备
DE102020103314A1 (de) 2020-02-10 2021-08-12 Mixed Mode GmbH Verfahren zum Aktualisieren von Software und Knoten eines Netzwerkes
CN113050970B (zh) * 2021-04-13 2023-03-10 深圳市汉云科技有限公司 Sql数据库的插件更新方法、装置、设备及存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US6205527B1 (en) * 1998-02-24 2001-03-20 Adaptec, Inc. Intelligent backup and restoring system and method for implementing the same
US6687902B1 (en) * 1999-08-05 2004-02-03 International Business Machines Corporation Method, system, and program for deleting user selected file sets of a program
US6715144B2 (en) * 1999-12-30 2004-03-30 International Business Machines Corporation Request based automation of software installation, customization and activation
DE60117676T2 (de) * 2000-12-29 2006-11-16 Stmicroelectronics S.R.L., Agrate Brianza Verfahren zur einfachen Ausdehnung der Funktionalität eines tragbaren elektronischen Geräts und zugehöriges, tragbares elektronisches Gerät
US7131123B2 (en) * 2001-04-30 2006-10-31 Opsware Inc. Automated provisioning of computing networks using a network database model
US6996832B2 (en) * 2001-05-30 2006-02-07 Bea Systems, Inc. System and method for software component plug-in framework
US6993760B2 (en) * 2001-12-05 2006-01-31 Microsoft Corporation Installing software on a mobile computing device using the rollback and security features of a configuration manager
CA2391733A1 (en) * 2002-06-26 2003-12-26 Ibm Canada Limited-Ibm Canada Limitee Framework to access a remote system from an integrated development environment
KR100493883B1 (ko) * 2003-01-02 2005-06-10 삼성전자주식회사 애플리케이션 관리 시스템 및 방법
US7069553B2 (en) * 2003-03-03 2006-06-27 Computer Associates Think, Inc. Universal deployment tool
US20040249919A1 (en) * 2003-06-04 2004-12-09 Dirk Mattheis System and method for remote systems management and reporting
US20060085517A1 (en) * 2004-10-04 2006-04-20 Markku Kaurila Download user agent plug-in for facilitating over-the-air downloading of media objects
GB2421323B (en) * 2004-12-15 2009-07-22 Symbian Software Ltd A method of maintaining applications in a computing device
US20060160529A1 (en) * 2005-01-14 2006-07-20 Holger Glass Systems and methods for the automatic customization or configuration of mobile devices
US20070240134A1 (en) * 2006-02-28 2007-10-11 Joydeep Buragohain Software packaging model supporting multiple entity types
US20070282801A1 (en) * 2006-06-05 2007-12-06 Ajay A Apte Dynamically creating and executing an application lifecycle management operation
US9003396B2 (en) * 2006-06-19 2015-04-07 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. File manager integration of uninstallation feature
EP2053504A1 (en) * 2007-08-09 2009-04-29 France Telecom System and method for managing processing resources

Also Published As

Publication number Publication date
WO2010067266A1 (en) 2010-06-17
EP2359240A1 (en) 2011-08-24
CN102246144A (zh) 2011-11-16
GB2466220A (en) 2010-06-16
GB0822749D0 (en) 2009-01-21
EP2359240A4 (en) 2012-06-27
CA2746434A1 (en) 2010-06-17
US20120137281A1 (en) 2012-05-31

Similar Documents

Publication Publication Date Title
KR20110099310A (ko) 컴퓨터 플랫폼에 프로그램을 설치하기 위한 방법과 장치 및 컴퓨터 판독가능 저장 매체
US20220308941A1 (en) Sharing extension points to allow an application to share content via a sharing extension
US8887152B1 (en) Android application virtual environment
US9208328B2 (en) Security system and method for operating systems
JP5891414B2 (ja) 情報処理装置およびアプリケーション不正連携防止方法
Barrera et al. Secure software installation on smartphones
US7516477B2 (en) Method and system for ensuring that computer programs are trustworthy
US20150332043A1 (en) Application analysis system for electronic devices
RU2339076C2 (ru) Выполнение неверифицированных программ в операционной среде устройства радиосвязи
KR101453742B1 (ko) 웹 어플리케이션 실행을 위한 보안 제공 장치 및 방법
JP2008524686A (ja) コンピュータ装置においてアプリケーションを保守する方法
KR101977428B1 (ko) 애플리케이션용 콘텐츠 핸들링 기법
US10599409B2 (en) Application lifecycle operation queueing
US20200104145A1 (en) Mobile application management by run-time insertion of a substitute application class loader into a mobile application process
US10158531B2 (en) Leveraging and extending mobile operating system MDM protocol
JP2023504600A (ja) アクセス制御システム及び方法
JP7248219B2 (ja) コンピュータセキュリティのためのシステムおよび方法
Sekar et al. Avoidance of security breach through selective permissions in android operating system
Siddiqui et al. Android security model that provide a base operating system
CN115828195A (zh) 一种水印嵌入方法、装置、存储介质及电子设备
Li et al. Symbian OS platform security model
WO2022128143A1 (en) Protection of a computer system and its software from installing and running software applications on incompatible platforms
CN116340932A (zh) 具有隔离功能的应用程序包生成方法、管理方法及装置
King et al. RIM security
Mozos Pérez A study of vulnerabilities on Android systems

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application