Program Club

Google 'Omaha'(Chrome 용 자동 업데이트 엔진)의 경험은 어떻습니까?

proclub 2020. 12. 9. 20:53
반응형

Google 'Omaha'(Chrome 용 자동 업데이트 엔진)의 경험은 어떻습니까?


Google은 Google Chrome에서 사용되는 자동 업데이트 메커니즘을 Omaha 로 오픈 소스로 제공했습니다 .

Google이 아닌 사람을 위해 구성하는 것은 매우 복잡하고 어렵습니다. 프로젝트에서 오마하를 사용한 경험은 무엇입니까? 추천 할 수 있습니까?


우리는 제품에 오마하를 사용합니다. 처음에는 하드 코딩 된 URL과 문자열을 변경하기 위해 많은 작업이있었습니다. 또한 서버는 오픈 소스가 아니지만 프로토콜이 잘 문서화되어 있으므로 Google App Engine을 사용하여 호환되는 서버를 만드는 것이 어렵지 않았습니다.

우리의 오래된 클라이언트 업데이트 솔루션을 버리고 오마하와 함께가는 것에 대해 후회는 없습니다.


Google Chrome 에서 사용되는 업데이트 메커니즘 인 courgette 알고리즘을 활용할 수 있습니다 . 사용하기가 정말 쉽고 인프라에 적용 할 수 있습니다. 현재는 Windows 운영 체제에서만 작동합니다. Chrome의 Windows 사용자는 전체 크기로 청크를 수신하는 Mac 및 Linux 사용자와 달리 작은 청크로 업데이트를받습니다.

여기 Chromium SVN 저장소 에서 소스 코드를 찾을 수 있습니다 . 항상 전체 배포를 보내는 대신 Chrome에 작은 업데이트를 적용하는 압축 알고리즘입니다. 전체 10MB를 사용자에게 푸시하는 대신 변경 사항의 차이 만 푸시 할 수 있습니다.

Courgette의 작동 방식에 대한 자세한 내용은 여기 에서, 공식 블로그 게시물은 여기에서 확인할있습니다 .

다음과 같이 작동합니다.

server:
    hint = make_hint(original, update)
    guess = make_guess(original, hint)
    diff = bsdiff(concat(original, guess), update)
    transmit hint, diff

client
    receive hint, diff
    guess = make_guess(original, hint)
    update = bspatch(concat(original, guess), diff)

소스를 체크 아웃 할 때 실행 파일로 컴파일하고 (Visual Studio에서 마우스 오른쪽 버튼으로 컴파일) 테스트를 위해 해당 형식의 애플리케이션을 사용할 수 있습니다.

용법:

  courgette -dis <executable_file> <binary_assembly_file>
  courgette -asm <binary_assembly_file> <executable_file>
  courgette -disadj <executable_file> <reference> <binary_assembly_file>
  courgette -gen <v1> <v2> <patch>
  courgette -apply <v1> <patch> <v2>

또는이를 애플리케이션에 포함하고 거기에서 업데이트를 수행 할 수 있습니다. 주기적으로 Courgette를 확인하고 실행하는 나만의 서비스를 만들어 오마하 자동 업데이트 환경을 모방 할 수 있습니다.


최신 정보

  • C ++, python 또는 com에 대한 지식이 없다면 Google omaha를 사용자 정의하는 것이 쉽지 않습니다.
  • 업데이트가 그렇게 자주 게시되지 않습니다.
  • 모든 언어로 수동 업데이트를 구현하려면 com 클래스를 사용할 수 있습니다.

이력서

  • Google omaha는 여전히 살아 있지만 게으른 방식으로
  • 버그가 수정되었지만 핫픽스를 기대하지 않음
  • google omaha는 Windows Vista 이상에서 지원되는 Windows 클라이언트 앱에 적합합니다.
  • 내가 사용하는 서버 측은 크로스 플랫폼 지원을 위해 스파클도 지원합니다.
  • 피드백 및 충돌도 서버에서 지원됩니다.
    • 피드백은 Google 프로토콜 버퍼와 함께 전송됩니다.
    • 브레이크 패드로 충돌 처리가 수행됩니다.

나는 개인적으로 내 솔루션을 구현하는 대신 Google omaha를 사용할 것입니다. 그러나 우리는 내부에 대해 논의 할 것입니다.


.NET 세계에서는 ClickOnce 배포를 살펴볼 수 있습니다 .


오마하를 구성하는 데 며칠을 보냈습니다. 지루하지만 불가능하지는 않습니다. 자세한 자습서 에서 필요한 단계를 요약했습니다 . 내가 사용 오마하 서버를 백엔드에 대해. 프로덕션 사용에 대해서는 아직 언급 할 수 없지만 자세히 알아 보면이 답변을 업데이트 할 것입니다.


자동 업데이트 메커니즘은 내가 개인적으로 직접 코딩하고 항상 과거에 사용했던 것입니다. 멀티 기가 바이트 애플리케이션이 있고 비트와 조각 만 업로드하려는 경우가 아니라면 자신의 코드 / 설치 프로그램에 의존하십시오. 즉, Google의 오픈 소스 라이브러리를 전혀 보지 않았고 .. 존재하는지도 몰랐습니다. 나는 그것이 당신이 직접 코딩 할 수있는 것보다 더 나은 것을 제공한다고 상상할 수 없으며, 당신 자신의 코드를 사용하면 라이선스 제한에 구속되지 않습니다.

참고 URL : https://stackoverflow.com/questions/3711435/what-is-the-experience-with-google-omaha-their-auto-update-engine-for-chrome

반응형