KR20050029705A - 소프트웨어를 배포하고 설치하는 방법 및 시스템 - Google Patents

소프트웨어를 배포하고 설치하는 방법 및 시스템 Download PDF

Info

Publication number
KR20050029705A
KR20050029705A KR1020040075464A KR20040075464A KR20050029705A KR 20050029705 A KR20050029705 A KR 20050029705A KR 1020040075464 A KR1020040075464 A KR 1020040075464A KR 20040075464 A KR20040075464 A KR 20040075464A KR 20050029705 A KR20050029705 A KR 20050029705A
Authority
KR
South Korea
Prior art keywords
version
computer
software
product
installation
Prior art date
Application number
KR1020040075464A
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 KR20050029705A publication Critical patent/KR20050029705A/ko

Links

Classifications

    • 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
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

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

Abstract

다수의 소프트웨어 제품의 설치 및 배포에 관련된 방법 및 컴퓨터 판독가능 매체가 개시된다. 다수의 관련되어 있지만 서로 다른 소프트웨어 제품들을 설치하는데 필요한 컴퓨터 코드는 저장 매체에 저장되고, 하나의 저장 매체 또는 매체 세트로부터 설치가능한 모든 소프트웨어 제품에 필요한 최소한 몇개의 1차 코드를 포함한다. 특정 소프트웨어 제품의 설치는 1차 코드 및 최소한 몇개의 제품-특정 코드의 설치를 포함한다. 설치는 사용자에 의해 제공된 제품 키와 같은 정보에 기초하여 적절한 소프트웨어 제품을 식별하여 설치하는 인스톨러에 의해 실행된다. 인스톨러는 룩업 테이블을 사용하여, 설치하기 위한 코드를 식별하고, 사용자에게 소프트웨어 제품에 대한 자격이 주어졌다는 것을 검증할 수 있다.

Description

