2011-03-23 5 views
0

우리 제품에 자동 업데이트 또는 업데이트 알림을 추가하려고합니다 (C++).소프트웨어 업데이트 구독을 추가하는 방법

업데이트를 기반으로 구독해야한다 : 가입이 더 이상 업데이트가 가능하며, 만료되면

  • 사용자는 업데이트
  • 의 1 년 구독을 산다.

누군가 이러한 서비스를 구현하기위한 소프트웨어 또는 제공 업체를 제안 할 수 있습니까?

몇 가지 자동 업데이트 예제를 발견했지만 모두 시간에 제한이 없습니다.

이 서비스는 사용자별로 제한되어야하며 확장을 허용해야합니다.

+0

어떤 플랫폼 (사용자가 업데이트를 지불해야하기 때문에 내가 Windows를 생각하지만, 내가 잘못 될 수있다) 당신이 어떤 라이센스를 원하는가? 또한 구현하기가 매우 쉽습니다. –

+0

죄송합니다. 언급하지 않았습니다. Windows입니다. 나는 예제 구현을 찾고있다. –

답변

1

당신이 필요로하는 것이 무엇, 재료의 측면에서, 다음과 같습니다

  • 방법을 업데이트를 다운로드 - 나는 라이센스를 인코딩하는
  • 하는 방법에 대한 HTTP (S)를 제안 포함한 것 어떤 종류의 업데이트를받을 수 있으며 얼마나 오래 업데이트 할 수 있습니다. 이상적으로 이것은 사용자에게는 불투명하지만 양쪽에서 쉽게 확인할 수 있습니다 (따라서 서버에 연결할 필요없이 잘못된 항목을 사용자에게 알릴 수 있음)
  • 업데이트 사용 가능 여부를 쉽게 알 수 있고 확인을 다시

나는 그런 간단한 API와 (뻔뻔한 플러그) Arachnida로, 임베디드 HTTP 클라이언트를 사용하여 HTTP 서비스를 통해 간단한 XML을 정의하는 것입니다 제안 무엇 - 같은 :

class UpdateAgent 
{ 
/* boilerplate */ 
public : 
    /* set the key to use. Throws an InvalidKey exception if not valid 
    * validity is checked locally - no HTTP queries are used. 
    * Key may have been invalidated on the server without notification 
    * at this point */ 
    void setKey(const std::string &key); 
    // Get the key currently set 
    std::string getKey() const; 
    /* using a synchronous HTTPS query, check with the server if updates are 
    * available for the current key. Throws on error: one of the QueryError 
    * subclasses if there has been a query error, or InvalidKey is the 
    * key is either not set or is not valid (i.e. invalidated server-side) */ 
    bool isUpdateAvailable() const; 
/* etc. */ 
}; 

키 자체는 위에서 볼 수 있듯이 인코딩을 통해 계속 작동하는 문자열입니다. 그것의 타당성에 관한 어떤 종류의 정보 - 예. 입력 된 문자열이 유효한지 알기위한 CRC의 일종. 만료 정보가 키 자체에 인코딩 될 수 있지만 (사용자가 라이센스를 연장하면 키를 변경한다는 의미 일 수도 있지만) 만료 날짜를 포함하여 나머지 키는 서버 측에서 관리 할 수 ​​있습니다. 키와 갱신에 대한 요청되게 서버 측,에 관해서는

, 서버 것

  1. 검사 업데이트는 소프트웨어를 사용할 수 있는지 여부를 키
  2. 검사의 타당성 키를위한 것입니다 (데이터베이스에서 키를 관리 할 것인지 또는 라이센스 키의 일부로 만들 것인지에 따라 키 자체에 포함되거나 포함되지 않을 수있는 정보)
  3. 파일을 고유하고 추측하기 힘든 이름으로 다운로드 할 수있는 곳
  4. 은 클라이언트에 다운로드 할 URL을 제공합니다 (예 :HTTP 요청에 대해 반환 된 XML 스트림
  5. N 초/분/시간 동안 파일을 다운로드하지 않은 후 파일을 제거하려면 시간 제한을 시작하십시오.
  6. 클라이언트에서 파일을 다운로드 한 후 제거하십시오.

다운로드가 실패하면 다시 시작하거나 다시 요청할 수 있습니다. 개별 다운로드에 대해 요금을 청구하려는 경우 클라이언트가 다운로드 성공을 확인하거나 실패시 오류를보고해야하므로 개별 다운로드를 두 번 계산하지 않아도됩니다.

물론이 모든 것이 내 머리 꼭대기에서 떨어져 있습니다. 여기에서 생각하지 못한 세부 사항이있을 수 있습니다. 각 재료는 매우 쉽게 먹을 수 있습니다. Arachnida의 오픈 소스 버전은 available on SourceForge이며 필요에 따라 라이센스 키를 인코딩하는 몇 가지 코드가 있습니다 (내 제품의 다른 용도로 사용).하지만 광산을 사용하고 싶지 않으면 라이센스 키를 작성할 수 있습니다. .

당신이 생각하고 싶은 몇 가지 사항은 클라이언트의 보안 인증입니다. 따라서 클라이언트는 라이센스 키를 공유하지 않으므로 HTTP 연결을 보호하므로 업데이트를 전세계에 게시하지 않게됩니다. 대부분의 빌딩 블록이 이미 존재하므로 서버 또는 클라이언트를 구현하는 데 매우 복잡 할 필요가 있습니다.

HTH

RLC

관련 문제