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를 사용자 정의하는 것이 쉽지 않습니다.
- 업데이트가 그렇게 자주 게시되지 않습니다.
- crystalnix / omaha는 커뮤니티에서 관리하며 메인 저장소를 자신의 저장소에 병합하려고합니다. 추가 기능이 구현되고 기본 사항이 수정되었습니다.
- google / omaha가 더 활동적이며 Google의 변경 사항이 추가되지만 자주는 아닙니다.
- 모든 언어로 수동 업데이트를 구현하려면 com 클래스를 사용할 수 있습니다.
이력서
- Google omaha는 여전히 살아 있지만 게으른 방식으로
- 버그가 수정되었지만 핫픽스를 기대하지 않음
- google omaha는 Windows Vista 이상에서 지원되는 Windows 클라이언트 앱에 적합합니다.
- 내가 사용하는 서버 측은 크로스 플랫폼 지원을 위해 스파클도 지원합니다.
- 피드백 및 충돌도 서버에서 지원됩니다.
- 피드백은 Google 프로토콜 버퍼와 함께 전송됩니다.
- 브레이크 패드로 충돌 처리가 수행됩니다.
나는 개인적으로 내 솔루션을 구현하는 대신 Google omaha를 사용할 것입니다. 그러나 우리는 내부에 대해 논의 할 것입니다.
.NET 세계에서는 ClickOnce 배포를 살펴볼 수 있습니다 .
오마하를 구성하는 데 며칠을 보냈습니다. 지루하지만 불가능하지는 않습니다. 자세한 자습서 에서 필요한 단계를 요약했습니다 . 내가 사용 오마하 서버를 백엔드에 대해. 프로덕션 사용에 대해서는 아직 언급 할 수 없지만 자세히 알아 보면이 답변을 업데이트 할 것입니다.
자동 업데이트 메커니즘은 내가 개인적으로 직접 코딩하고 항상 과거에 사용했던 것입니다. 멀티 기가 바이트 애플리케이션이 있고 비트와 조각 만 업로드하려는 경우가 아니라면 자신의 코드 / 설치 프로그램에 의존하십시오. 즉, Google의 오픈 소스 라이브러리를 전혀 보지 않았고 .. 존재하는지도 몰랐습니다. 나는 그것이 당신이 직접 코딩 할 수있는 것보다 더 나은 것을 제공한다고 상상할 수 없으며, 당신 자신의 코드를 사용하면 라이선스 제한에 구속되지 않습니다.
'Program Club' 카테고리의 다른 글
| Angular ui-router : ui-views vs 디렉티브? (0) | 2020.12.09 |
|---|---|
| 구조화 된 바인딩으로 std :: ignore? (0) | 2020.12.09 |
| 높이 : 0 패딩을 숨기지 않는 이유 (0) | 2020.12.09 |
| DLL 등록은 무엇을합니까? (0) | 2020.12.09 |
| 내 활동 중 하나가 포 그라운드에 있는지 확인하는 방법 (0) | 2020.12.09 |