소프트웨어를 배포하고 설치하는 방법 및 시스템{METHOD AND SYSTEM FOR DISTRIBUTING AND INSTALLING SOFTWARE}
본 발명은 컴퓨터 상의 소프트웨어의 배포, 설치 및 동작에 관한 것으로, 더욱 구체적으로 소프트웨어 제품을 상이한 컴퓨터에 배포하고 설치하는 방법 및 시스템에 관한 것이다.
컴퓨터 소프트웨어 개발자는 전형적으로 동일한 소프트웨어 제품의 다수의 버전을 판매한다. 각 버전은, 버전들의 대부분의 실행가능한 컴퓨터 코드가 동일하다 하더라도, 몇몇의 서로 다른 반응(behavior)에 의해 입증되는 바와 같이 다른 버전들과 식별가능하게 구별된다. 서로 다른 반응의 예로는 서로 다른 특징, 언어 그룹과 같은 서로 다른 이용가능 자원, 브랜딩(branding) 텍스트와 같이 런타임(runtime) 동안에 사용자에게 보여지는 서로 다른 텍스트, 서로 다른 라이센싱 조건, 및 서로 다른 설치(installation) 반응을 포함한다.
예를 들어, 소프트웨어 개발자는 종종 각 소프트웨어 제품의 OEM(Original Equipment Manufacture; 주문자 상표 부착 생산) 버전 및 소매용 버전을 제공한다. 이들 버전은 전형적으로 상이한 설치 반응을 갖는다. 소매용 버전은 최종 사용자에 의해 설치되도록 되어 있으므로, 사용자로부터의 정보 요청을 포함하고, 설치 프로세스의 일부로서 응답을 필요로 한다. 한편, OEM 버전은 컴퓨터 재판매업자에 의해 설치되도록 되어 있으므로, 설치 동안에 정보를 요청하는 것이 아니라, 소프트웨어가 처음 실행될 때에 정보를 요청한다. 그러므로, 이들 2개의 버전 사이의 한가지 차이점은 설치 동안의 반응이다. 동일 제품의 OEM 버전과 소매용 버전 사이의 다른 일반적인 차이점은 각 버전에 적용되는 라이센스 조건이다.
전형적으로, 각 버전은 자체의 패키징 내에 그리고 분리된 저장 매체에 포함되어 판매된다. 저장 매체는 1차(primary) 컴퓨터 코드 또는 1차 코드, 및 해당 버전을 수용하는 컴퓨터 상으로 설치하여 적절한 반응을 인에이블하는데 필요한 모든 2차(secondary) 버전-특정 코드를 포함한다. 그러므로, 10개의 상이한 버전이 소프트웨어 개발자에 의해 판매된 경우에는, 각 저장 매체 세트 상의 대다수의 소프트웨어, 즉 1차 코드가 동일하다 하더라도, 10개의 상이한 패키징이 있을 뿐만 아니라, 판매될 단지 하나의 버전을 각각 갖고 있는 10개의 물리적으로 상이한 저장 매체 세트가 있다.
이러한 소프트웨어 배포 방법은 몇가지 단점이 있다. 먼저, 저장 매체가 부정확하게 패키징될 가능성이 상당히 있다. 이것은 여러가지 이유로 바람직하지 않다. 고객은 구입 시점에서 소프트웨어 및 패키징을 반환해야 함으로써 불편을 느끼게 될 수 있고, 궁극적으로 소프트웨어는 소프트웨어 개발자의 비용으로 소프트웨어 개발자에게 반환되어야 할 것이다. 또한, 클라이언트는 다시 소프트웨어 개발자의 손해로, 우연히 더 높은 가치의 버전을 얻을 수 있다. 더욱이, 패키징이 저장 매체의 버전-특정 스크린 프린팅 또는 물리적 레이블링을 포함하면, 그 저장 매체는 파기되어야 하고, 소프트웨어 개발자가 재생 이용하고 싶어해도 재생 이용될 수 없다.
이러한 배포 방법의 다른 단점은 개발자가 다수의 상이한 저장 매체 세트를 생산해야 한다는 것이다. 한 예로서 CD(Compact disc)와 같은 광학 디스크를 사용하는 경우, 개발자가 소프트웨어 제품의 10가지 상이한 버전을 제공하면, 개발자는 10가지 상이한 버전-특정 CD를 개발해야 한다. 각각의 서로 다른 CD의 개발은 비용을 발생시키고, 그 CD가 특정 버전에서만 사용할 수 있다는 사실은 또한 비용을 증가시킨다.
본 발명에 따르면, 상기 및 다른 문제점은 각 버전마다 개별의 저장 매체를 사용하기보다 오히려 단일 저장 매체에 소프트웨어 프로그램의 다수의 버전을 배포함으로써 해결된다. 컴퓨터에 실제로 설치된 버전은 설치 프로세스의 일부로서 사용자에 의해 입력된 제품 키에 의해 지시받을 수 있다. 소프트웨어 개발자는 매체용의 서로 다른 버전-특정 패키징만을 개발할 필요가 있으며, 고객에게 패키징 상의 버전에 적절한 제품 키를 제공하면 된다.
소프트웨어 제품의 다수의 버전을 설치하는데 필요한 컴퓨터 코드는 저장 매체에 저장되고, 하나의 저장 매체 또는 매체 세트로부터 설치가능한 모든 소프트웨어 제품에 필요한 최소한 1차 코드 및 각 버전에 특정된 2차 코드를 포함한다. 특정 소프트웨어 제품의 설치는 1차 코드 및 최소한 몇개의 2차 코드의 설치를 포함한다. 설치는 사용자에 의해 제공된 제품 키와 같은 정보에 기초하여 적절한 소프트웨어 제품을 식별하여 설치하는 인스톨러(installer)에 의해 실행된다. 인스톨러는 룩업 테이블을 사용하여, 설치하기 위한 코드를 식별하고, 사용자에게 소프트웨어 제품에 대한 자격이 주어졌다는 것을 검증할 수 있다.
다른 실시양상에 따르면, 본 발명은 컴퓨터에 원하는 소프트웨어 제품을 설치하는 방법에 관한 것이다. 이 방법은 컴퓨터에 소프트웨어를 설치하기 위해 사용자로부터 커맨드를 수신하는 단계를 포함한다. 수신시에, 컴퓨터는 원하는 소프트웨어 제품을 포함하여 컴퓨터에 다수의 소프트웨어 제품을 설치하는데 필요한 컴퓨터 코드를 갖는 저장 매체를 억세스한다. 컴퓨터 코드는 컴퓨터에 설치 후에 다수의 소프트웨어 제품의 각각의 동작 동안에 사용되는 주 부분 또는 소정의 다른 꼭 필요한 부분과 같은 제1 부분을 포함한다. 컴퓨터 코드는 또한 다수의 상이한 제2 부분을 포함한다. 각각의 제2 부분은 소프트웨어 제품들 중의 상이한 한 제품과 연관되고 그 상이한 한 제품에 특정되며, 유일하게 연관된 소프트웨어 제품의 동작 중에만 사용된다. 제품 키는 요청되어 수신되고, 제품 키는 원하는 소프트웨어 제품을 식별한다. 이 방법은 컴퓨터 코드의 제1 부분 및 컴퓨터 코드의 단 하나의 제2 부분을 설치함으로써 원하는 소프트웨어 제품을 설치하고, 제2 부분은 원하는 소프트웨어 제품과 연관된 컴퓨터 코드의 제2 부분이다.
다른 실시양상에 따르면, 본 발명은 동일한 소프트웨어 애플리케이션의 상이한 버전과 같이 서로 구별되지만 관련되어 있는 다수의 소프트웨어 제품을 효율적으로 배포하는 방법에 관한 것이다. 이 방법은 컴퓨터에 다수의 소프트웨어 제품들 중의 소정의 제품을 주행하고, 설치하거나, 그렇지 않으면 실행하는데 필요한 파일 또는 기타 컴퓨터 코드를 포함하는 모든 데이터를 저장 매체에 저장하는 단계를 포함한다. 최소한 단지 하나의 제품 키는 다수의 제품들의 각 제품과 연관된다. 소프트웨어 제품의 고객에게는 하나의 소프트웨어 제품만을 설치하는 인스톨러가 제공되는데, 설치되는 제품은 고객에 의해 입력된 제품 키에 의해 판정된다. 인스톨러는 저장 매체에 포함되거나 또는 미리 고객의 컴퓨터에 저장될 수 있다. 저장 매체는 다수의 CD, DVD 또는 기타 물리 저장 매체와 같은 여러 부분의 저장 매체를 포함할 수 있다. 제품 키는 저장 매체에 구비되거나, 또는 인터넷을 통하는 것과 같이 따로 고객에 의해 얻어질 수 있다.
본 발명은 컴퓨터 프로세스나, 컴퓨팅 시스템으로서, 또는 컴퓨터 프로그램 제품 또는 컴퓨터 판독가능 매체와 같은 제조품으로서 구현될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 시스템에 의해 판독가능한 컴퓨터 저장 매체일 수 있는데, 이 컴퓨터 저장 매체는 컴퓨터 프로세스를 실행하기 위한 명령어들의 컴퓨터 프로그램을 인코딩하며, 상술된 바와 같이 최소한 몇개의 1차 코드 부분을 공유하는 개별의 소프트웨어 제품들에 의해 관련된 다수의 소프트웨어 제품을 설치하는데 필요한 컴퓨터 코드를 포함한다. 컴퓨터 프로그램 제품은 또한 컴퓨터 시스템에 의해 판독가능하고, 컴퓨터 프로세스를 실행하는 명령어들의 컴퓨터 프로그램을 인코딩하는 반송파(carrier) 상의 전달 신호일 수 있다.
본 발명을 특징짓는 이들 및 기타 여러가지 특징과 장점은 다음의 상세한 설명을 연관된 도면을 참조하여 읽어보면 명백하게 알 수 있을 것이다.
<실시예>
도 1은 본 발명의 한 실시예에 따른 한 소프트웨어 제품의 한 버전을 설치하는 시스템의 몇몇 주요 구성요소들을 도시한 것이다. 도시된 실시예에서, 컴퓨터 판독가능 데이터 저장 매체(10)가 제공된다. 저장 매체(10)는 하드 드라이브(도시되지 않음)에 저장되거나 또는 컴퓨터 시스템(12)에 의해 억세스가능한 분리형 저장 매체에 저장되는 등, 전체 컴퓨터 시스템(12)의 일부일 수 있다. 데이터 저장 매체(10)는 소프트웨어 제품의 임의의 버전을 컴퓨터 시스템(12) 상으로 설치하기에 충분한 컴퓨터 판독가능 코드를 저장한다. 저장 매체(10)는 최소한 2가지 유형의 컴퓨터 코드, 즉 저장 매체로부터 설치가능한 소프트웨어 제품의 각 버전에 공통되고 그 각 버전을 설치하는 데 필요한 1차 코드(14), 및 하나 이상의 버전에 특정되지만 모든 버전에 특정되지는 않는 2차 코드(16)를 포함한다.
"설치하기에 충분한" 또는 "설치하는데 필요한"이라는 말은 컴퓨터에 이미 있거나 컴퓨터에 이용가능한 코드 이외의 컴퓨터 코드, 객체, 데이터 또는 기타 정보를 칭하는 것이라는 것을 알기 바란다. 운영 체계는 설치 프로세스의 필요한 부분일 수 있지만, 운영 체계는 이미 설치되어 컴퓨터 시스템(12)에 이용가능한 것으로 간주되기 때문에, 여기에서 설명된 "설치하는데 필요한"이라는 말로는 생각되지 않는다.
또한 도 1에 도시된 것은 인스톨러(20)이다. 인스톨러(20)용 소프트웨어는 추가 컴퓨터 코드로서 데이터 저장 매체(10)에 포함되거나, 미리 컴퓨터(12)에 설치되거나, 원격으로 저장될 수 있어서, 이로 인해 네트워크 접속(도시되지 않음)을 통해 소프트웨어 제품의 설치를 제어할 수 있다. 수신 모듈(22)은 제품 키(24)를 수신하기 위해 인스톨러(20) 내에 제공된다. 제품 키(24)는 설치될 소프트웨어의 버전을 식별하고, 제품 키(24)를 검증하는 검증 정보를 포함할 수 있다. 인스톨러(20)은 제품 키(24)에 의해 식별된 버전에 대응하는 저장 매체(10) 내의 코드를 식별하는 연관 모듈(26)을 포함한다. 연관 모듈(26)은 제품 키(24)에 의해 제공된 정보를 저장 매체(10) 상의 소프트웨어 제품의 버전과 연관시키는 정보를 포함하는 SKU 파일(30)의 사용을 통해 이것을 수행할 수 있다.
인스톨러(20)은 또한 제품 키(24)에 의해 식별된 버전과 연관된 코드(32)(즉, 1차 코드, 및 제품 키(24)에 의해 식별된 버전에 특정된 2차 코드)를 저장 매체(10)로부터 추출하여 컴퓨터 시스템(12)에 설치하는 설치 모듈(28)을 포함한다. 설치 모듈(28)은 또한 SKU 파일(30) 내에 제공된 추가 반응 정보에 의해 지시된 바와 같이 설치된 버전에 따라 소정의 반응을 인에이블 또는 디스에이블할 수 있다.
도 1에 도시된 실시예는 소프트웨어 애플리케이션의 버전과 같은 관련된 소프트웨어 제품의 효율적인 배포를 고려한 것이다. 고객에 의해 구매된 버전에 상관없이, 동일한 데이터 저장 매체의 동일한 복사본이 제공될 수 있다. 고객은 고객에게 제공된 제품 키(24)에 기초하여, 고객에게 자격이 주어진 소프트웨어 제품의 버전만을 설치할 수 있다. 실제로, 고객은 하나보다 많은 버전이 매체로부터 설치될 수 있다는 것을 알아차리지 못할 수도 있다. 소프트웨어 개발자는 소프트웨어 제품의 각 버전에 대한 분리된 개별의 저장 매체를 만들어서 목록을 작성하기 보다는, 소프트웨어 제품을 위한 한 세트의 저장 매체만을 개발할 필요가 있다.
도 2는 본 발명의 실시예가 구현될 수 있는 적절한 컴퓨팅 시스템 환경의 한 예를 도시한 것이다. 이 시스템(200)은 웹사이트 서비스를 제공하는 서버로서 기능하기 위해 사용될 수 있는 것을 대표하여 나타낸 것이다. 가장 기본적인 구성에 있어서, 시스템(200)은 전형적으로 최소한 하나의 프로세싱 유닛(202) 및 메모리(204)를 포함한다. 컴퓨팅 장치의 정확한 구성 및 유형에 의존하여, 메모리(204)는 (RAM과 같은) 휘발성, (ROM, 플래시 메모리 등과 같은) 비휘발성, 또는 소정의 그 둘의 조합일 수 있다. 이러한 가장 기본적인 구성은 도 2에 점선(206)으로 도시된다. 부수적으로, 시스템(200)은 또한 추가적인 특징/기능을 가질 수 있다. 예를 들어, 시스템(200)은 또한 자기 또는 광학 디스크 또는 테이프를 포함하는(그러나, 이것에 한정되지 않음) 추가 저장장치(분리형 및/또는 비분리형)를 포함할 수 있다. 이러한 추가 저장장치는 도 2에 분리형 저장장치(208) 및 비분리형 저장장치(210)로 도시된다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함한다. 메모리(204), 분리형 저장장치(208) 및 비분리형 저장장치(210)는 모두 컴퓨터 저장 매체의 예이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광학 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 기타 자기 저장 장치, 또는 원하는 정보를 저장하기 위해 사용될 수 있고 시스템(200)에 의해 억세스될 수 있는 임의의 다른 매체를 포함하는데, 이것에 한정되는 것은 아니다. 임의의 이러한 컴퓨터 저장 매체는 시스템(200)의 일부일 수 있다.
시스템(200)은 또한 시스템이 기타 장치와 통신할 수 있게 하는 통신 접속부(들)(212)을 포함할 수 있다. 통신 접속부(들)(212)은 통신 매체의 한 예이다. 통신 매체는 전형적으로 반송파 또는 기타 전송 메카니즘 등의 변조된 데이터 신호에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터를 구현하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내에 정보를 인코딩하는 방식으로 설정되거나 변환된 특성을 하나 이상 갖는 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속 등의 유선 매체와, 음향, RF, 적외선 및 기타 무선 매체 등의 무선 매체를 포함하지만, 이에 한정되지 않는다. 여기에서 사용된 컴퓨터 판독가능 매체라는 용어는 저장 매체와 통신 매체 양방을 포함한다.
시스템(200)은 또한 키보드, 마우스, 펜, 음성 입력 장치, 접촉식 입력 장치 등과 같은 입력 장치(들)(214)를 가질 수 있다. 디스플레이, 스피커, 프린터 등과 같은 출력 장치(들)(216)가 또한 포함될 수 있다. 이러한 모든 장치는 본 분야에 잘 알려져 있으므로, 여기에서는 더 이상 설명하지 않겠다.
시스템(200)과 같은 컴퓨팅 장치는 전형적으로 최소한 몇몇 형태의 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 시스템(200)에 의해 억세스될 수 있는 임의의 이용가능 매체일 수 있다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만, 이것에 한정되지는 않는다.
본 발명의 실시예는 설명된 기능을 달성하기 위해 함께 동작하는 몇개의 구성요소를 포함하는 것으로 생각될 수 있다. 한 구성요소는 저장 매체이다. 다른 구성요소는 설치될 제품을 식별하는 제품 키이다. 세번째 구성요소는 설치될 제품과 제품 키를 연관시키는 수단이다. 네번째 구성요소는 제품 키를 수신하고, 연관된 제품을 식별하며, 저장 매체를 억세스하고, 제품을 위한 연관된 컴퓨터 코드를 설치하여 적절한 반응을 인에이블 또는 디스에이블하는 인스톨러이다. 이들 각각은 아래에 차례로 설명될 것이다.
이후의 설명에서는, 한 세트의 관련된 소프트웨어 제품들(이들이 소정의 1차 코드를 공유한다는 점에서 관련됨) 중의 한 제품을 나타내기 위해, 더욱 일반적 인용어 "버전"이 사용될 것이다. 그러나, 본 분야에 숙련된 기술자들은, 서로 다른 버전의 특정 예가 설명되더라도, 여기에 설명된 실시예들은 임의의 소프트웨어 제품들이 상이한 버전으로 불리우든, 상이한 배포(release)로 불리우든, 다른 이름으로 불리우든지 간에, 컴퓨터 판독가능 코드의 최소한 일부를 공통으로 갖고 있는 임의의 소프트웨어 제품에 동일하게 적용할 수 있다는 것을 알 수 있을 것이다.
저장 매체
도 3은 본 발명의 한 실시예에 따른 저장 매체(102)의 내용을 도시한 것이다. 도시된 실시예에서는, 컴퓨터 판독가능 데이터 저장 매체(102)가 제공된다. 매체(102)는 컴퓨터에 의해 판독가능한 임의의 형태로 될 수 있으며, CD 또는 DVD와 같은 분리형 광학 데이터 저장 디스크, 마이크로디스크와 같은 플로피 자기 디스크, 하드 드라이브 또는 RAM을 포함하지만, 이것에 한정되는 것은 아니다.
데이터 저장 매체(102)는 컴퓨터에 소프트웨어 제품의 다수의 상이한 버전들 중의 임의의 것을 설치하기에 충분한 컴퓨터 판독가능 코드를 저장한다. 데이터 저장 매체(102)에 저장된 코드는 최소한 2개의 부분으로 나누어질 수 있는데; 하나는 각 버전에 필요한 1차 코드 부분(106)이고, 다른 하나는 각각이 최소한 하나의 버전과 연관되는 코드의 다수의 버전-특정, 또는 2차 부분(103, 104, 105 및 108)이다. 예를 들어, 도 3에 도시된 바와 같이, 소프트웨어 제품의 특정 버전 A를 설치하기 위해서는, 1차 부분(106) 및 버전 A에 특정된 2차 부분(105)이 설치되어야 한다.
이것에 관하여 사용될 때, "버전-특정 부분" 및 "2차 부분"이라는 말은 소프트웨어 제품의 모든 버전들 간에 공유된 1차 부분(106)이 아닌, 버전의 설치를 위해 필요한 코드의 부분을 칭하는 것이다. 버전-특정 부분(103, 104, 105 및 108)은 각 버전마다 서로 구별되지만, 다른 버전의 버전-특정 부분(103, 104, 105 및 108)을 제외할 필요없이, 그러한 버전-특정 부분(103, 104, 105 및 108)의 일부 또는 전부를 포함할 수 있다는 것을 알기 바란다. 예를 들어, 버전 B에 특정된 버전-특정 부분(104)은 다른 버전의 버전-특정 부분(108)의 일부 또는 전부를 포함할 수 있다.
또한 도 3에 도시된 것은 저장 매체(102)에 제공된 인스톨러(114)이다. 인스톨러(114)은 소프트웨어 제품의 어떤 버전을 설치할 것인지 판정한 다음에, 1차 부분(106) 및 적절한 버전-특정 부분 또는 부분들(103, 104, 105 또는 108)을 설치한다.
소프트웨어 제품의 고객에게 인스톨러를 제공하는 대안적인 실시예가 또한 가능하다는 것을 알기 바란다. 예를 들어, 인스톨러(114)은 분리된 저장 매체에 아마도 제품 키와 함께 제공될 수 있다. 인스톨러(114)은 컴퓨터에 미리 설치되거나, 또는 원격으로 저장될 수 있음으로써, 네트워크 접속을 통해 소프트웨어 제품의 설치를 제어할 수 있다.
어떤 코드가 설치되어야 하는 지를 판정하기 위해, 인스톨러(114)은 어떤 코드가 매체(102)로부터 설치할 수 있는 다양한 버전과 연관되어 있는 지를 판정해야 한다. 도시된 실시예에서, 인스톨러(114)은, 인스톨러(114) 내에 연관 정보를 제공하는 것과 같은 다른 실시예가 가능하지만, 연관 SKU 파일(110)을 사용한다. SKU 파일(110)은 저장 매체(102)에 제공되고, 상이한 버전 식별자들을 적절한 버전-특정 부분들(103, 104, 105 및 108)과 연관시키는 정보를 포함한다. 버전 식별자는 예를 들어 제품 키(24)의 형태로, 버전 설치 동안의 소정 시점에서 소프트웨어 고객에 의해 제공된다.
상기 설명에서, SKU 파일(110)은 그 자체에 버전-특정 코드(103, 104, 105 및 108)의 일부 또는 전부를 포함할 수 있다는 것을 주지하는 것이 중요하다. 예를 들어, SKU 파일(110)의 실시예는 여러가지 버전을 어떻게 설치할 것인지, 어떤 반응이 각 버전마다 인에이블되어야 하는지 등에 관한 특정 명령어를 포함할 수 있다. 부수적으로, 몇몇의 대안적인 실시예에서, SKU 파일(110)은 버전 특정 코드(103, 104, 105 또는 108)의 저장소로서 런타임 동안에 사용하기 위한 소프트웨어 제품의 모든 버전이 설치될 수 있다.
도시된 실시예에서, 1차 코드(106) 및 2차 코드(103, 104, 105 및 108)는 개별의 분리된 파일로서 제공될 수 있다. 상술된 SKU 파일(110)의 실시예와 같은 대안적인 실시예에서, 몇몇의 2차 코드(103, 104, 105 및 108)는 1차 코드(106) 파일이 고려될 수 있는 것 내에 상주할 수 있다. 한 예는 하나 이상의 소프트웨어 제품에 특정된 개별의 데이터를 포함하는 데이터 저장 매체(102)에 포함된 룩업 테이블과 같은 단일 파일이다. 소프트웨어 제품의 주어진 버전의 설치 시에, 인스톨러는 룩업 테이블을 억세스하고, 버전에 특정된 테이블 내에 포함된 2차 코드를 추출하여, 컴퓨터에 필요한 버전-특정 코드를 복사할 수 있다. 룩업 테이블 자체가 설치 동안에 사용되고 모든 소프트웨어 제품에 필요한 데이터를 포함하는 주 파일이라 하더라도, 단지 버전-특정 데이터 요소들 및 코드만이 실제로 설치된다.
또 다른 실시예는 1차 코드(106)와 함께 설치되는, SKU 파일(110)과 같은 단일 파일 내에 모든 2차 코드(103, 104, 105 및 108)를 제공하는 것이다. 상기 실시예에서, 설치된 버전은, 소정의 버전에 필요한 모든 코드가 설치 동안에 컴퓨터에 복사되었을 지라도, 여전히 제품 식별자에 의해 판정된다. 이 실시예에서, 인스톨러는 모든 코드를 설치하지만, 그 버전에 특정된 반응의 세트만을 인에이블한다.
상술된 저장 매체의 한 실시예는 소프트웨어 제품의 다수의 상이한 버전을 설치하는데 필요한 모든 소프트웨어를 포함하는 CD-ROM 디스크 또는 디스크 세트일 수 있다. 한 예로서 Microsoft® Word®와 같은 워드 프로세서 애플리케이션을 예로 들면, 저장 매체는 워드 프로세서 애플리케이션의 전문가용 버전, 가정용 버전, 학생 및 교사용 에디션 및 외국어 에디션의 소매용 버전 및 OEM 버전을 설치하는데 필요한 모든 소프트웨어를 포함할 수 있다. 소매용 버전 및 OEM 버전 이외에, 저장 매체는 저장 매체가 억세스가능한 상이한 운영 체계들(Windows®, Apple®, Unix 등) 중의 임의의 운영체계용 워드 에디션(Word edition)을 포함할 수 있다.
제품 키
도 4는 본 발명에 따른 제품 키(400)의 한 실시예를 도시한 것이다. 제품 키(400)는 각 세트가 하이픈으로 분리된 5개의 영숫자 문자의 5개 세트(402, 404, 406,408 및 410)의 형태로 되어 있다. 문자들의 처음 2개의 세트(402 및 404)는 때로 페이로드(payload)라고 칭해지는 제품 식별자(412)를 함께 형성한다. 문자들의 마지막 3개의 세트(406, 408 및 410)는 디지털 서명(414)을 형성한다.
디지털 서명(414)은 제품이 유효한 제품 키이고 소프트웨어 개발자로부터 발행되었는 지를 검증하기 위해 제공된다. 양호하게, 인스톨러는 인스톨러가나 저장 매체에 제공된 추가 정보 또는 네트워크 접속을 통해 연결된 서버로부터 제공된 추가 정보로 서명을 검증할 수 있다.
제품 식별자(412)는 어떤 버전이 설치되어야 하는 지를 인스톨러가 알게 하기 위해 제품 키(400)가 인스톨러에 제공하는 데이터를 나타낸다. 제품 식별자(412)의 실시예는 제품을 식별하는데 필요한 여러 정보를 포함할 수 있다. 한 실시예에서, 제품 식별자(412)는 소프트웨어 제품 또는 제품 패밀리를 식별하는 그룹(Group) ID, 및 소프트웨어 제품의 특정 버전을 식별하는 채널(Channel) ID를 포함한다. 예를 들어, 5의 그룹 ID는 워드프로세서 제품일 수 있고, 777의 채널 ID는 제품의 소매용인 가정용 버전을 식별할 수 있다. 또한, 제품 식별자는 일련 번호를 포함할 수 있다.
특정 제품과 제품 키의 연관
본 분야에 숙련된 기술자는 저장 매체의 특정 내용과 제품 식별자를 연관시키는 여러가지 방식이 있다는 것을 바로 인식할 수 있을 것이다. 아래의 설명은 상술된 바와 같이 제품 키(400) 내에 제공된 것과 같은 제품 식별자(412)를 저장 매체의 적절한 내용과 연관시키기 위해 제공되는 SKU 파일(110)과 같은 단일의 컴퓨터 판독가능 파일의 한 실시예를 나타낸 것이다. 또한, 파일은 버전의 설치 및 동작 중에 인에이블되거나 디스에이블되어야 하는 각 버전의 설치 및 런타임 반응을 지시하거나 식별할 수 있다. 이 실시예에서, 파일은 인스톨러에 의해 억세스가능한 XML 파일이다. 이 설명은 제품 식별자를 소정의 내용과 연관시키고 반응이 가능한 다른 많은 실시예와 같은 이러한 특정 실시예에 본 발명의 범위를 제한하는 것으로 간주되어서는 안된다.
도 5는 상술된 실시예에서의 제품 식별자(412)를 특정 소프트웨어 제품 및 제품의 버전과 연관시키는 SKU 파일(110) 내에 포함된 테이블(500)의 한 실시예를 나타낸 것이다.
도 5에 도시된 테이블(500)은 SKU 테이블(500)이라고 칭해진다. 도시된 실시예에서, 그룹 ID(506)의 열(column)이 제공되고, 각 그룹 ID는 특정 제품을 나타낸다. 채널 ID는 범위를 식별하는 2개의 열로서; 즉 범위의 로우 엔드(low end)를 포함하는 열(508) 및 범위의 하이 엔드(high end)를 포함하는 열(510)로서 룩업 테이블(510) 내에 포함된다. 그 다음은 채널 ID 열(508, 510)에 의해 표시된 범위에 대해 유효한 일련 번호의 시퀀스 번호를 포함하는 열(512)이다.
브랜딩 열(514)이라고 칭해지는 또 다른 열(514)은 제품의 버전이 사용자에게 제시되는 방법에 관해 특정된 정보를 식별하는 브랜드 ID를 포함한다. 이것은 도 6의 브랜딩 테이블과 관련하여 더욱 상세하게 설명될 것이다.
도시된 마지막 열(516)은 제품이 소매용 제품인지 OEM 제품인지 나타내는 표시자이다. 이 열은 맵핑 열(516)이라고 칭해지고, 각 제품 버전에 특정된 맵핑 식별자를 포함한다. 몇몇 실시예에서, 맵핑 열 내의 정보는 도 8에 도시된 맵핑 테이블과 함께 사용되어, 제품의 적절한 EULA(End-User License Agreement; 최종 사용자 라이센스 계약)를 식별할 수 있다.
맵핑 식별자는, 후술되는 바와 같이 EULA를 식별하기 위해 사용될 수 있는 것 이외에, 또한 컴퓨터에 설치된 소프트웨어의 특정 기능의 인에이블먼트(enablement)를 지시할 수 있다. 예를 들어, OEM 제품은 전형적으로 설치 시에 사용자에게 제품 키에 대해 요청 및 프롬프팅하지 않는다. 오히려, OEM 제품은 제품의 첫번째 실행시에(전형적으로 컴퓨터가 최종 사용자에게 판매된 후에) 이 정보에 대해 프롬프팅한다. 한편, 소매용 제품은 전형적으로 설치 프로세스의 일부로서 제품 키를 요구한다. 개별의 버전을 구성하는 한 세트의 반응 또는 한 버전과 제품 식별자를 연관시키는 테이블(500) 또는 이와 유사한 구조의 추가 실시예는 본 분야에 숙련된 기술자에게 바로 제안될 수 있다. 도 5에 제공된 실시예는 단지 한 예로서 제공된 것이지, 본 발명의 범위를 제한하는 것으로 간주되어서는 안된다.
도 6은 브랜딩 테이블(600)의 한 실시예를 나타낸 것이다. 브랜딩 테이블은 제품의 실행 및 설치 동안에 어떤 텍스트 및 GUI가 표시되어야 하는지에 관한 정보를 포함한다. 예를 들어, 워드프로세서의 "학생 및 교사용 에디션"은, 사용시에, 또는 초기 실행시에, 또는 몇몇 제품에서의 "Help/About" 풀다운 메뉴를 통해 찾을 수 있는 것과 같은 제품 특정 정보 페이지에, "학생 및 교사용 에디션"이라는 문구가 제품의 타이틀 바에 나타나야 하는 브랜딩 테이블 내에서 식별할 수 있다.
도 6에 도시된 브랜딩 테이블(600)의 실시예에서, 인코딩되지 않은 텍스트는 설치 또는 런타임 동안에 사용자에게 보여지는 GUI에서 사용하기 위해 제공된다. 제1 ID 열(602)이 제공되어, 각 브랜드화 버전용의 브랜딩 ID를 포함한다. 명칭 열(604)이 제공되어, 브랜딩 ID에 의해 식별된 브랜드용의 인코딩되지 않은 명칭을 포함한다. 버전 열(606)이 제공되어, 브랜딩의 버전을 식별한다. 도 6에 도시된 실시예에서, 테이블(600)은 또한 설치 또는 런타임 동안에 사용자에게 표시되는 GUI 및 화면 내에 포함된 상이한 필드에서 사용하기 위한 인코딩되지 않은 텍스트를 포함하는 2개의 필드 열(608 및 610)을 포함한다. 브랜딩 정보를 포함하고 제공하기 위한 브랜딩 테이블(600) 또는 이와 유사한 구조의 추가 실시예는 본 분야에 숙련된 기술자에게 바로 제안될 수 있다. 도 6에 제공된 실시예는 단지 한 예로서 제공된 것이지, 본 발명의 범위를 제한하는 것으로 간주되어서는 안된다.
도 7은 EULA들을 저장하기 위한, SKU 파일(110)과 같은 파일 내에 포함된 다른 테이블의 실시예를 나타낸 것이다. 도 5에 도시된 실시예에서, 각 버전은 특정 EULA와 연관된다. 전형적으로, 상이한 개별의 EULA는 소프트웨어 제품의 여러가지 버전에 적용된다. SKU 파일(110)의 실시예는 설치될 수 있는 여러가지 버전용의 EULA를 포함하고 그 여러가지 버전과 각 EULA를 연관시키는 테이블(700)을 포함할 수 있다. EULA 테이블(700)은 한 열(702)에는 EULA 식별자를 갖고있고, 다른 한 열(704)에는 베이스(base) 64 인코딩된 EULA를 포함하는 단순한 2열 테이블이다. 인스톨러는 파일 내의 하나 이상의 다른 테이블(500, 600 및 800)을 참조함으로써 적절한 EULA 식별자를 얻는다. 이때 EULA 테이블(700)의 사용은 설치 동안에 컴퓨터에 디코딩된 형태로 저장하기 위한 적절한 EULA를 추출하여 디코딩한다. 소프트웨어 제품의 여러가지 버전에 특정된 EULA를 식별하여 제공하기 위한 EULA 테이블(700) 또는 이와 유사한 구조의 추가 실시예는 본 분야에 숙련된 기술자에게 바로 제안될 수 있다. 도 7에 제공된 실시예는 단지 한 예로서 제공된 것이지, 본 발명의 범위를 제한하는 것으로 간주되어서는 안된다.
도 8은 SKU 파일(110) 내에서 찾을 수 있는 다른 테이블인 맵핑 테이블(800)을 나타낸 것이다. 도시된 실시예에서, 맵핑 테이블(800)은 테이블(800)에 리스트되어 있고 저장 매체에 저장되었을 수도 있는 소프트웨어 제품의 여러가지 버전의 소정의 반응을 식별한다. 맵핑 테이블(800)은 맵핑 식별자용의 제1 열(802) 및 각 맵핑 식별자와 연관된 EULA ID용의 제2 열(804)을 포함한다. 또한, 맵핑 테이블(800)은 다른 반응을 식별하는 추가 열을 포함한다.
"LPK" 열(806)이 제공되어, 따로 설치될 수 있는 언어 팩으로서 공지되어 있는 확장 언어 세트를 위해 소프트웨어 제품의 버전이 인에이블되는 지를 식별한다. "LPK" 특성은 "예"로 설정되면, 사용자가 원하는 경우 나중에 언어 팩이 설치될 수 있게 한다. "아니오"로 설정되면, 언어 팩의 설치를 차단한다. 설치되어 인에이블되면, 사용자는 이들 추가 언어 및 특징으로 억세스할 수 있다.
"ADMIN?" 열(808)이 포함되어, 사용자에게 설치 동안에 관리자 설치를 행하여 소프트웨어 제품의 구성을 맞춤화할 수 있게 하는 지를 식별한다. "ADMIN" 특성은 "예"로 설정되면, 사용자가 원하는 경우 설치를 맞춤화하기 위해 관리자 설치를 할 수 있게 한다. "아니오"로 설정되면, 이 기능은 차단된다.
"Quiet Install?" 열(810)은 설치 동안에 화면이 사용자에게 표시되지 않는 인스톨이 인에이블되는 지를 식별한다. 'Quiet' 인스톨이 행해지면, 제품 키는 커맨드 라인을 통하는 것과 같은 대안적인 방법을 통해 패스될 수 있고, 그렇지 않으면 설치는 실패할 수 있다. 이러한 상황에서, 저장 매체(102)는 소프트웨어가 이미 제공되어 있는 컴퓨터의 하드 드라이브일 수 있다는 것을 알기 바란다.
"Referral?" 열(812)은 여기에서 즉시 액션을 하는 유일한 특성으로서, "예"로 설정되면 참조 코드를 표시하고, "아니오"로 설정되면 숨길 수 있다. 요구되는 사용자 판정은 하나도 없다.
맵핑 테이블(800)의 대안적인 실시예는 SKU 테이블(500)의 맵핑 열(516)에서 찾은 식별자를 EULA ID와 연관시키는 또 다른 단순한 2열 테이블일 수 있다. 맵핑 테이블은 맵핑 식별자용의 제1 열(802) 및 각 맵핑 식별자와 연관된 EULA ID용의 제2 열(804)을 포함한다. 버전에 포함된 반응을 식별하기 위한 맵핑 테이블(800) 또는 이와 유사한 구조의 추가 실시예는 본 분야에 숙련된 기술자에게 바로 제안될 수 있다. 도 8에 제공된 실시예는 단지 한 예로서 제공된 것이지, 본 발명의 범위를 제한하는 것으로 간주되어서는 안된다.
본 발명의 실시예에서, SKU 파일(110)은 설치 프로세스의 일부로서 컴퓨터에 전체로서 복사되었다. 다른 실시예에서, 그것은 참조되어, (EULA, 소정의 브랜딩 정보 등과 같은) 파일 내용의 선택된 부분만이 설치 동안에 컴퓨터에 복사된다. 본 분야에 숙련된 기술자는, 제품 식별자를 특정 브랜딩, 맵핑 및 EULA 반응와 연관시키는 파일을 제공하는 여러가지 상이한 방식이 가능하다는 것과, 상술된 것은 한 예일 뿐이라는 것을 알 수 있을 것이다. 또한, 본 분야에 숙련된 기술자는, 상술된 SKU 파일과 같은 파일을 제공하는 것 이외에, SKU 파일에 의해 실행되어 지원된 동일한 기능을 실행하고 지원하기 위한 유사하고 기능적으로 대등한 여러가지 방식이 있다는 것을 알 수 있을 것이다.
인스톨러
본 발명의 실시예에 따른 인스톨러(114)는 제품 키(400) 내의 제품 식별자(412)와 같은 제품 식별자를 수신하고, 버전을 식별하며, 저장 매체로부터 적절한 컴퓨터 코드를 설치하여 적절한 특징을 인에이블링함으로써 제품 식별자와 연관된 버전을 설치할 수 있는 컴퓨터 실행가능 프로그램 또는 객체이다. 한 실시예에서, 인스톨러(114)은 제품 및 그 버전에 대한 컴퓨터 코드를 저장하는 저장 매체에 실행가능 파일 SETUP.EXE와 같은 추가 컴퓨터 코드로서 제공될 수 있다. 인스톨러(114)은 디스크 드라이브와 같은 판독 장치 내로의 매체의 삽입 시에 제2 파일 명칭 AUTORUN.INF의 액션을 통해 자동으로 착수될 수 있다. 다른 실시예에서, 인스톨러(114)은 컴퓨터에 이미 존재하거나 또는 원격 서버로부터 네트워크를 통해 억세스가능한 유틸리티이다.
몇몇 실시예에서, 유효한 제품 식별자의 엔트리 시에, 인스톨러(114)은 SKU 파일(110) 내의 정보를 사용하여, 소프트웨어 제품의 어떤 버전을 설치할 것인지를 판정한다. SKU 테이블(500) 내의 정보, 및 파일 내의 다른 테이블(600, 700 및 800)로부터 얻어진 추가 정보에 기초하여, 인스톨러(114)은 저장 매체(102)로부터 적절한 코드를 설치하고, 식별된 버전을 위한 적절한 반응을 인에이블한다. 대안적인 실시예에서, 인스톨러(114)은 SKU 파일(110), 1차 코드버전을 위한 적절한 버전-특정 코드(만일 있다면, SKU 파일(110) 내에 포함된 것 이외의 것)를 컴퓨터에 복사한 다음에, 설치되는 버전에 기초하여 컴퓨터 상의 레지스트리(registry)를 갱신한다.
설치된 제품의 각 버전은 최소한 한가지 점에서, 그리고 통상적으로 더 많은 점에서 상이한 반응을 갖는다. 예를 들어, 추가 언어 팩(GUI가 사용할 수 있는 외국어 세트)은 국제 공동 버전으로 인에이블되어 제공될 수 있다. 상술된 학생용 버전과 같은 특정 브랜딩이 포함되어, GUI의 일부를 변경할 수 있다. 상이한 EULA는 각 버전에 적용할 수 있을 것이다. 상이한 버전은 스펠 검사, 폰트 제어 등과 같은 상이한 유형 또는 번호의 기능을 포함할 수 있다. 또한 상술된 것은 OEM 및 소매용 제품에 대해 설명된 것과 같은 설치 동안의 상이한 반응이다. 본 분야에 숙련된 기술자는 반응이 소프트웨어 제품들의 버전의 설치 또는 동작 간의 소정의 차이를 나타내기 위해 여기에서 넓게 사용된다는 것을 알 수 있을 것이다.
도 5-8을 참조하여 설명된 SKU 파일(110)의 실시예에서, 유효한 제품 식별자의 엔트리 시에, 인스톨러(114)은 SKU 테이블(500) 내의 정보를 사용하여, 소프트웨어 제품의 어떤 버전을 설치할 것인지 판정한다. SKU 테이블(500) 내의 정보, 및 파일 내의 다른 테이블(600, 700 및 800)로부터 얻어진 추가 정보에 기초하여, 인스톨러(114)은 저장 매체(102)로부터 적절한 코드를 설치하고, 식별된 버전을 위한 적절한 반응을 인에이블한다.
SKU 파일(110)이 컴퓨터에 전체로서 복사되는 대안적인 실시예에서, 설치된 버전의 몇몇 반응은 SKU 파일(110) 내에 포함된 정보에 기초하여 인에이블되거나 디스에이블될 수 있다. 이 경우에, 인스톨러(114)은 SKU 파일을 참조하기 위해 SKU 파일(110)을 복사할 뿐만 아니라 레지스트리를 갱신한다. 버전의 실행 시에, SKU 파일(110)이 참조되어, 예를 들어 버전에 기초한 브랜딩 테이블(600)로부터, 정보가 추출될 수 있다.
본 발명의 여러가지 실시예의 논리적 동작은 (1) 컴퓨터 시스템 상에서 실행되는 일련의 컴퓨터 구현 액트 또는 프로그램 모듈로서, 및/또는 (2) 컴퓨팅 시스템 내의 상호접속된 기계 논리 회로 또는 회로 모듈로서 구현된다. 구현은 본 발명을 구현하는 컴퓨팅 시스템의 성능 요구조건에 따라 달라지는 선택 사항이다. 따라서, 여기에 설명된 본 발명의 실시예를 구성하는 논리적 동작은 동작, 구조 장치, 액트 또는 모듈로서 다양하게 언급된다. 본 분야에 숙련된 기술자는 이들 동작, 구조 장치, 액트 및 모듈이 첨부된 청구범위에서 설명된 본 발명의 범위를 벗어나지 않고서 소프트웨어, 펌웨어, 전용 디지털 논리, 및 이들의 소정의 조합으로 구현될 수 있다.
도 9는 본 발명에 따른 소프트웨어를 설치하는 논리적 동작의 실시예(900)를 나타낸 것이다. 수신 동작(902)에서, 사용자 커맨드가 수신되어 컴퓨터에 소프트웨어를 설치하라는 명령을 한다. 수신된 커맨드는 컴퓨터 내의 매체 판독 장치 내로 CD와 같이 사용자가 삽입하는 저장 매체의 형태를 가질 수 있다. 새로운 저장 매체의 삽입에 응답하여, 컴퓨터는 CD 상에서 일반적인 AUTORUN.INF와 같은 파일을 자동으로 실행하여, 사용자에게 질문함으로써 저장 매체에 저장된 소프트웨어를 설치한다. 대안적인 실시예에서, 커맨드는 컴퓨터에 접속된 디스플레이에 표시된 "설치 소프트웨어" 아이콘의 사용자 선택일 수 있다. 커맨드는 소프트웨어가 설치되도록 컴퓨터에 의해 수신되거나, 또는 네트워크 접속을 통해 원격 서버에 의해 수신될 수 있다.
실시예는 또한 인스톨러를 실행하는 실행 동작(904)을 포함한다. 실행 동작(904)은 다른 동작에 관련하여 소정의 시기에 발생할 수 있다. 예를 들어, 상술된 CD와 같은 저장 매체를 삽입할 때, 매체는 억세스되고(아래의 억세스 동작(906)에 관한 설명 참조), AUTORUN.INF는 수신 동작(902)시에 사용자 커맨드를 수신하기 이전에 SETUP.EXE 파일 내에 포함된 것과 같은 인스톨러를 실행할 수 있다.
실행 동작(904)은 인스톨러를 식별하여 실행한다. 인스톨러는 설치될 컴퓨터 코드와 함께 저장 매체에 저장될 수 있다. 대안적으로, 인스톨러는 컴퓨터에 위치하거나, 또는 네트워크를 통해 컴퓨터에 접속된 서버에 위치할 수 있다. 인스톨러의 위치에 상관없이, 인스톨러는 인스톨러 설명과 관련하여 상술된 바와 같이 저장 매체로부터 소프트웨어를 설치하도록 동작할 수 있다.
억세스 동작(906)은 설치될 소프트웨어를 포함하는 저장 매체를 위치시키고 억세스한다. 한 실시예에서, 억세스 동작(906)은 삽입되거나 그렇지 않으면 컴퓨터에 직접 접속된 저장 매체 상의 컴퓨터 코드 및 억세스 파일을 포함한다. 다른 실시예에서, 인스톨러는 네트워크 접속을 통해 이용가능한 저장 매체의 선택으로부터 저장 매체를 식별한다. 또 다른 실시예에서, 사용자에게 직접 접속된 저장 매체 및 네트워크를 통해 이용가능한 분리된 저장 매체가 억세스된다. 이것은 약간의 버전 변경이 있거나, 또는 삽입가능한 저장 매체에 저장되지 않은 소정의 추가 정보가 요구되는 경우에 유용하다.
어떤 경우에, 억세스 동작(906)시에 억세스된 저장 매체는 관련된 소프트웨어 제품들 중의 선택된 임의의 제품을 설치하는데 필요한 컴퓨터 코드를 포함한다. 이러한 제품의 예는 동일한 주 소프트웨어를 사용하는 다수의 버전 또는 버전들, 소프트웨어 제품들을 갖는 소프트웨어 애플리케이션을 포함한다. 그러므로, 저장 매체는 어떤 소프트웨어가 궁극적으로 설치되는지에 상관없이 설치될 컴퓨터 코드의 몇몇의 제1 부분, 및 각각이 소프트웨어의 한 부분과 연관된 컴퓨터 코드의 다수의 제2 부분을 포함한다.
판정 동작(908)은 설치될 소프트웨어를 식별하고, 사용자에게 그 소프트웨어를 설치할 자격이 주어졌는지 검증한다. 판정 동작의 단순한 실시예는 저장 매체 상의 이용가능한 소프트웨어의 것을 식별하는 사용자에 의한 선택이다. 더욱 확실한 실시예는 식별된 소프트웨어에 대한 사용자의 자격을 검증하는 사용자로부터의 소정 형태의 정보를 수신하는 것을 포함할 수 있다. 이것은, 예를 들어 원격 서버에 의해 생성된 리시트(receipt)로부터, 제품 키, 제품 식별자, 또는 소정의 다른 코드를 입력하는 것을 포함할 수 있다. 또한, 판정 동작(908)은 네트워크를 통해 접속된 검증 서버와 같은 제2 컴퓨터와의 상호작용을 포함할 수 있다.
판정 동작(908)의 한 실시예는 몇가지 서브(sub)-동작을 포함한다. 한 동작은 자격 또는 식별 정보에 대해 사용자에게 프롬프팅하는 요청 동작(910)이다. 요청 동작(910)의 한 예는 소프트웨어의 특정 버전을 식별하고 제품 키를 검증하는 검증 정보를 포함하는 상술된 제품 키(400)와 같은 제품 키에 대한 요청이다. 예를 들어, 사용자에게는 그러한 용도로 제공된 필드 내로 제품 키를 입력하라고 요구될 수 있다. 요청된 정보는 저장 매체용 패키징과 함께 포함될 수 있다. 예를 들어, 제품 키는 저장 매체용 보호 케이스(protective case)에 제공될 수 있다. 대안적으로, 제품 키는 리시트와 함께 제공되거나, 또는 네트워크를 통해 제품 키 서버로부터 제공될 수 있다.
제2 서브-동작은 요청된 정보가 수신되는 제2 수신 동작(912)이다. 수신된 정보는 상술된 제품 키의 형태일 수 있다. 또한, 수신된 정보는 특정 인스톨러만이 억세스되어 정보를 복호화할 수 있도록 인코딩될 수 있다.
제3 서브-동작은 제2 수신 동작(912)시에 수신된 정보를 검증하는 검증 동작(914)이다. 검증 동작(914)은 사용자가 식별한 소프트웨어의 자격이 사용자에게 주어졌다는 것을 수신된 정보가 증명하는 것을 검증한다. 검증 동작(914)은 사용자에 의해 입력되어 제2 수신 동작(912)시에 수신된 제품 키와 같은 수신 정보를 복호화하는 것, 및 그 다음에 복호화된 정보로부터 정보를 추출하고 식별하여 검증하는 것을 포함할 수 있다.
판정 동작(908)은 또한 연관 동작(920)을 포함할 수 있다. 연관 동작(920)시에, 설치될 소프트웨어와 연관된 코드(구체적으로, 제2의 버전-특정 코드)가 식별된다. 연관 동작(920)의 실시예는 식별된 소프트웨어를 그 구성 코드와 연관시키기 위해 SKU 테이블(500)과 같은 룩업 테이블 및/또는 SKU 파일(110)과 같은 파일의 사용을 요구할 수 있다. 룩업 테이블 및/또는 파일은 설치될 소프트웨어를 포함하는 저장 매체에 저장될 수 있다. 대안적으로, 룩업 테이블은 사용자에게 미리 제공되어 컴퓨터에 저장될 수 있거나, 또는 네트워크를 통해 컴퓨터에 접속된 원격 서버에 위치될 수 있다.
사용자에게 소프트웨어의 자격이 주어지면, 설치 동작(916)은 컴퓨터에 소프트웨어를 설치한다. 설치 동작(916)은 소프트웨어를 설치하는데 필요한 컴퓨터의 내부 저장 장치 또는 장치들에 연관된 컴퓨터 코드를 복사하는 것을 포함할 수 있다. 예를 들어, 모든 소프트웨어에 의해 요구된 컴퓨터 코드의 제1 부분 및 식별된 소프트웨어와 연관된 제2 부분이 복사된다. 실시예에서, 룩업 테이블 및/또는 SKU 파일이 또한 복사될 수 있다. 테이블은 설치동안에 연관된 코드를 식별하는데 필요할 뿐만 아니라 설치후 소프트웨어의 동작 중에 여러가지 반응을 식별하는데 필요하게 될 수 있다.
설치 동작은 또한 컴퓨터에 설치된 소프트웨어의 레지스트리를 갱신하는 것을 포함할 수 있다. 특정 데이터 또는 정보는 저장 매체로부터 컴퓨터 상으로 복사된 정보를 포함하거나 식별하는 레지스트리 내로 복사될 수 있다. 레지스트리에 기입된 이 데이터는 제품 식별자에 의해 식별된 소프트웨어에 적절하게 설치된 소프트웨어의 반응을 인에이블 또는 디스에이블할 수 있다.
상술된 동작을 통해, 사용자는 설치되어 이용할 수 있는 소프트웨어 제품이 하나보다 많다는 것을 알아차리지 못할 수도 있다는 것을 알기 바란다. 그러므로, 수신 동작(902)은 특정 소프트웨어 제품을 설치하기 위한 특정 커맨드라기 보다는, 소프트웨어를 설치하기 위한 일반적인 커맨드를 수신하는 것으로 해석될 수 있다. 그 경우에, 사용자에게로의 프롬프트는 저장 매체 상의 모든 소프트웨어를 기술한 것으로 생각될 수 있는 일반적인 말로 단지 소프트웨어에 주의를 돌릴 수 있는 일반적인 프롬프트이다. 그러므로, 사용자가 제품 키 또는 다른 자격 정보를 입력할 때, 사용자는 제품이, 자격을 검증하는데 필요한 정보를 제공하는 것 뿐만 아니라, 설치될 소프트웨어 및 사용자에게 자격이 있는지를 식별한다는 것을 알지 못할 수 있다. 그러나, 사용자 자격의 검증시에, 설치 동작(916) 및 소정의 다른 후속 동작은 더 이상 일반적일 필요는 없으며, 식별된 소프트웨어 제품에 유일한 브랜딩 텍스트를 갖는 화면 및 정보를 사용자에게 제시할 수 있다.
도 10은 본 발명에 따라 고객에게 다수의 버전을 갖는 소프트웨어 제품을 배포하는 실시예의 논리적 동작(1000)을 도시한 것이다. 도 10을 참조하면, 각 버전은 관련되기 하지만 분리된 개별의 소프트웨어 제품으로 칭해질 수 있다. 도시된 실시예에서, 배포는 저장 매체의 다수의 동일한 또는 거의 동일한 복사본이 생성되거나, 제조되거나, 이와 다르게 제공되는 생성 동작(1002)에서 시작된다. 거의 동일함에 따라, 각 저장 매체는 일련 번호와 같은 소정의 특정 식별 정보 또는 기타 매체 특정 정보를 포함할 수도 있다는 것을 알 수 있다. 그러나, 최소한 저장되어 있는 소프트웨어 제품에 관하여, 저장 매체는 동일하게 복사본을 포함한다.
아마도 생성 동작(1002)의 일부로서, 연관 동작(1004)은 저장 매체 상의 각 소프트웨어 제품을, 모든 소프트웨어 제품에 의해 요구되는 컴퓨터 코드의 공통 부분 및 그 소프트웨어 제품에 요구되는 코드의 제2 부분과 연관시킨다. 예를 들어, 한 소프트웨어 제품용의 특정 EULA는 그 소프트웨어 제품과 연관된 컴퓨터 코드의 제2 부분 내에 포함될 수 있다.
연관 동작(1004)은 SKU 파일 내와 같은 하나의 룩업 테이블 또는 테이블 세트를 작성하는 것을 포함할 수 있다. 테이블은 저장 매체에 저장되거나, 또는 사용자가 저장 매체로부터 소프트웨어를 설치할 수 있게 하는 (후술되는) 자격 동작(100)의 일부로서 사용자에게 제공될 수 있다.
패키징 동작(1006)이 도시된 바와 같이 포함될 수 있다. 패키징 동작(1006)은 고객에게 전송하여 판매하기 위한 패키징 내로 저장 매체를 패키징할 수 있다. 또한, 패키징 동작(1006)은 매체에 실제로 저장된 소프트웨어 제품의 소정의 서브셋(subset)을 각각 식별하는 상이한 패키징 내로 소정의 저장 매체를 패키징하는 것을 포함할 수 있다. 예를 들어, 소프트웨어 애플리케이션의 다수의 버전이 저장 매체에 포함될 수 있을 지라도, 전문가용 에디션 또는 가정용 에디션과 같이 하나만이 식별될 수 있다.
고객이 본 발명에 따라 배포된 소프트웨어를 설치하기 위해서는, 고객이 소프트웨어 제품을 억세스하여 설치할 수 있게 하는 저장 매체에 포함된 특정 버전을 식별하여 고객에게 그 특정 버전의 자격을 주는 제품 키와 같은 자격 정보가 고객에게 제공되어야 된다. 자격 정보 제공 동작(1008)이 도시된다. 자격 정보 제공 동작(1008)은 저장 매체로부터 소프트웨어 제품을 설치하는데 필요한 고객 키 또는 기타 정보를 고객에게 제공한다. 이러한 정보를 제공하는 다수의 상이한 방식은 위에서 설명되었으며, 본 분야에 숙련된 기술자에게 즉시 더 많이 제안될 수 있다. 예를 들어, 자격 정보는 패키징과 함께 제공될 수 있다. 패키징이 단일 소프트웨어 제품만을 식별하는 경우에, 제공된 자격 정보는 소프트웨어 제품을 식별하고, 패키징에 식별된 소프트웨어 제품만을 설치할 자격을 고객에게 줄 수 있다. 이 경우에, 자격 정보는 저장 매체의 패키징의 일부로서 간주될 수 있다. 리시트 또는 온라인 구매 프로세스의 일부로서 자격 정보를 제공하는 것과 같은 다른 방법이 또한 고려될 수 있다. 후자의 경우, 배포된 저장 매체를 갖는 고객은 단순히 구매하거나 그렇지 않으면 원하는 소프트웨어 제품에 대한 유효한 제품 키를 얻음으로써 저장 매체 상의 소프트웨어 제품들 중의 임의의 것을 설치할 수 있다.
자격 정보 이외에, 설치 동작(1010)의 제공은 자격 정보를 검증하고, 자격이 주어진 소프트웨어 제품 및 그와 연관된 컴퓨터 코드의 제2 부분을 식별하며, 제1 부분 및 식별된 제2 부분을 설치할 수 있는 인스톨러를 고객에게 제공한다. 인스톨러는 실시예에 따라 다수의 상이한 방식으로 제공될 수 있다. 예를 들어, 인스톨러는 저장 매체에 포함하여 제공될 수 있다. 그러므로, 고객이 저장 매체를 가지면, 인스톨러는 또한 자동적으로 제공될 수 있다. 인스톨러는 또한 자격 정보 제공 동작(1008)의 일부로서 고객에게 제공될 수 있다. 예를 들어, 배포된 저장 매체를 갖는 고객은 원하는 소프트웨어 제품에 대한 유효한 제품 키와 함께 인스톨러를 얻을 수 있다. 인스톨러는 작은 프로그램이므로, 이것은 저장 매체를 무료로 배포할 때 저작권 침해를 방지하는 효율적인 방법일 수 있다. 인스톨러는 저장 매체로의 억세스를 갖는 사람들이 구매 고객으로부터 인스톨러를 얻지 못하도록, 한번만 사용하거나 또는 하나의 컴퓨터에서만 검증될 수 있다.
인스톨러 동작(1010)의 제공은 이들의 설치 및 런타임 반응에 의해 각 소프트웨어 제품을 식별하는 룩업 테이블 또는 테이블들을 제공하는 것을 포함할 수 있다. 룩업 테이블의 예는 도 5-8과 관련하여 설명된 것들이다. 룩업 테이블은 연관 동작(1004)의 일부로서 생성되어, 생성 동작(1002)시에 저장 매체에 저장될 수 있다. 룩업 테이블은 각 소프트웨어 제품의 설치 및 런타임 반응을 식별하거나, 각 제품용 EULA를 식별하거나, 또는 각 소프트웨어 제품용의 특정 사용자 인터페이스를 식별할 수 있는 정보를 포함할 수 있다. 룩업 테이블의 일부 또는 전부는 복사되거나 그렇지 않으면 설치되어야 하는 컴퓨터 코드의 공통된 제1 부분의 일부로 간주될 수 있고, 또는 룩업 테이블은 설치 동안에 컴퓨터에 복사될 필요가 있는 테이블로부터의 데이터가 하나도 없는 경우에 인스톨러의 일부로 간주될 수 있다. 최종적으로, 테이블의 몇몇 부분은 모든 소프트웨어 제품에 공통될 수 있지만, 다른 부분들은 저장 매체에 포함된 소프트웨어 제품의 몇몇 서브셋에 특정된다.
생성 동작(1002)에서 생성된 저장 매체는 배포 동작(1012)에서 고객에게 배포된다. 배포는 소정의 여러 방법으로 달성될 수 있다. 저장 매체는 시리얼(cereal) 박스 내에 제공되거나 프로모션 아이템과 같은 바 내의 코스터(coaster)로서 제공될 수 있다. 그들은 전통적인 방식으로 최종 사용자에게 판매하기 위해 소매 대리점에 배포될 수 있다. 그들은 네트워크 접속을 통해 저장 매체로의 억세스를 고객에게 제공함으로써 배포될 수 있다. 그들은 컴퓨터 공급자로부터 구입한 컴퓨터와 함께 오리지널 장치로서 배포될 수 있다. 그들은 메일을 통해 무료로 배포될 수 있다. 배포 동작(1012)의 상술된 실시예 중의 어떤 실시예(예를 들어, 저장 매체 또는 컴퓨터의 소매 대리점에서의 구입을 통함)에서, 고객에게는 또한 자격 정보 및 인스톨러가 제공될 수 있다. 무료로 배포된 경우, 예를 들어 프로모션의 일부로서, 고객은 자격 정보 및 인스톨러의 하나 또는 양방을 따로 얻을 필요가 있을 수 있다.
본 발명의 실시예는 소프트웨어 개발자에게 뿐만 아니라 고객에게도 유리하다. 그 한가지로는, 저장 매체가 패키징에 설명된 버전을 포함하지 않는 상황이 방지될 수 있다는 것이다. 저장 매체가 정품의 소프트웨어 제품인 한, 모든 버전이 제공된다. 또한, 이전의 버전-특정 배포 방법에 있어서, 고객에게 배포된 저장 매체가 고장이 났으면, 고객은 그에게 자격이 있다 하더라도 그 버전을 다시 설치할 수 없다. 위에 나타낸 실시예에서는, 고객에게 자격이 주어진 버전이 어떤 버전인지를 인스톨러가 판단할 수 있으면, 고객은 그 소프트웨어 제품용의 소정의 저장 매체로부터 구입한 버전을 설치하거나 재설치할 수 있다.
본 발명은 컴퓨터 구조적 특징, 방법적 액트에 특정되고 컴퓨터 판독가능 매체에 의해 특정된 언어로 설명되었지만, 첨부된 청구범위에 정의된 본 발명은 설명된 특정 구조, 액트 또는 매체에 반드시 제한되는 것은 아니라는 것을 알 수 있을 것이다. 한 예로서, 제품 및 그 버전용의 컴퓨터 코드는 배포된 매체에 포함되기 보다는, 인터넷과 같은 네트워크를 통해 컴퓨터에 억세스가능한 저장 매체 내에 포함될 수 있다. 그러므로, 특정 구조 특징, 액트 및 매체는 청구된 발명을 구현하는 예시적인 실시예로서 개시된 것이다.
상술된 여러가지 실시예는 단지 예시하기 위해 제공된 것이지, 본 발명을 제한하는 의미로 해석되어서는 안된다. 본 분야에 숙련된 기술자들은 여기에 도시되고 설명된 예시적인 실시예 및 애플리케이션을 따르지 않고, 또한 다음 청구범위에서 설명된 본 발명의 정신 및 범위를 벗어나지 않고, 본 발명에 행해질 수 있는 여러가지 수정 및 변경을 용이하게 알 수 있을 것이다.
도 1은 본 발명의 한 실시예에 따른 소프트웨어 제품의 한 버전을 설치하는 시스템의 기능적 구성요소를 도시한 도면.
도 2는 본 발명의 실시예가 구현될 수 있는 적절한 컴퓨팅 시스템 환경의 한 예를 도시한 도면.
도 3은 본 발명의 한 실시예에 따른 저장 매체의 내용을 도시한 도면.
도 4는 본 발명에 따른 제품 키의 한 실시예를 도시한 도면.
도 5는 제품 식별자를 특정 소프트웨어 제품 및 그 제품의 버전과 연관시키는 파일 내에 포함된 SKU(Store Keeping Unit) 테이블의 한 실시예를 나타낸 도면.
도 6은 본 발명에 따른 브랜딩(Branding) 테이블의 실시예를 나타낸 도면.
도 7은 본 발명에 따른 EULA(End-User License Agreement) 테이블의 실시예를 나타낸 도면.
도 8은 본 발명에 따른 맵핑(Mapping) 테이블의 실시예를 나타낸 도면.
도 9는 본 발명에 따른 소프트웨어를 설치하기 위한 논리적 동작의 실시예를 나타낸 도면.
도 10은 본 발명에 따라 다수의 관련된 소프트웨어 제품을 소비자에게 배포하는 실시예의 논리적 동작을 도시한 도면.
<도면의 주요 부분에 대한 부호의 설명>
10, 102: 저장 매체
12: 컴퓨터 시스템
20, 114: 인스톨러
24, 400: 제품 키
30, 110: SKU 파일
106: 1차 코드 부분
103, 104, 105 및 108: 2차 코드 부분
412: 제품 식별자
414: 디지털 서명
500: SKU 테이블
600: 브랜딩 테이블
700: EULA 테이블
800: 맵핑 테이블

Claims (70)

  1. 컴퓨팅 장치에 제1 소프트웨어 제품을 설치하는 방법에 있어서,
    컴퓨팅 장치에 소프트웨어를 설치하기 위해 사용자로부터 커맨드를 수신하는 단계;
    제1 소프트웨어 제품을 포함하여 컴퓨터에 다수의 소프트웨어 제품을 설치하는데 필요한 컴퓨터 코드 - 상기 컴퓨터 코드는 컴퓨터에 설치 후에 다수의 소프트웨어 제품들의 각각의 동작 중에 사용되는 제1 부분, 및 다수의 상이한 제2 부분을 포함하고, 각각의 제2 부분은 다수의 소프트웨어 제품들 중의 상이한 한 제품과 연관되고, 다수의 소프트웨어 제품들 중의 유일하게 연관된 상이한 한 제품의 동작 중에 사용됨 - 를 갖고 있는 저장 매체를 억세스하는 단계;
    사용자에게 제1 소프트웨어 제품을 설치할 자격이 있는 지를 판정하는 단계; 및
    상기 컴퓨터 코드의 최소한 제1 부분 및 상기 컴퓨터 코드의 단지 하나의 제2 부분 - 상기 제2 부분은 제1 소프트웨어 제품과 연관된 컴퓨터 코드의 제2 부분임 - 을 컴퓨팅 장치에 설치하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 다수의 소프트웨어 제품들의 각각은 소프트웨어 애플리케이션의 개별의 한 버전이고, 각각의 버전은 개별의 런타임 반응(runtime behaviors), 또는 개별의 설치 반응, 또는 이들 양방을 갖는 것을 특징으로 하는 방법.
  3. 제1항에 있어서,
    상기 수신 단계는
    상기 저장 매체에 저장된 인스톨러(installer)를 실행하기 위한 커맨드를 수신하는 단계; 및
    상기 인스톨러를 실행하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서,
    상기 수신 단계는
    상기 컴퓨팅 장치에 미리 저장된 인스톨러를 실행하기 위한 커맨드를 수신하는 단계; 및
    상기 인스톨러를 실행하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    상기 수신 단계는
    상기 컴퓨팅 장치에 소프트웨어를 설치하기 위해 원격 서버 상의 인스톨러를 실행하기 위한 커맨드를 네트워크 접속을 통해 상기 원격 서버에서 수신하는 단계; 및
    상기 인스톨러를 실행하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  6. 제1항에 있어서,
    상기 판정 단계는
    사용자에게 소프트웨어 제품을 설치할 자격이 주어졌는 지의 여부를 나타내는 사용자로부터의 자격 정보를 요청하는 단계;
    상기 자격 정보를 수신하는 단계; 및
    상기 자격 정보를 검증하는 단계
    를 더 포함하는 것을 특징으로 하는 방법.
  7. 제1항에 있어서,
    상기 저장 매체 상의 파일 내에 최소한 하나의 룩업 테이블을 제공하는 단계를 더 포함하고, 상기 룩업 테이블은 각 소프트웨어 제품을 소프트웨어 제품의 패키징 내에 포함된 정보와 연관시키는 것을 특징으로 하는 방법.
  8. 제1항에 있어서,
    상기 설치 단계는
    상기 저장 매체로부터 제1 소프트웨어 제품을 설치하는데 필요한 컴퓨터 코드만을 상기 컴퓨터에 복사하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  9. 제1항에 있어서,
    상기 설치 단계는
    상기 컴퓨팅 장치에 보유된 레지스트리(registry)에 제1 소프트웨어 제품에 특정된 데이터를 기입하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  10. 컴퓨터에 소프트웨어 애플리케이션의 제1 버전을 설치하는 방법에 있어서,
    컴퓨터에 소프트웨어를 설치하기 위해 사용자로부터 커맨드를 수신하는 단계;
    제1 버전을 포함하여 컴퓨터에 소프트웨어 애플리케이션의 다수의 버전을 설치하는데 필요한 컴퓨터 코드 - 상기 컴퓨터 코드는 컴퓨터에 설치 후에 다수의 버전들의 각각의 동작 중에 사용되는 1차(primary) 부분, 및 다수의 상이한 버전-특정 부분을 포함하고, 각각의 버전-특정 부분은 소프트웨어 애플리케이션의 상이한 한 버전과 연관되고, 유일하게 연관된 상이한 버전의 동작 중에 사용됨 - 를 갖고 있는 최소한 하나의 데이터 저장 디스크를 억세스하는 단계;
    제품 키를 요청하는 단계;
    제1 버전을 식별하는 제품 키를 수신하는 단계; 및
    상기 컴퓨터 코드의 1차 부분, 및 제1 버전과 연관된 컴퓨터 코드의 버전-특정 부분만을 설치하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  11. 제10항에 있어서,
    상기 최소한 하나의 데이터 저장 디스크는 다수의 데이터 저장 디스크를 포함하고, 상기 억세스 단계는 다수의 데이터 저장 디스크들 중의 최소한 2개의 디스크를 억세스하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  12. 제10항에 있어서,
    상기 각각의 버전은 다른 버전들과 구별되며, 개별의 런타임 반응, 개별의 설치 반응, 또는 이들 양방을 갖는 것을 특징으로 하는 방법.
  13. 제10항에 있어서,
    상기 수신 단계는
    최소한 하나의 데이터 저장 디스크에 저장된 인스톨러를 실행하기 위한 커맨드를 수신하는 단계; 및
    상기 인스톨러를 실행하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  14. 제10항에 있어서,
    상기 설치 단계는
    제품 키의 입력 후에;
    제품 키를 복호화하는 단계; 및
    제1 버전을 식별하는 복호화된 제품 키로부터의 정보를 추출하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  15. 제10항에 있어서,
    상기 최소한 하나의 데이터 저장 디스크 상의 파일 내에 최소한 하나의 룩업 테이블을 제공하는 단계를 더 포함하고, 상기 룩업 테이블은 최소한 하나의 데이터 저장 디스크 상의 다수의 버전들 중의 한 버전에 의해 각 제품 키를 식별하는 것을 특징으로 하는 방법.
  16. 제10항에 있어서,
    상기 설치 단계는
    제품 키 내에 포함된 디지털 서명을 검증하는 단계; 및
    상기 디지털 서명이 검증될 수 있는 경우에만 상기 제1 버전을 설치하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  17. 제10항에 있어서,
    상기 설치 단계는
    최소한 하나의 저장 매체로부터 제1 버전을 설치하는데 필요한 컴퓨터 코드만을 상기 컴퓨터에 복사하는 단계를 포함하는 것을 특징으로 하는 방법.
  18. 제10항에 있어서,
    상기 설치 단계는
    컴퓨터에 보유된 레지스트리에 제1 버전에 특정된 데이터를 기입하는 단계를 포함하는 것을 특징으로 하는 방법.
  19. 고객에게 다수의 소프트웨어 제품들을 배포하는 방법에 있어서,
    다수의 저장 매체에, 컴퓨터 코드의 동일한 복사본들 - 각각의 복사본은 제1 소프트웨어 제품을 포함하는 다수의 소프트웨어 제품들 중의 소정의 제품을 설치하고 실행하는데 필요한 컴퓨터 코드를 포함하고, 상기 컴퓨터 코드의 공통 부분은 설치 후에 다수의 소프트웨어 제품들 전부를 실행하는데 필요함 - 을 저장하는 단계;
    자격 정보의 수신 시에, 컴퓨터 코드의 공통 부분, 및 자격 정보에 의해 식별된 소프트웨어 애플리케이션의 상기 버전에만 연관된 상기 컴퓨터 코드의 제2 부분을 설치할 수 있는 인스톨러로의 억세스를 고객에게 제공하는 단계; 및
    다수의 저장 매체 중의 최소한 하나를 각각의 고객에게 배포하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  20. 제19항에 있어서,
    상기 제공 단계는
    다수의 저장 매체의 각 매체에 인스톨러를 저장함으로써 상기 인스톨러로의 억세스를 고객에게 제공하는 단계를 포함하는 것을 특징으로 하는 방법.
  21. 제19항에 있어서,
    상기 각 소프트웨어 제품은 개별의 런타임 반응 및 개별의 설치 특성들을 갖는 것을 특징으로 하는 방법.
  22. 제19항에 있어서,
    제1 고객에게 상기 제1 소프트웨어 제품과 연관된 자격 정보를 제공하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  23. 제19항에 있어서,
    패키징 재료(packaging material) 내의 저장 매체가 상기 제1 소프트웨어 제품만을 포함한다는 것을 나타내는 표시를 갖도록 상기 패키징 재료 내의 최소한 몇개의 저장 매체를 패키징하는 단계; 및
    상이한 제1 제품 키에 최소한 몇개의 저장 매체의 각각의 패키징 재료를 제공 - 각각의 제1 제품 키는 패키징에 표시된 제1 소프트웨어 제품과 연관됨 - 하는 단계
    를 더 포함하는 것을 특징으로 하는 방법.
  24. 제19항에 있어서,
    상기 제공 단계는 네트워크 접속을 통해, 원격 서버에 저장된 인스톨러로의 억세스를 제공하는 단계를 포함하는 것을 특징으로 하는 방법.
  25. 제21항에 있어서,
    상기 제공 단계는 각각의 소프트웨어 제품을 개별의 세트의 설치 및 런타임 반응으로서 식별하고, 상기 자격 정보를 갖는 각 소프트웨어 제품을 식별하는 룩업 테이블을 제공하는 단계를 포함하는 것을 특징으로 하는 방법.
  26. 제25항에 있어서,
    상기 룩업 테이블은 런타임 동안에 각 소프트웨어 제품에 의해 표시될 개별의 사용자 인터페이스를 식별하는 것을 특징으로 하는 방법.
  27. 제25항에 있어서,
    상기 룩업 테이블은 각 소프트웨어 제품의 최종 사용자의 권한을 포함하는 개별의 최종 사용자 라이센스 계약을 식별하는 것을 특징으로 하는 방법.
  28. 제25항에 있어서,
    상기 룩업 테이블은 각 소프트웨어 제품의 설치 동안에 후속될 개별의 설치 절차들을 식별하는 것을 특징으로 하는 방법.
  29. 제19항에 있어서,
    상기 다수의 저장 매체는 고객의 컴퓨팅 장치의 일부이고,
    상기 배포 단계는 다수의 소프트웨어 제품들 중의 소정의 제품을 설치하는데 필요한 컴퓨터 코드의 동일한 복사본들을, 고객의 저장 매체에 저장하기 위해 네트워크를 통해 각 고객에게 전송하는 단계를 포함하는 것을 특징으로 하는 방법.
  30. 고객에게 소프트웨어 애플리케이션의 다수의 버전을 배포하는 방법에 있어서,
    최소한 하나의 개별의 제품 키를 소프트웨어 애플리케이션의 각 버전과 연관시키는 단계;
    컴퓨터 코드의 동일한 복사본들 - 각각의 복사본은 제1 버전을 포함하는 소프트웨어 애플리케이션의 다수의 버전들 중의 소정의 버전을 설치하는데 요구된 컴퓨터 코드를 포함하고, 상기 컴퓨터 코드의 공통 부분은 다수의 버전들 전부를 설치하는데 필요함 - 을 각각 포함하는 다수의 저장 매체를 생성하는 단계;
    제품 키의 수신 시에, 상기 컴퓨터 코드의 공통 부분, 및 제품 키와 연관된 소프트웨어 애플리케이션의 상기 버전에만 연관된 상기 컴퓨터 코드의 제2 부분을 설치할 수 있는 인스톨러를 제공하는 단계; 및
    다수의 저장 매체 중의 최소한 하나를 각각의 고객에게 배포하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  31. 제30항에 있어서,
    상기 저장 매체는 하나 이상의 저장 디스크의 다수의 세트들을 포함하는 것을 특징으로 하는 방법.
  32. 제30항에 있어서,
    상이한 제품 키를 각 고객에게 제공하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  33. 제30항에 있어서,
    상기 소프트웨어 애플리케이션의 각 버전은 개별의 런타임 반응 및 개별의 설치 특성들을 갖는 것을 특징으로 하는 방법.
  34. 제30항에 있어서,
    제1 고객에게 상기 소프트웨어 애플리케이션의 제1 버전과 연관된 제품 키를 제공하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  35. 제32항에 있어서,
    패키징 재료 내의 저장 매체가 소프트웨어 애플리케이션의 제1 버전만을 포함한다는 것을 나타내는 표시를 갖도록 상기 패키징 재료 내의 저장 매체를 패키징하는 단계; 및
    상이한 제1 제품 키 - 각각의 제1 제품 키는 패키징에 표시된 제1 버전과 연관됨 - 에 각 저장 매체의 패키징 재료를 제공하는 단계
    를 더 포함하는 것을 특징으로 하는 방법.
  36. 제30항에 있어서,
    상기 제공 단계는 컴퓨터 코드를 갖는 저장 매체에 인스톨러를 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  37. 제33항에 있어서,
    상기 제공 단계는, 각 버전을 소프트웨어 애플리케이션의 개별 세트의 설치 및 런타임 반응으로서 식별하고, 연관된 제품 키와 함께 각 버전을 식별하는 룩업 테이블을 제공하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  38. 제37항에 있어서,
    상기 룩업 테이블은 런타임 동안에 소프트웨어 애플리케이션의 각 버전에 의해 표시될 개별의 텍스트를 식별하는 것을 특징으로 하는 방법.
  39. 제37항에 있어서,
    상기 룩업 테이블은 소프트웨어 애플리케이션의 각 버전의 최종 사용자의 권한을 지시하는 개별의 최종 사용자 라이센스 계약을 식별하는 것을 특징으로 하는 방법.
  40. 제37항에 있어서,
    상기 룩업 테이블은 소프트웨어 애플리케이션의 각 버전의 설치 동안에 후속될 개별의 설치 절차들을 식별하는 것을 특징으로 하는 방법.
  41. 제30항에 있어서,
    상기 다수의 저장 매체는 이미 고객의 컴퓨팅 장치의 일부이고,
    상기 배포 단계는 제1 버전을 포함하는 소프트웨어 애플리케이션의 다수의 버전들 중의 소정의 버전을 설치하는데 필요한 컴퓨터 코드의 동일한 복사본들을, 고객의 저장 매체에 저장하기 위해 네트워크를 통해 각 고객에게 전송하는 단계를 포함하는 것을 특징으로 하는 방법.
  42. 컴퓨터 판독가능 매체에 있어서,
    소프트웨어 애플리케이션의 다수의 버전들 전부를 설치하는데 필요한 컴퓨터 코드의 최소한 제1 부분, 및 다수의 제2 부분을 포함하는, 소프트웨어 애플리케이션의 다수의 버전들 중의 소정의 버전 - 각각의 제2 버전은 소프트웨어 애플리케이션의 다수의 버전들 중의 개별의 한 버전을 설치하는데 필요함 - 을 설치하는데 필요한 컴퓨터 코드; 및
    컴퓨터에 의해 실행될 때, 제품 키를 요청하고, 그 요청에 응답하여 주어진 제품 키에 기초하여 소프트웨어 애플리케이션의 버전들 중의 한 버전을 설치하는 인스톨러
    을 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  43. 제42항에 있어서,
    각 버전을 하나 이상의 제품 키와 연관시키는 최소한 하나의 룩업 테이블을 포함하는 파일을 더 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  44. 제43항에 있어서,
    상기 최소한 하나의 룩업 테이블은 소프트웨어 애플리케이션의 각 버전을 소프트웨어 애플리케이션의 개별 세트의 반응으로서 식별하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  45. 제44항에 있어서,
    상기 최소한 하나의 룩업 테이블은
    각 제품 키를 브랜딩(branding) 테이블 내의 브랜드 및 맵핑(mapping) 테이블 내의 맵과 연관시키는 SKU 테이블;
    각 맵을 EULA(End-User License Agreement; 최종 사용자 라이센스 계약) 식별자와 연관시키는 맵핑 테이블;
    각 브랜드를 소프트웨어 제품의 설치 또는 런타임 동안에 사용될 개별의 텍스트와 연관시키는 브랜딩 테이블; 및
    각 EULA 식별자를 하나의 EULA와 연관시키는 EULA 테이블
    을 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  46. 제42항에 있어서,
    상기 소프트웨어 애플리케이션의 다수의 버전들 중의 한 버전과 연관된 제품 키와 함께 패키징되는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  47. 제42항에 있어서,
    상기 소프트웨어 애플리케이션의 제1 버전만이 컴퓨터 판독가능 매체에 포함된다는 것을 나타내도록 패키징 내에 패키징되는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  48. 제47항에 있어서,
    상기 패키징은 상기 소프트웨어 애플리케이션의 제1 버전에 특정된 제품 키를 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  49. 컴퓨터 시스템에 의해 판독가능하고, 컴퓨터에 소프트웨어 애플리케이션의 제1 버전을 설치하기 위한 컴퓨터 프로세스를 실행하는 명령어들의 컴퓨터 프로그램을 인코딩한 컴퓨터 프로그램 제품에 있어서,
    상기 컴퓨터 프로세스는,
    컴퓨터에 소프트웨어를 설치하기 위해 사용자로부터 커맨드를 수신하는 단계;
    제1 버전을 포함하여 컴퓨터에 소프트웨어 애플리케이션의 다수의 버전을 설치하는데 필요한 컴퓨터 코드 - 상기 컴퓨터 코드는 컴퓨터에 설치 후에 다수의 버전들의 각각의 동작 중에 사용되는 1차 부분, 및 다수의 상이한 버전-특정 부분을 포함하고, 각각의 버전-특정 부분은 소프트웨어 애플리케이션의 상이한 한 버전과 연관되고, 유일하게 연관된 상이한 버전의 동작 중에 사용됨 - 를 갖고 있는 최소한 하나의 데이터 저장 디스크를 억세스하는 단계;
    제품 키를 요청하는 단계;
    제1 버전을 식별하는 제품 키를 수신하는 단계; 및
    상기 컴퓨터 코드의 1차 부분, 및 상기 제1 버전과 연관된 컴퓨터 코드의 버전-특정 부분만을 설치하는 단계
    를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  50. 제49항에 있어서,
    상기 최소한 하나의 데이터 저장 디스크는 다수의 데이터 저장 디스크를 포함하고, 상기 억세스 단계는 다수의 데이터 저장 디스크들 중의 최소한 2개의 디스크를 억세스하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  51. 제49항에 있어서,
    상기 각각의 버전은 다른 버전들과 구별되며, 개별의 런타임 반응, 개별의 설치 반응, 또는 이들 양방을 갖는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  52. 제49항에 있어서,
    상기 수신 단계는
    최소한 하나의 데이터 저장 디스크에 저장된 인스톨러를 실행하기 위한 커맨드를 수신하는 단계; 및
    상기 인스톨러를 실행하는 단계
    를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  53. 제49항에 있어서,
    상기 설치 단계는
    제품 키의 입력 후에;
    상기 제품 키를 복호화하는 단계; 및
    제1 버전을 식별하는 복호화된 제품 키로부터의 정보를 추출하는 단계
    를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  54. 제49항에 있어서,
    상기 컴퓨터 프로세스는 최소한 하나의 데이터 저장 디스크 상의 파일 내에 최소한 하나의 룩업 테이블을 제공하는 단계를 더 포함하고, 상기 룩업 테이블은 최소한 하나의 데이터 저장 디스크 상의 다수의 버전들 중의 한 버전에 의해 각 제품 키를 식별하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  55. 제49항에 있어서,
    상기 설치 단계는
    제품 키 내에 포함된 디지털 서명을 검증하는 단계; 및
    상기 디지털 서명이 검증될 수 있는 경우에만 상기 제1 버전을 설치하는 단계
    를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  56. 제49항에 있어서,
    상기 설치 단계는 최소한 하나의 저장 매체로부터 상기 제1 버전을 설치하는데 필요한 컴퓨터 코드만을 상기 컴퓨터에 복사하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  57. 제49항에 있어서,
    상기 설치 단계는 컴퓨터에 보유된 레지스트리에 상기 제1 버전에 특정된 데이터를 기입하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  58. 컴퓨터에 소프트웨어 애플리케이션의 제1 버전을 설치하는 방법에 있어서,
    컴퓨터에 소프트웨어를 설치하기 위해 사용자로부터 커맨드를 수신하는 단계;
    제1 버전을 포함하여 컴퓨터에 소프트웨어 애플리케이션의 다수의 버전을 설치하는데 필요한 컴퓨터 코드 - 상기 컴퓨터 코드는 컴퓨터에 설치 후에 다수의 버전들의 각각의 동작 중에 사용되는 1차 부분, 및 다수의 버전을 위한 인코딩된 라이센스 및 반응 정보를 포함하는 SKU 파일을 포함함 - 를 갖고 있는 최소한 하나의 데이터 저장 디스크를 억세스하는 단계;
    제품 키를 요청하는 단계;
    제1 버전을 식별하는 제품 키를 수신하는 단계; 및
    상기 컴퓨터 코드의 1차 부분 및 SKU 파일을 설치하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  59. 제58항에 있어서,
    상기 설치 단계는 SKU 파일 내의 반응 정보에 기초하여 소프트웨어 제품의 제1 버전용 반응을 인에이블하는 단계를 포함하는 것을 특징으로 하는 방법.
  60. 제58항에 있어서,
    상기 설치 단계는
    디코딩된 라이센스를 작성하기 위해 SKU 파일로부터 소프트웨어 제품의 제1 버전용 제1 라이센스를 디코딩하는 단계; 및
    소프트웨어 제품의 제1 버전용의 디코딩된 라이센스를 컴퓨터 상의 라이센스 저장부에 복사하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  61. 제59항에 있어서,
    상기 인에이블 단계는 SKU 파일 내의 반응 정보에 기초하여 상기 소프트웨어 제품의 제1 버전용 설치 반응을 인에이블하는 단계를 포함하는 것을 특징으로 하는 방법.
  62. 제59항에 있어서,
    상기 인에이블 단계는 런타임 동안에 표시될 제1 버전용 브랜딩 텍스트를 인에이블하는 단계를 포함하고, 상기 브랜딩 텍스트는 SKU 파일 내에 저장되는 것을 특징으로 하는 방법.
  63. 제58항에 있어서,
    상기 최소한 하나의 데이터 저장 디스크는 다수의 데이터 저장 디스크를 포함하고, 상기 억세스 단계는 다수의 데이터 저장 디스크들 중의 최소한 2개의 디스크를 억세스하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  64. 제58항에 있어서,
    상기 각각의 버전은 다른 버전과 구별되며, 개별의 런타임 반응 또는 개별의 설치 반응, 또는 이들 양방을 갖는 것을 특징으로 하는 방법.
  65. 제58항에 있어서,
    상기 수신 단계는
    최소한 하나의 데이터 저장 디스크에 저장된 인스톨러를 실행하기 위한 커맨드를 수신하는 단계; 및
    상기 인스톨러를 실행하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  66. 제58항에 있어서,
    상기 설치 단계는
    제품 키의 입력 후에;
    상기 제품 키를 복호화하는 단계; 및
    제1 버전을 식별하는 복호화된 제품 키로부터 정보를 추출하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  67. 제58항에 있어서,
    상기 최소한 하나의 데이터 저장 디스크에 SKU 파일 내의 최소한 하나의 룩업 테이블을 제공하는 단계를 더 포함하고, 상기 룩업 테이블은 최소한 하나의 데이터 저장 디스크 상의 다수의 버전들 중의 한 버전에 의해 각 제품 키를 식별하는 것을 특징으로 하는 방법.
  68. 제58항에 있어서,
    상기 설치 단계는
    제품 키 내에 포함된 디지털 서명을 검증하는 단계; 및
    상기 디지털 서명이 검증될 수 있는 경우에만 상기 제1 버전을 설치하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  69. 제58항에 있어서,
    상기 설치 단계는 최소한 하나의 저장 매체로부터 제1 버전을 설치하는데 필요한 SKU 파일로부터의 컴퓨터 코드만을 상기 컴퓨터에 복사하는 단계를 포함하는 것을 특징으로 하는 방법.
  70. 제58항에 있어서,
    상기 설치 단계는 컴퓨터에 보유된 레지스트리에 SKU 파일로부터의 데이터를 기입하는 단계를 포함하고, 상기 데이터는 제1 버전에 특정된 것을 특징으로 하는 방법.
KR1020040075464A 2003-09-22 2004-09-21 소프트웨어를 배포하고 설치하는 방법 및 시스템 KR20050029705A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/667,688 US20050066324A1 (en) 2003-09-22 2003-09-22 Method and system for distributing and installing software
US10/667,688 2003-09-22

Publications (1)

Publication Number Publication Date
KR20050029705A true KR20050029705A (ko) 2005-03-28

Family

ID=34313355

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040075464A KR20050029705A (ko) 2003-09-22 2004-09-21 소프트웨어를 배포하고 설치하는 방법 및 시스템

Country Status (10)

Country Link
US (1) US20050066324A1 (ko)
EP (1) EP1662384A3 (ko)
JP (1) JP2005100401A (ko)
KR (1) KR20050029705A (ko)
CN (1) CN1811706A (ko)
AU (1) AU2004208743A1 (ko)
BR (1) BRPI0404280A (ko)
CA (1) CA2482082A1 (ko)
MX (1) MXPA04009070A (ko)
RU (1) RU2004128233A (ko)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100744260B1 (ko) * 2002-10-29 2007-07-30 캐논 가부시끼가이샤 정보 처리 방법 및 정보 처리 장치
KR100755697B1 (ko) * 2005-11-09 2007-09-05 삼성전자주식회사 소프트웨어 설치 방법, 장치, 및 시스템
KR20080052943A (ko) * 2006-12-08 2008-06-12 엘지전자 주식회사 이동통신단말기의 소프트웨어 업데이트방법
US7469345B2 (en) 2001-12-13 2008-12-23 Sony Computer Entertainment Inc. Methods and apparatus for secure distribution of program content
US7500088B2 (en) 2004-07-08 2009-03-03 Sony Computer Entertainment Inc. Methods and apparatus for updating of a branch history table
WO2010002407A1 (en) * 2008-07-02 2010-01-07 Hewlett-Packard Development Company, L.P. Performing administrative tasks associated with a network-attached storage system at a client
US7864957B2 (en) 2001-12-21 2011-01-04 Sony Computer Entertainment Inc. Methods and apparatus for secure distribution of program content
KR101028691B1 (ko) * 2011-01-05 2011-04-14 (주)유케이디 정품 소프트웨어 관리시스템의 운영방법
KR101185142B1 (ko) * 2006-01-11 2012-09-24 삼성전자주식회사 최종 사용자 라이센스 계약을 관리하는 장치 및 방법

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7369808B2 (en) * 2002-02-07 2008-05-06 Sap Aktiengesellschaft Instructional architecture for collaborative e-learning
US20030157470A1 (en) * 2002-02-11 2003-08-21 Michael Altenhofen E-learning station and interface
US20030154176A1 (en) * 2002-02-11 2003-08-14 Krebs Andreas S. E-learning authoring tool
US20030152905A1 (en) * 2002-02-11 2003-08-14 Michael Altenhofen E-learning system
US20040044892A1 (en) * 2002-09-03 2004-03-04 Elmar Dorner Content based messaging for e-learning
US20040043363A1 (en) * 2002-09-03 2004-03-04 Elmar Dorner Tutor interface with content based messaging
US20040126750A1 (en) * 2002-11-15 2004-07-01 Wolfgang Theilmann Versioning electronic learning objects
US20040255292A1 (en) * 2003-06-16 2004-12-16 Microsoft Corporation Delivering multiple installation images and computer-readable installation keys on installation media
US8224750B1 (en) * 2003-10-07 2012-07-17 Microsoft Corporation Method and system for upgrading licenses to installed software
US20050097343A1 (en) * 2003-10-31 2005-05-05 Michael Altenhofen Secure user-specific application versions
US7287066B2 (en) * 2003-10-31 2007-10-23 Sap Aktiengesellschaft Publish-subscribe system having a reliability mechanism
US20050216506A1 (en) * 2004-03-25 2005-09-29 Wolfgang Theilmann Versioning electronic learning objects using project objects
US7694280B2 (en) * 2004-03-29 2010-04-06 Hewlett-Packard Development Company, L.P. Systems and methods for controlling program installation on a computing device
US20060008789A1 (en) * 2004-07-07 2006-01-12 Wolfgang Gerteis E-learning course extractor
WO2006033419A1 (en) * 2004-09-20 2006-03-30 Sony Computer Entertainment Inc. Methods and apparatus for distributing software applications
US8156488B2 (en) * 2004-10-20 2012-04-10 Nokia Corporation Terminal, method and computer program product for validating a software application
US20060106729A1 (en) * 2004-10-25 2006-05-18 Roberts Henry J Jr Method and apparatus for restricting use of a computer program
US20060190408A1 (en) * 2005-02-24 2006-08-24 Cook Johanna M System and method for customized bundled license generation
US20060200419A1 (en) * 2005-02-24 2006-09-07 Cook Johanna M System and method for user role based product license generation
US20070143165A1 (en) * 2005-08-12 2007-06-21 John Roberts Customer relationship management system and method
US20070143228A1 (en) * 2005-12-15 2007-06-21 Microsoft Corporation Licensing matrix
US7921059B2 (en) * 2005-12-15 2011-04-05 Microsoft Corporation Licensing upsell
US20070198428A1 (en) * 2006-02-22 2007-08-23 Microsoft Corporation Purchasing of computer service access licenses
US7853945B2 (en) * 2006-02-22 2010-12-14 Michael Kramer Integrated computer server imaging
US20070198427A1 (en) * 2006-02-22 2007-08-23 Microsoft Corporation Computer service licensing management
DE102006033863A1 (de) * 2006-07-21 2008-01-24 Siemens Ag Verschaltungsschnittstelle für flexibles Online/Offline-Deployment einer n-schichtigen Softwareapplikation
US8082442B2 (en) * 2006-08-10 2011-12-20 Microsoft Corporation Securely sharing applications installed by unprivileged users
US9639696B1 (en) * 2006-09-29 2017-05-02 Symantec Operating Corporation Method and apparatus for analyzing end user license agreements
US8584109B2 (en) * 2006-10-27 2013-11-12 Microsoft Corporation Virtualization for diversified tamper resistance
US20080163197A1 (en) * 2006-12-30 2008-07-03 Sap Ag Multi-product installation tool database architecture
US8365165B2 (en) * 2006-12-30 2013-01-29 Sap Ag Dynamic addition of products and removal of software products on a distribution server
US20080163199A1 (en) * 2006-12-30 2008-07-03 Rao Siddhartha Ashok Multi-product package creation and editing
US8001383B2 (en) * 2007-02-01 2011-08-16 Microsoft Corporation Secure serial number
JP5058697B2 (ja) * 2007-07-19 2012-10-24 キヤノン株式会社 情報処理装置、アプリケーション管理方法、及びコンピュータプログラム
RU2455687C2 (ru) * 2007-09-12 2012-07-10 Сони Корпорейшн Распространение информационных ресурсов по модели открытого рынка
US20090083732A1 (en) * 2007-09-26 2009-03-26 Microsoft Corporation Creation and deployment of distributed, extensible applications
US8589903B2 (en) * 2007-12-04 2013-11-19 Oracle International Corporation Patch attachment facility
KR100936239B1 (ko) * 2007-12-18 2010-01-12 한국전자통신연구원 스트리밍 기반 이동형 소프트웨어 제공 시스템 및 방법
US9477462B2 (en) * 2008-01-16 2016-10-25 Oracle International Corporation System and method for software product versioning packaging, distribution, and patching
US8607226B2 (en) * 2008-01-22 2013-12-10 International Business Machines Corporation Solution for locally staged electronic software distribution using secure removable media
JP5121542B2 (ja) * 2008-04-09 2013-01-16 キヤノン株式会社 アプリケーションパッケジング装置、その制御方法、プログラム
US8539478B2 (en) * 2008-06-20 2013-09-17 International Business Machines Corporation Dynamic web installer
US8584117B2 (en) * 2008-12-10 2013-11-12 Bmc Software, Inc. Method to make SMP/E based products self describing
US8464246B2 (en) * 2008-12-24 2013-06-11 Bmc Software, Inc. Automation of mainframe software deployment
CN101996081B (zh) * 2009-08-20 2013-09-04 精品科技股份有限公司 在客户端电脑安装软件的方法
JP4930562B2 (ja) 2009-09-16 2012-05-16 コニカミノルタビジネステクノロジーズ株式会社 画像処理装置の機能シミュレート用プログラム及び情報処理装置並びに記録媒体
US8972974B2 (en) * 2009-11-09 2015-03-03 Bank Of America Corporation Multiple invocation points in software build task sequence
US20110113424A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Distribution Of Software Updates
US9128799B2 (en) * 2009-11-09 2015-09-08 Bank Of America Corporation Programmatic creation of task sequences from manifests
US8397230B2 (en) * 2009-11-09 2013-03-12 Bank Of America Corporation Software updates using delta patching
US9176898B2 (en) * 2009-11-09 2015-11-03 Bank Of America Corporation Software stack building using logically protected region of computer-readable medium
US8671402B2 (en) * 2009-11-09 2014-03-11 Bank Of America Corporation Network-enhanced control of software updates received via removable computer-readable medium
US8584113B2 (en) * 2009-11-09 2013-11-12 Bank Of America Corporation Cross-updating of software between self-service financial transaction machines
US20110238572A1 (en) * 2010-03-25 2011-09-29 Bank Of America Corporation Remote Control Of Self-Service Terminal
US8495614B2 (en) * 2010-05-28 2013-07-23 Red Hat, Inc. Mechanism for dynamically generating spec files for software package managers
US20120254857A1 (en) * 2011-03-31 2012-10-04 Infosys Technologies Limited System and method for installing an application on client machine
CN102130967A (zh) * 2011-04-19 2011-07-20 彭扬 一种移动互联网数字内容分发系统
JP2013020354A (ja) * 2011-07-08 2013-01-31 Ricoh Co Ltd ログ集計プログラム、ログ集計装置およびインストーラ・パッケージャ・プログラム
JP6053450B2 (ja) * 2012-10-26 2016-12-27 株式会社Pfu 情報処理装置、方法およびプログラム
US9411571B2 (en) * 2013-02-28 2016-08-09 Adobe Systems Incorporated Method and apparatus for deploying software as a service
US9348849B1 (en) * 2013-12-23 2016-05-24 Emc Corporation Backup client zero-management
US9817646B1 (en) * 2014-03-17 2017-11-14 Google Llc Multiplatform and multichannel distribution of web applications across devices
US9740473B2 (en) 2015-08-26 2017-08-22 Bank Of America Corporation Software and associated hardware regression and compatibility testing system
US10614427B2 (en) * 2016-10-21 2020-04-07 Johnson Controls Technology Company Systems and methods for monetizing building management system software deployment
CN111382362B (zh) * 2020-03-13 2023-10-03 百度在线网络技术(北京)有限公司 小程序处理方法、装置、设备及存储介质
KR102546434B1 (ko) 2020-03-13 2023-06-22 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드 미니 프로그램 처리 방법, 장치, 기기 및 저장매체
US11861363B2 (en) * 2021-10-22 2024-01-02 Sap Se Development landscape build system
CN115659340B (zh) * 2022-12-09 2023-03-14 支付宝(杭州)信息技术有限公司 一种仿冒小程序识别方法、装置、存储介质及电子设备

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0799497B2 (ja) * 1990-12-14 1995-10-25 インターナショナル・ビジネス・マシーンズ・コーポレイション ソフトウェアの使用を管理するための装置及び方法
US5553139A (en) * 1994-04-04 1996-09-03 Novell, Inc. Method and apparatus for electronic license distribution
US5794052A (en) * 1995-02-27 1998-08-11 Ast Research, Inc. Method of software installation and setup
JPH10143357A (ja) * 1996-11-11 1998-05-29 Hitachi Ltd ソフトウェア管理装置
JPH10177473A (ja) * 1996-12-18 1998-06-30 Japan Airlines Co Ltd コンピュータ・プログラムのインストール方法及びシステム
JPH10260820A (ja) * 1997-03-19 1998-09-29 Toshiba Corp ソフトウェアツールのインストーラ、インストール方法及びインストール媒体
US6351850B1 (en) * 1997-11-14 2002-02-26 Frank Van Gilluwe Computer operating system installation
GB2333864B (en) * 1998-01-28 2003-05-07 Ibm Distribution of software updates via a computer network
US6169976B1 (en) * 1998-07-02 2001-01-02 Encommerce, Inc. Method and apparatus for regulating the use of licensed products
US6378128B1 (en) * 1998-10-08 2002-04-23 Microsoft Corporation System and method for dynamically modifying an install-set
US6529992B1 (en) * 1999-07-26 2003-03-04 Iomega Corporation Self-contained application disk for automatically launching application software or starting devices and peripherals
US6668375B1 (en) * 1999-12-15 2003-12-23 Pitney Bowes Inc. Method and system for providing build-to-order software applications
US6912711B1 (en) * 2000-05-25 2005-06-28 International Business Machines Corporation Method of applying an update to a contained collection of program and data files based upon versions
JP2002229797A (ja) * 2001-01-29 2002-08-16 Nec Eng Ltd インストーラ
US20030028870A1 (en) * 2001-08-01 2003-02-06 Weisman Mitchell T. Distribution of downloadable software over a network
US20030037325A1 (en) * 2001-08-17 2003-02-20 Hargrove David C. System and methods for automatically installing a correct software version from media containing multiple software versions
JP2003202971A (ja) * 2002-01-09 2003-07-18 Seiko Epson Corp プリンタドライバ及びインストール用ファイルセット
JP3932477B2 (ja) * 2002-01-29 2007-06-20 ソニー株式会社 情報処理システム、情報処理装置および方法、プログラム
US20040225664A1 (en) * 2002-09-04 2004-11-11 Casement Richard Allen Data abstraction layer and automated data staging system and method
US7478385B2 (en) * 2003-01-17 2009-01-13 National Instruments Corporation Installing software using programmatic component dependency analysis
US20040243997A1 (en) * 2003-05-29 2004-12-02 Sun Microsystems, Inc. Method, system, and program for installing program components on a computer
US7472286B2 (en) * 2003-08-29 2008-12-30 Microsoft Corporation Selectively authorizing software functionality after installation of the software
US7313792B2 (en) * 2003-09-08 2007-12-25 Microsoft Corporation Method and system for servicing software

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7469345B2 (en) 2001-12-13 2008-12-23 Sony Computer Entertainment Inc. Methods and apparatus for secure distribution of program content
US7864957B2 (en) 2001-12-21 2011-01-04 Sony Computer Entertainment Inc. Methods and apparatus for secure distribution of program content
KR100744260B1 (ko) * 2002-10-29 2007-07-30 캐논 가부시끼가이샤 정보 처리 방법 및 정보 처리 장치
US7743120B2 (en) 2002-10-29 2010-06-22 Canon Kabushiki Kaisha Information processing method and information processing apparatus
US7500088B2 (en) 2004-07-08 2009-03-03 Sony Computer Entertainment Inc. Methods and apparatus for updating of a branch history table
KR100755697B1 (ko) * 2005-11-09 2007-09-05 삼성전자주식회사 소프트웨어 설치 방법, 장치, 및 시스템
KR101185142B1 (ko) * 2006-01-11 2012-09-24 삼성전자주식회사 최종 사용자 라이센스 계약을 관리하는 장치 및 방법
KR20080052943A (ko) * 2006-12-08 2008-06-12 엘지전자 주식회사 이동통신단말기의 소프트웨어 업데이트방법
WO2010002407A1 (en) * 2008-07-02 2010-01-07 Hewlett-Packard Development Company, L.P. Performing administrative tasks associated with a network-attached storage system at a client
US9354853B2 (en) 2008-07-02 2016-05-31 Hewlett-Packard Development Company, L.P. Performing administrative tasks associated with a network-attached storage system at a client
US9891902B2 (en) 2008-07-02 2018-02-13 Hewlett-Packard Development Company, L.P. Performing administrative tasks associated with a network-attached storage system at a client
KR101028691B1 (ko) * 2011-01-05 2011-04-14 (주)유케이디 정품 소프트웨어 관리시스템의 운영방법

Also Published As

Publication number Publication date
EP1662384A2 (en) 2006-05-31
MXPA04009070A (es) 2007-11-15
AU2004208743A1 (en) 2005-04-07
JP2005100401A (ja) 2005-04-14
RU2004128233A (ru) 2006-03-10
CN1811706A (zh) 2006-08-02
BRPI0404280A (pt) 2005-05-24
EP1662384A3 (en) 2007-10-24
US20050066324A1 (en) 2005-03-24
CA2482082A1 (en) 2005-03-22

Similar Documents

Publication Publication Date Title
KR20050029705A (ko) 소프트웨어를 배포하고 설치하는 방법 및 시스템
US8352935B2 (en) System for creating a customized software distribution based on user requirements
US8650561B2 (en) System and method for localizing display of applications for download
US6237144B1 (en) Use of relational databases for software installation
US7921059B2 (en) Licensing upsell
US7913248B1 (en) System and method for installing one or more programs, and at least a portion of their environment
US6397381B1 (en) System and method for repairing a damaged application program
US8260713B2 (en) Web-based system providing royalty processing and reporting services
EP1724682A1 (en) System for Creating a Customized Software Installation On Demand
US20070041584A1 (en) Method for providing activation key protection
JP2003518282A (ja) 権利管理アーキテクチャにおける保護コンテンツにアクセスするためのシステムおよび方法
KR20020082721A (ko) 디바이스 드라이버 설치방법
US8224750B1 (en) Method and system for upgrading licenses to installed software
SE521072C2 (sv) Säkerhetssystem och process mot olagligt bruk eller kopiering av elektroniska data
US20070219919A1 (en) Process of accessing licensed digital content on MediaDirect enabled systems in a multiple operating system environment
US20030144997A1 (en) Patent marking system
KR101032386B1 (ko) 가상 머신을 이용한 응용 프로그램 제공 방법 및 시스템,가상 응용 프로그램 수행 방법, 가상 머신 모듈 및 온라인서비스 제공 방법
US7814334B2 (en) Method and apparatus for changing and adding activation keys for functions of digital content without having to change and recompile the digital content
US8463709B2 (en) Identifying and labeling licensed content in an embedded partition
US20080172487A1 (en) Systems and methods for providing targeted marketing
Blum Linux for dummies
US20130067458A1 (en) Application site of origin reference scheme
US20060294026A1 (en) Digital rights conversion system
Wilson The definitive guide to Windows Installer
US20040255292A1 (en) Delivering multiple installation images and computer-readable installation keys on installation media

Legal Events

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