Fix Windows delta updates (#31937)
Chromium 142 broke delta updates on Windows. This commit fixes them by reverting upstream commits 13ca199c and a4d120da with a few patches, vendored code and chromium_src overrides. The changes should affect the browser Windows installer only, and not the Omaha update client. Co-authored-by: Max Karolinskiy <max@brave.com>
This commit is contained in:
co-authored by
Max Karolinskiy
parent
d34a60dc3c
commit
49faa97bb6
@@ -91,6 +91,15 @@ if (is_win || is_mac || is_linux) {
|
||||
brave_all_unit_tests_deps += [ "//brave/updater:brave_updater_unittests" ]
|
||||
}
|
||||
|
||||
if (is_win) {
|
||||
# These tests are especially important while we are maintaining the delta
|
||||
# update logic ourselves. See github.com/brave/brave-core/pull/31937.
|
||||
brave_all_unit_tests_deps += [
|
||||
"//chrome/installer/setup:setup_unittests",
|
||||
"//chrome/installer/util:installer_util_unittests",
|
||||
]
|
||||
}
|
||||
|
||||
# This group is for unit tests that run as part of brave_all_unit_tests. Other
|
||||
# tests that you only want to build should be added directly to `all` group
|
||||
group("brave_all_unit_tests") {
|
||||
|
||||
@@ -2814,6 +2814,8 @@ Brave is unable to recover your settings.
|
||||
Google Chrome Beta
|
||||
</message><message name="IDS_CHROME_SHORTCUT_NAME_DEV" desc="The Chrome shortcut name for dev channel">
|
||||
Google Chrome Dev
|
||||
</message></messages>
|
||||
</message><if expr="is_win"><message name="IDS_SETUP_PATCH_FAILED" desc="Error message when setup.exe fails to patch itself.">
|
||||
Installation failed due to unspecified error. Please download Brave again.
|
||||
</message></if></messages>
|
||||
</release>
|
||||
</grit>
|
||||
|
||||
@@ -698,4 +698,5 @@ Brave kan nie jou instellings herwin nie.</translation>
|
||||
<translation id="79269250264141507">Wanneer jy iets in die adresbalk of soekkassie tik, stuur Brave wat jy tik na jou versteksoekenjin toe om beter voorstelle te kry. Dit is af in Incognito.</translation>
|
||||
<translation id="2589970573128789862">Brave Incognito</translation>
|
||||
<translation id="5994282802285556682">Brave sal jou waarsku voordat ’n werf met ’n onveilige verbinding gelaai word wanneer jy in Incognitomodus blaai</translation>
|
||||
<translation id="6283840329609797763">Kon weens 'n ongespesifiseerde fout nie installeer nie. Laai Brave asseblief weer af.</translation>
|
||||
</translationbundle>
|
||||
@@ -700,4 +700,5 @@ Brave ቅንብሮችዎን ማስመለስ አልቻለም።</translation>
|
||||
<translation id="79269250264141507">በአድራሻ አሞሌው ወይም የፍለጋ ሳጥን ላይ ሲተይቡ፣ Brave የተሻሉ ጥቆማዎችን ለማግኘት በእርስዎ ነባሪ የፍለጋ ሞተር የተየቡትን ይልካል። ይህ በግላዊነት ውስጥ ይጠፋል።</translation>
|
||||
<translation id="2589970573128789862">Brave Private</translation>
|
||||
<translation id="5994282802285556682">በግል ሁነታ ውስጥ ሲያስሱ Brave ደህንነቱ ያልተጠበቀ ግንኙነት በመጠቀም ጣቢያ ከመጫንዎ በፊት ያስጠነቅቀዎታል</translation>
|
||||
<translation id="6283840329609797763">ተለይቶ ባልታወቀ ስህተት ምክንያት ጭነት ከሽፏል። እባክዎ Braveን እንደገና ያውርዱ።</translation>
|
||||
</translationbundle>
|
||||
@@ -699,4 +699,5 @@
|
||||
<translation id="79269250264141507">عندما تكتب في شريط العناوين أو مربع البحث، فإن Brave يرسل ما تكتبه إلى محرك البحث الافتراضي للحصول على اقتراحات أفضل. هذا متوقف في الوضع الخاص.</translation>
|
||||
<translation id="2589970573128789862">Brave Private</translation>
|
||||
<translation id="5994282802285556682">عند التصفح في وضع خاص، سيحذرك متصفح Brave قبل تحميل موقع باستخدام اتصال غير آمن</translation>
|
||||
<translation id="6283840329609797763">تعذّر التثبيت نظرًا لحدوث خطأ غير محدد. يُرجى إعادة تنزيل Brave.</translation>
|
||||
</translationbundle>
|
||||
@@ -698,4 +698,5 @@ Braveএ আপোনাৰ ছেটিংসমূহ পুনৰুদ্ধ
|
||||
<translation id="3146636448190445245">আপোনাৰ অৱস্থান ব্যৱহাৰ কৰিবলৈ, <ph name="BEGIN_LINK"/>ছিষ্টেমৰ ছেটিঙ<ph name="END_LINK"/>ত Braveক এক্সেছ দিয়ক</translation>
|
||||
<translation id="137466361146087520">Google Chrome বিটা</translation>
|
||||
<translation id="7535429826459677826">Google Chrome Dev</translation>
|
||||
<translation id="6283840329609797763">অনির্দিষ্ট আসোঁৱাহৰ বাবে ইনষ্টলেশ্বন কৰিব পৰা নগ’ল। অনুগ্ৰহ কৰি পুনৰ Brave ডাউনল’ড কৰক।</translation>
|
||||
</translationbundle>
|
||||
@@ -706,4 +706,5 @@ Bəzi funksiyalar əlçatmaz ola bilər. Xüsusi profil direktoriyası göstəri
|
||||
<translation id="79269250264141507">Ünvan panelinə və ya axtarış qutusuna yazdıqda, Brave daha yaxşı tövsiyələr vermək üçün yazdıqlarınızı standart axtarış mühərrikinizə göndərir. Bu xüsusiyyət Gizli rejimdə bağlıdır.</translation>
|
||||
<translation id="2589970573128789862">Brave Gizli rejimi</translation>
|
||||
<translation id="5994282802285556682">İnternetə Gizli rejimdə baxarkən Brave təhlükəli bağlantıya malik bir saytdan istifadə etməzdən əvvəl sizə xəbərdarlıq göndərir</translation>
|
||||
<translation id="6283840329609797763">Naməlum xəta üzündən quraşdırmaq alınmadı. Brave'u yenidən endirin.</translation>
|
||||
</translationbundle>
|
||||
@@ -697,4 +697,5 @@
|
||||
<translation id="3146636448190445245">Каб выкарыстоўваць месцазнаходжанне, дайце Brave адпаведны доступ у <ph name="BEGIN_LINK"/>сістэмных наладах<ph name="END_LINK"/></translation>
|
||||
<translation id="137466361146087520">Google Chrome (бэта-версія)</translation>
|
||||
<translation id="7535429826459677826">Google Chrome для распрацоўшчыкаў</translation>
|
||||
<translation id="6283840329609797763">Збой усталявання з-за нявызначанай памылкі. Спампуйце Brave зноў.</translation>
|
||||
</translationbundle>
|
||||
@@ -693,4 +693,5 @@
|
||||
<translation id="79269250264141507">Когато пишете в адресната лента или полето за търсене, Brave автоматично изпраща написаното към Вашата търсачка по подразбиране, за да получите по-добри предложения. Тази функция е изключена в режим Личен.</translation>
|
||||
<translation id="2589970573128789862">Поверителен режим на Brave</translation>
|
||||
<translation id="5994282802285556682">Когато сърфирате в частен режим, Brave ще ви предупреждава, преди да заредите сайт, който използва незащитена връзка.</translation>
|
||||
<translation id="6283840329609797763">Инсталирането не бе успешно поради неизвестна грешка. Моля, изтеглете отново Brave.</translation>
|
||||
</translationbundle>
|
||||
@@ -694,4 +694,5 @@ Brave আপনার সেটিংস পুনরুদ্ধার কর
|
||||
<translation id="79269250264141507">আপনি যখন অ্যাড্রেস বারে বা সন্ধানের বক্সে টাইপ করেন তখন আরো ভালো পরামর্শ পেতে Brave, আপনি যা টাইপ করেন সেটিকে আপনার ডিফল্ট সন্ধানের ইঞ্জিনে পাঠায়। ব্যক্তিগত-তে এটি বন্ধ।</translation>
|
||||
<translation id="2589970573128789862">Brave ব্যক্তিগত</translation>
|
||||
<translation id="5994282802285556682">ব্যক্তিগত মোডে ব্রাউজ করার সময়, একটি অনিরাপদ সংযোগ ব্যবহার করে একটি সাইট লোড করার আগে Brave আপনাকে সতর্ক করবে</translation>
|
||||
<translation id="6283840329609797763">অনির্দিষ্ট ত্রুটির কারণে ইনস্টল করা যায়নি৷ অনুগ্রহ করে Brave আবার ডাউনলোড করুন৷</translation>
|
||||
</translationbundle>
|
||||
@@ -698,4 +698,5 @@ Brave ne može vratiti vaše postavke.</translation>
|
||||
<translation id="3146636448190445245">Da koristite lokaciju, odobrite Braveu pristup u <ph name="BEGIN_LINK"/>postavkama sistema<ph name="END_LINK"/></translation>
|
||||
<translation id="137466361146087520">Google Chrome Beta</translation>
|
||||
<translation id="7535429826459677826">Google Chrome Dev</translation>
|
||||
<translation id="6283840329609797763">Instalacija nije uspjela zbog neodređene greške. Ponovo preuzmite Brave.</translation>
|
||||
</translationbundle>
|
||||
@@ -699,4 +699,5 @@ Brave no pot recuperar la configuració.</translation>
|
||||
<translation id="79269250264141507">Quan escrius a la barra d'adreces o al quadre de cerca, Brave envia el que escrius al motor de cerca predeterminat per obtenir millors suggeriments. Aquesta opció està desactivada en el mode d'incògnit.</translation>
|
||||
<translation id="2589970573128789862">Brave Incògnit</translation>
|
||||
<translation id="5994282802285556682">Quan navegues en mode d'incògnit, Brave t'avisarà abans de carregar un lloc web que utilitzi una connexió no segura</translation>
|
||||
<translation id="6283840329609797763">La instal·lació ha fallat a causa d'un error no especificat. Torneu a baixar Brave.</translation>
|
||||
</translationbundle>
|
||||
@@ -700,4 +700,5 @@ Brave nemůže vaše nastavení obnovit.</translation>
|
||||
<translation id="79269250264141507">Když zadáváte text do adresního řádku nebo vyhledávacího pole, Brave zasílá vámi psaný text do vašeho výchozího vyhledávače, aby byla zobrazena lepší doporučení. To je v soukromém režimu vypnuto.</translation>
|
||||
<translation id="2589970573128789862">Soukromé Brave</translation>
|
||||
<translation id="5994282802285556682">Při procházení v soukromém režimu vás Brave před načtením webu prostřednictvím nezabezpečeného připojení upozorní</translation>
|
||||
<translation id="6283840329609797763">Instalace se z neznámého důvodu nezdařila. Stáhněte prosím Brave znovu.</translation>
|
||||
</translationbundle>
|
||||
@@ -698,4 +698,5 @@ Ni all Brave adfer eich gosodiadau.</translation>
|
||||
<translation id="3146636448190445245">I ddefnyddio'ch lleoliad, rhowch fynediad i Brave yn y <ph name="BEGIN_LINK"/>gosodiadau system<ph name="END_LINK"/></translation>
|
||||
<translation id="137466361146087520">Beta Google Chrome</translation>
|
||||
<translation id="7535429826459677826">Google Chrome Dev</translation>
|
||||
<translation id="6283840329609797763">Methwyd y gosodiad oherwydd gwall amhenodol. Lawrlwythwch Brave eto.</translation>
|
||||
</translationbundle>
|
||||
@@ -696,4 +696,5 @@ Brave kan ikke gendanne dine præferencer.</translation>
|
||||
<translation id="79269250264141507">Når du skriver noget i adresselinjen eller søgefeltet, sender Brave de indtastede værdier til din primære søgemaskine for at få bedre forslag. Dette er slået fra i Privat-tilstand.</translation>
|
||||
<translation id="2589970573128789862">Brave Private</translation>
|
||||
<translation id="5994282802285556682">Når du browser i Privat tilstand, vil Brave advare dig, før du indlæser et websted ved hjælp af en usikker forbindelse</translation>
|
||||
<translation id="6283840329609797763">Installationen mislykkedes på grund af en uspecificeret fejl. Download Brave igen.</translation>
|
||||
</translationbundle>
|
||||
@@ -695,4 +695,5 @@ Brave kann deine Einstellungen nicht wiederherstellen.</translation>
|
||||
<translation id="79269250264141507">Wenn Sie etwas in die Adressleiste oder das Suchfeld eingeben, sendet Brave Ihre Eingabe an Ihre Standardsuchmaschine, um bessere Vorschläge zu erhalten. Dies ist im Privatmodus deaktiviert.</translation>
|
||||
<translation id="2589970573128789862">Brave-Privatmodus</translation>
|
||||
<translation id="5994282802285556682">Wenn Sie im privaten Modus surfen, warnt Brave Sie, bevor Sie eine Website über eine unsichere Verbindung laden.</translation>
|
||||
<translation id="6283840329609797763">Die Installation konnte aufgrund eines undefinierten Fehlers nicht abgeschlossen werden. Bitte lade Brave erneut herunter.</translation>
|
||||
</translationbundle>
|
||||
@@ -708,4 +708,5 @@
|
||||
<translation id="79269250264141507">Όταν πληκτρολογείτε κάτι στη γραμμή διευθύνσεων ή στο πλαίσιο αναζήτησης, το Brave στέλνει το περιεχόμενο που πληκτρολογείτε στην προεπιλεγμένη μηχανή αναζήτησής σας για να λαμβάνετε καλύτερες προτάσεις. Αυτή η επιλογή είναι απενεργοποιημένη στην Ιδιωτική λειτουργία.</translation>
|
||||
<translation id="2589970573128789862">Ιδιωτική λειτουργία Brave</translation>
|
||||
<translation id="5994282802285556682">Κατά την Ανώνυμη Περιήγηση, ο Brave θα σας προειδοποιεί πριν φορτώσετε κάποια ιστοσελίδα με μη ασφαλή σύνδεση</translation>
|
||||
<translation id="6283840329609797763">Η εγκατάσταση απέτυχε λόγω μη καθορισμένου σφάλματος. Κατεβάστε το Brave ξανά.</translation>
|
||||
</translationbundle>
|
||||
@@ -701,4 +701,5 @@ Brave is unable to recover your settings.</translation>
|
||||
<translation id="79269250264141507">When you type in the address bar or search box, Brave sends what you type to your default search engine to get better suggestions. This is off in Private.</translation>
|
||||
<translation id="2589970573128789862">Brave Private</translation>
|
||||
<translation id="5994282802285556682">When browsing in Private mode, Brave will warn you before loading a site using an insecure connection</translation>
|
||||
<translation id="6283840329609797763">Installation failed due to unspecified error. Please download Brave again.</translation>
|
||||
</translationbundle>
|
||||
@@ -693,4 +693,5 @@
|
||||
<translation id="79269250264141507">Cuando escribes en la barra de direcciones o en el cuadro de búsqueda, Brave envía lo que escribes a tu motor de búsqueda predeterminado para obtener mejores sugerencias. Esto está desactivado en el modo de incógnito.</translation>
|
||||
<translation id="2589970573128789862">Modo privado de Brave</translation>
|
||||
<translation id="5994282802285556682">Cuando navegues en modo de incógnito, Brave te avisará antes de cargar un sitio que utilice una conexión no segura</translation>
|
||||
<translation id="6283840329609797763">La instalación falló debido a un error no especificado. Descarga Brave otra vez.</translation>
|
||||
</translationbundle>
|
||||
@@ -710,4 +710,5 @@ Brave no puede recuperar tu configuración.</translation>
|
||||
<translation id="79269250264141507">Cuando escribes en la barra de direcciones o en el cuadro de búsqueda, Brave envía lo que escribes a tu motor de búsqueda predeterminado para obtener mejores sugerencias. Esta función está desactivada en el modo de incógnito.</translation>
|
||||
<translation id="2589970573128789862">Modo privado de Brave</translation>
|
||||
<translation id="5994282802285556682">Al navegar en el modo privado, Brave te advertirá cada vez que trates de cargar un sitio web con una conexión no segura</translation>
|
||||
<translation id="6283840329609797763">La instalación ha fallado debido a un error no especificado. Vuelve a descargar Brave.</translation>
|
||||
</translationbundle>
|
||||
@@ -699,4 +699,5 @@ Brave ei saa teie seadeid taastada.</translation>
|
||||
<translation id="79269250264141507">Kui sisestate midagi aadressiribale või otsingukasti, saadab Brave sisestatava teie vaikeotsingumootorile, et saada paremaid soovitusi. Privaatses režiimis on see välja lülitatud.</translation>
|
||||
<translation id="2589970573128789862">Brave’i privaatrežiim</translation>
|
||||
<translation id="5994282802285556682">Privaatrežiimis sirvimisel hoiatab Brave teid enne ebaturvalise ühenduse kaudu veebisaidi laadimist</translation>
|
||||
<translation id="6283840329609797763">Installimine ebaõnnestus tundmatu vea tõttu. Laadige Brave uuesti alla.</translation>
|
||||
</translationbundle>
|
||||
@@ -700,4 +700,5 @@ Brave-ek ezin ditu ezarpenak berreskuratu.</translation>
|
||||
<translation id="79269250264141507">Helbide-barran edo bilaketa-koadroan idazten duzunean, Bravek zuk idatzitakoa zure lehenetsitako bilatzaileari bidaltzen dio iradokizun hoberenak lortzeko. Hau Pribatuan itzalita dago.</translation>
|
||||
<translation id="2589970573128789862">Brave Pribatua</translation>
|
||||
<translation id="5994282802285556682">Modu Pribatuan nabigatzean, Bravek webgune bat konexio ez-seguru bat erabiltzen ari dela kargatu aurretik ohartaraziko zaitu.</translation>
|
||||
<translation id="6283840329609797763">Instalazioak huts egin du zehaztu gabeko errore batengatik. Deskargatu Brave berriro.</translation>
|
||||
</translationbundle>
|
||||
@@ -697,4 +697,5 @@ Brave قادر به بازیابی تنظیمات شما نیست.</translation>
|
||||
<translation id="79269250264141507">وقتی در نوار آدرس یا کادر جستجو تایپ میکنید، Brave آنچه را که تایپ میکنید به موتور جستجوی پیشفرض شما ارسال میکند تا پیشنهادات بهتری دریافت کند. این قابلیت در حالت «خصوصی» خاموش است.</translation>
|
||||
<translation id="2589970573128789862">Brave خصوصی</translation>
|
||||
<translation id="5994282802285556682">هنگام مرور صفحات در حالت خصوصی، Brave قبل از بارگیری سایت با استفاده از اتصال ناامن به شما هشدار میدهد.</translation>
|
||||
<translation id="6283840329609797763">به دلیل خطای نامشخص، نصب ناموفق بود. لطفاً دوباره Brave را بارگیری کنید.</translation>
|
||||
</translationbundle>
|
||||
@@ -699,4 +699,5 @@ Brave ei voi palauttaa asetuksiasi.</translation>
|
||||
<translation id="79269250264141507">Kun kirjoitat tekstiä osoitepalkkiin tai hakukenttään, Brave lähettää kirjoittamasi tekstin oletushakukoneeseesi, jotta saat parempia ehdotuksia. Tämä on pois päältä yksityisessä tilassa.</translation>
|
||||
<translation id="2589970573128789862">Braven yksityinen tila</translation>
|
||||
<translation id="5994282802285556682">Silloin kun selailet yksityisessä tilassa, Brave varoittaa ennen kuin lataat epävarmaa yhteyttä käyttävän sivuston.</translation>
|
||||
<translation id="6283840329609797763">Asennus epäonnistui määrittelemättömän virheen vuoksi. Lataa Brave uudelleen.</translation>
|
||||
</translationbundle>
|
||||
@@ -701,4 +701,5 @@ Hindi mabawi ng Brave ang iyong mga setting.</translation>
|
||||
<translation id="79269250264141507">Kapag nag-type ka sa address bar o box para sa paghahanap, ipinapadala ng Brave ang tina-type mo sa iyong default na search engine para makakuha ng mas mahuhusay na suhestyon. Naka-off ito sa Pribado.</translation>
|
||||
<translation id="2589970573128789862">Brave Private</translation>
|
||||
<translation id="5994282802285556682">Kapag nagba-browse sa Private mode, babalaan ka ng Brave bago mag-load ng site gamit ang isang hindi secure na koneksyon</translation>
|
||||
<translation id="6283840329609797763">Nabigo ang pag-install dahil sa hindi natukoy na error. Mangyaring i-download muli ang Brave.</translation>
|
||||
</translationbundle>
|
||||
@@ -700,4 +700,5 @@ Brave est incapable de récupérer vos paramètres.</translation>
|
||||
<translation id="79269250264141507">Lorsque vous tapez dans la barre d'adresse ou la zone de recherche, Brave envoie ce que vous saisissez à votre moteur de recherche par défaut pour obtenir de meilleures suggestions. Cette fonctionnalité est désactivée en mode de navigation privée.</translation>
|
||||
<translation id="2589970573128789862">Navigation privée Brave</translation>
|
||||
<translation id="5994282802285556682">Lorsque vous naviguerez en mode privé, Brave vous avertira avant de charger un site via une connexion non sécurisée</translation>
|
||||
<translation id="6283840329609797763">Échec de l'installation en raison d'une erreur non spécifiée. Veuillez télécharger Brave à nouveau.</translation>
|
||||
</translationbundle>
|
||||
@@ -699,4 +699,5 @@ Brave ne peut pas récupérer vos paramètres.</translation>
|
||||
<translation id="79269250264141507">Lorsque vous tapez dans la barre d'adresse ou la zone de recherche, Brave envoie ce que vous saisissez à votre moteur de recherche par défaut pour obtenir de meilleures suggestions. Cette fonctionnalité est désactivée en mode de navigation privée.</translation>
|
||||
<translation id="2589970573128789862">Navigation privée Brave</translation>
|
||||
<translation id="5994282802285556682">Lorsque vous naviguerez en mode privé, Brave vous avertira avant de charger un site via une connexion non sécurisée</translation>
|
||||
<translation id="6283840329609797763">Échec de l'installation en raison d'une erreur non spécifiée. Veuillez télécharger Brave à nouveau.</translation>
|
||||
</translationbundle>
|
||||
@@ -698,4 +698,5 @@ Brave non pode recuperar a túa configuración.</translation>
|
||||
<translation id="79269250264141507">Cando escribas na barra de enderezos ou na caixa de busca, Brave enviará o que escribas ao teu motor de busca predeterminado para obter mellores suxestións. Esta opción está desactivada na opción Privado.</translation>
|
||||
<translation id="2589970573128789862">Modo de incógnito de Brave</translation>
|
||||
<translation id="5994282802285556682">Cando navegues no modo privado, Brave avisarate antes de cargar un sitio cunha conexión insegura</translation>
|
||||
<translation id="6283840329609797763">Non se puido efectuar a instalación debido a un erro. Volve descargar Brave.</translation>
|
||||
</translationbundle>
|
||||
@@ -698,4 +698,5 @@ Brave તમારા સેટિંગને રિકવર શકતું
|
||||
<translation id="79269250264141507">જ્યારે તમે ઍડ્રેસ બાર અથવા શોધ બૉક્સમાં ટાઇપ કરો છો, ત્યારે બહેતર સૂચનો મેળવવા માટે Brave તમે જે ટાઇપ કરો છો તેને તમારા ડિફૉલ્ટ શોધ એન્જિનને મોકલે છે. આ સુવિધા છૂપા મોડમાં કામ કરતી નથી.</translation>
|
||||
<translation id="2589970573128789862">Brave છૂપો મોડ</translation>
|
||||
<translation id="5994282802285556682">છૂપા મોડમાં બ્રાઉઝ કરતી વખતે, અસુરક્ષિત કનેક્શનનો ઉપયોગ કરીને સાઇટ લોડ કરતા પહેલાં Brave તમને ચેતવણી આપશે</translation>
|
||||
<translation id="6283840329609797763">અનુલ્લેખિત ભૂલને કારણે ઇન્સ્ટોલેશન નિષ્ફળ રહ્યું. કૃપા કરીને Brave ફરીથી ડાઉનલોડ કરો.</translation>
|
||||
</translationbundle>
|
||||
@@ -695,4 +695,5 @@ Brave आपकी सेटिंग बहाल नहीं कर सकत
|
||||
<translation id="79269250264141507">जब आप पता बार या खोज बॉक्स में टाइप करते हैं, तो बेहतर सुझाव पाने के लिए, आप जो कुछ टाइप करते हैं Brave उसे आपके डिफ़ॉल्ट खोज इंजन पर भेजता है। यह 'निजी' में बंद रहता है।</translation>
|
||||
<translation id="2589970573128789862">Brave प्राइवेट</translation>
|
||||
<translation id="5994282802285556682">निजी मोड में ब्राउज़ करते समय, असुरक्षित कनेक्शन का उपयोग करके साइट लोड करने से पहले Brave आपको चेतावनी देगा</translation>
|
||||
<translation id="6283840329609797763">अनिर्दिष्ट कारणों से इंस्टॉलेशन विफल हुआ. कृपया Brave फिर से डाउनलोड करें.</translation>
|
||||
</translationbundle>
|
||||
@@ -700,4 +700,5 @@ Brave ne može oporaviti vaše postavke.</translation>
|
||||
<translation id="79269250264141507">Kada upisujete u adresnu traku ili okvir za pretraživanje, Brave šalje što upisujete zadanoj tražilici za dobivanje boljih prijedloga. To je isključeno u privatnom načinu rada.</translation>
|
||||
<translation id="2589970573128789862">Privatni način rada preglednika Brave</translation>
|
||||
<translation id="5994282802285556682">Kada pregledavate u privatnom načinu rada, Brave će vas upozoriti prije učitavanja stranice uporabom nesigurne veze</translation>
|
||||
<translation id="6283840329609797763">Instalacija nije uspjela zbog nepoznate pogreške. Ponovo preuzmite Brave.</translation>
|
||||
</translationbundle>
|
||||
@@ -697,4 +697,5 @@ A Brave nem tudja visszaállítani a beállításait.</translation>
|
||||
<translation id="79269250264141507">Amikor szöveget ír a címsávba vagy keresőmezőbe, a Brave elküldi a beírt szöveget az alapértelmezett keresőmotornak a javaslatok fejlesztése érdekében. Ez Privát módban ki van kapcsolva.</translation>
|
||||
<translation id="2589970573128789862">Brave privát mód</translation>
|
||||
<translation id="5994282802285556682">Amikor Privát módban böngészik, a Brave figyelmeztetni fogja Önt, mielőtt betöltene egy nem biztonságos kapcsolatot használó oldalt</translation>
|
||||
<translation id="6283840329609797763">A telepítés egy meg nem határozott hiba miatt nem sikerült. Kérjük, töltse le újra a Braveot.</translation>
|
||||
</translationbundle>
|
||||
@@ -698,4 +698,5 @@ Brave-ին չհաջողվեց վերականգնել ձեր կարգավորու
|
||||
<translation id="3146636448190445245">Ձեր տեղադրության տվյալներն օգտագործելու համար Brave-ին թույլտվություն տրամադրեք <ph name="BEGIN_LINK"/>համակարգի կարգավորումներում<ph name="END_LINK"/></translation>
|
||||
<translation id="137466361146087520">Google Chrome Բետա</translation>
|
||||
<translation id="7535429826459677826">Google Chrome Dev</translation>
|
||||
<translation id="6283840329609797763">Անհայտ սխալի պատճառով տեղադրումը չհաջողվեց: Նորից ներբեռնեք Brave-ը:</translation>
|
||||
</translationbundle>
|
||||
@@ -699,4 +699,5 @@ Brave tidak dapat memulihkan setelan Anda.</translation>
|
||||
<translation id="79269250264141507">Ketika Anda mengetik di bilah alamat atau kotak pencarian, Brave mengirim hal yang Anda ketik ke mesin pencarian bawaan Anda untuk mendapatkan usulan yang lebih baik. Ini dinonaktifkan di mode Privat.</translation>
|
||||
<translation id="2589970573128789862">Privat Brave</translation>
|
||||
<translation id="5994282802285556682">Saat meramban dalam mode Privat, Brave akan memperingatkan Anda sebelum memuat situs dengan menggunakan koneksi yang tidak aman</translation>
|
||||
<translation id="6283840329609797763">Pemasangan gagal karena kesalahan yang tidak ditentukan. Download Brave lagi.</translation>
|
||||
</translationbundle>
|
||||
@@ -698,4 +698,5 @@ Brave getur ekki endurheimt stillingarnar þínar.</translation>
|
||||
<translation id="3146636448190445245">Veittu Brave aðgang að staðsetningunni þinni í <ph name="BEGIN_LINK"/>kerfisstillingum<ph name="END_LINK"/> til að geta notað hana</translation>
|
||||
<translation id="137466361146087520">Google Chrome Beta</translation>
|
||||
<translation id="7535429826459677826">Google Chrome Dev</translation>
|
||||
<translation id="6283840329609797763">Uppsetning mistókst vegna ótilgreindrar villu. Sæktu Brave aftur.</translation>
|
||||
</translationbundle>
|
||||
@@ -698,4 +698,5 @@ Brave non è in grado di recuperare le impostazioni.</translation>
|
||||
<translation id="79269250264141507">Quando digiti qualcosa nella barra degli indirizzi o nella casella di ricerca, Brave invia il testo digitato al tuo motore di ricerca predefinito per ottenere suggerimenti migliori. Questa opzione è disattivata nella modalità privata.</translation>
|
||||
<translation id="2589970573128789862">Modalità privata Brave</translation>
|
||||
<translation id="5994282802285556682">Navigando in modalità privata, riceverai un avviso da Brave prima di caricare un sito tramite una connessione non sicura</translation>
|
||||
<translation id="6283840329609797763">Installazione non riuscita a causa di un errore imprecisato. Scarica di nuovo Brave.</translation>
|
||||
</translationbundle>
|
||||
@@ -697,4 +697,5 @@ Brave לא יכול לשחזר את ההגדרות שלך.</translation>
|
||||
<translation id="79269250264141507">כשאתה מקליד בשורת הכתובת או בתיבת החיפוש, Brave שולח את מה שאתה מקליד למנוע החיפוש המוגדר כברירת מחדל כדי לקבל הצעות טובות יותר. זה לא פעיל בפרטי.</translation>
|
||||
<translation id="2589970573128789862">פרטי אמיץ</translation>
|
||||
<translation id="5994282802285556682">בעת גלישה במצב פרטי, Brave תזהיר אותך לפני טעינת אתר המשתמש בחיבור לא מאובטח</translation>
|
||||
<translation id="6283840329609797763">ההתקנה נכשלה בשל שגיאה לא מזוהה. יש להוריד שוב את Brave.</translation>
|
||||
</translationbundle>
|
||||
@@ -689,4 +689,5 @@
|
||||
<translation id="79269250264141507">アドレスバーや検索ボックスに文字を入力すると、Braveは入力した文字をデフォルトの検索エンジンに送信し、より良い候補を取得します。これはプライベートではオフになっています。</translation>
|
||||
<translation id="2589970573128789862">Braveプライベートモード</translation>
|
||||
<translation id="5994282802285556682">プライベートモードでブラウザを利用している場合、安全でない接続を使用してサイトを読み込む前にBraveが警告を表示します</translation>
|
||||
<translation id="6283840329609797763">原因不明のエラーによりインストールに失敗しました。Brave をもう一度ダウンロードしてください。</translation>
|
||||
</translationbundle>
|
||||
@@ -710,4 +710,5 @@ other {Brave-ის განახლებული ვერსია უკ
|
||||
<translation id="79269250264141507">მისამართის ან საძიებო ველში აკრეფილ ტექსტს Brave თქვენს ნაგულისხმევ საძიებო სისტემაში აგზავნის, რათა უკეთესი შეთავაზებები მიიღოთ. პირად რეჟიმში ეს ფუნქცია ავტომატურად გათიშულია.</translation>
|
||||
<translation id="2589970573128789862">Brave Private</translation>
|
||||
<translation id="5994282802285556682">როდესაც ბრაუზინგს კონფიდენციალურ რეჟიმში ახორციელებთ, Brave წინასწარ შეგატყობინებთ, თუკი საიტი საეჭვო კავშირზე ცდილობს ჩატვირთვას</translation>
|
||||
<translation id="6283840329609797763">ინსტალაცია ვერ განხორციელდა გაურკვეველი შეცდომის გამო. ხელახლა ჩამოტვირთეთ Brave.</translation>
|
||||
</translationbundle>
|
||||
@@ -706,4 +706,5 @@ Brave параметрлеріңізді қалпына келтіре алма
|
||||
<translation id="79269250264141507">Мекенжай жолағына немесе іздеу жолағына тергенде, Brave сіздің әдепкі іздеу жүйеңізге жақсы ұсыныстар алу үшін мәтінді жібереді. Бұл Жеке режимде өшірулі.</translation>
|
||||
<translation id="2589970573128789862">Brave Private</translation>
|
||||
<translation id="5994282802285556682">Жеке режимде шолу жасағанда, Brave жүйесі қауіпсіз емес қосылымды пайдаланып сайтты жүктеуден бұрын ескертеді.</translation>
|
||||
<translation id="6283840329609797763">Орнату анықталмаған қате себебінен сәтсіз аяқталды. Brave браузерін қайта жүктеңіз.</translation>
|
||||
</translationbundle>
|
||||
@@ -698,4 +698,5 @@ Brave មិនអាចសង្គ្រោះការកំណត់រប
|
||||
<translation id="79269250264141507">នៅពេលអ្នកវាយក្នុងបារទីតាំងឬប្រអប់ស្វែងរក Brave នឹងផ្ញើអ្វីដែលអ្នកវាយទៅម៉ាស៊ីនស្វែងរកលំនាំដើមរបស់អ្នកដើម្បីទទួលបានការណែនាំល្អប្រសើរជាងមុន។ នេះត្រូវបានបិទក្នុងផ្នែកឯកជន។</translation>
|
||||
<translation id="2589970573128789862">Brave Private</translation>
|
||||
<translation id="5994282802285556682">នៅពេលរុករកក្នុងរបៀបឯកជន Brave នឹងព្រមានអ្នកមុនពេលផ្ទុកវេបសាយដែលប្រើការតភ្ជាប់មិនមានសុវត្ថិភាព</translation>
|
||||
<translation id="6283840329609797763">ការតំឡើងបានបរាជ័យដោយសារកំហុសឆ្គងដែលមិនជាក់លាក់។ សូមទាញយក Brave ម្តងទៀត។</translation>
|
||||
</translationbundle>
|
||||
@@ -690,4 +690,5 @@
|
||||
<translation id="79269250264141507">ನೀವು ವಿಳಾಸ ಬಾರ್ ಅಥವಾ ಹುಡುಕಾಟ ಬಾಕ್ಸ್ನಲ್ಲಿ ಟೈಪ್ ಮಾಡಿದಾಗ, ಉತ್ತಮ ಸಲಹೆಗಳನ್ನು ಪಡೆಯುವುದಕ್ಕಾಗಿ ನೀವು ಟೈಪ್ ಮಾಡುವುದನ್ನು ನಿಮ್ಮ ಡೀಫಾಲ್ಟ್ ಹುಡುಕಾಟ ಇಂಜಿನ್ಗೆ Brave ಕಳುಹಿಸುತ್ತದೆ. ಇದು ಖಾಸಗಿ ಎಂಬಲ್ಲಿ ಆಫ್ ಆಗಿದೆ.</translation>
|
||||
<translation id="2589970573128789862">Brave ಖಾಸಗಿ</translation>
|
||||
<translation id="5994282802285556682">ಖಾಸಗಿ ಮೋಡ್ನಲ್ಲಿ ಬ್ರೌಸಿಂಗ್ ಮಾಡುವಾಗ, ಅಸುರಕ್ಷಿತ ಸಂಪರ್ಕವನ್ನು ಬಳಸಿಕೊಂಡು ಸೈಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡುವುದಕ್ಕೂ ಮೊದಲು Brave ನಿಮ್ಮನ್ನು ಎಚ್ಚರಿಸುತ್ತದೆ</translation>
|
||||
<translation id="6283840329609797763">ಅನಿರ್ದಿಷ್ಟ ದೋಷದಿಂದಾಗಿ ಸ್ಥಾಪನೆ ವಿಫಲವಾಗಿದೆ. ದಯವಿಟ್ಟು ಮತ್ತೊಮ್ಮೆ Brave ಅನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಿ.</translation>
|
||||
</translationbundle>
|
||||
@@ -700,4 +700,5 @@ Brave에서 설정을 복구할 수 없습니다.</translation>
|
||||
<translation id="79269250264141507">주소창이나 검색창에 입력하면 입력하신 내용을 Brave가 기본 검색 엔진으로 보내 추천 결과를 개선합니다. 비공개 모드에서는 꺼집니다.</translation>
|
||||
<translation id="2589970573128789862">Brave Private</translation>
|
||||
<translation id="5994282802285556682">비공개 모드로 탐색 중에 비보안 연결을 사용하는 사이트에 진입하면 로드 전에 Brave가 경고합니다.</translation>
|
||||
<translation id="6283840329609797763">알 수 없는 오류로 인해 설치에 실패했습니다. Brave을 다시 다운로드하세요.</translation>
|
||||
</translationbundle>
|
||||
@@ -698,4 +698,5 @@ Brave параметрлериңизди калыбына келтире алб
|
||||
<translation id="3146636448190445245">Жүргөн жерди колдонуу үчүн Brave'га <ph name="BEGIN_LINK"/>системанын параметрлеринен<ph name="END_LINK"/> кирүүгө уруксат бериңиз</translation>
|
||||
<translation id="137466361146087520">Google Chrome Бета</translation>
|
||||
<translation id="7535429826459677826">Google Chrome Dev</translation>
|
||||
<translation id="6283840329609797763">Белгиси катадан улам, орнотулбай калды. Brave'ду кайра жүктөп алыңыз.</translation>
|
||||
</translationbundle>
|
||||
@@ -698,4 +698,5 @@ Brave ບໍ່ສາມາດກູ້ການຕັ້ງຄ່າຂອງ
|
||||
<translation id="79269250264141507">ເມື່ອທ່ານພິມຢູ່ໃນບີນທີ່ທິດສຳລະທີ່ຢູ່ຕ່ຳຂອງທ່ານ, Brave ຈະສົ່ງມູນທີ່ທ່ານພີລາຍນັ້ປານທເຮັບໃຫ້ທິດສຳລະທີ່ຕັ້ງໂຂມາດເພື້ອໃຫ້ລາຍໄດ້ດີ. ໃຊ້ງານໄດ້.</translation>
|
||||
<translation id="2589970573128789862">ແທການ Brave Private</translation>
|
||||
<translation id="5994282802285556682">ເມື່ອເຊີມມູນໃນເ້ບສ່ວນຕົວ, Brave ຈະກາຍຫຼືວາເຕືອນກ່ຽວກັນໃກ້ເປັນໃນພຽງໃກ້</translation>
|
||||
<translation id="6283840329609797763">ການຕິດຕັ້ງບໍ່ສໍາເລັດ ເນື່ອງຈາກຄວາມຜິດພາດທີ່ບໍ່ໄດ້ລະບຸ. ກະລຸນາດາວໂຫລດ Brave ອີກ.</translation>
|
||||
</translationbundle>
|
||||
@@ -701,4 +701,5 @@ Kai kurios funkcijos gali būti nepasiekiamos. Nurodykite kitą profilio katalog
|
||||
<translation id="79269250264141507">Siekiant užtikrinti, kad gausite tinkamiausius pasiūlymus, užklausa, kurią įvedate adreso juostoje arba paieškos lauke, perduodama numatytajai paieškos sistemai. Ši funkcija išjungta naršant privačiuoju režimu.</translation>
|
||||
<translation id="2589970573128789862">„Brave“ inkognito</translation>
|
||||
<translation id="5994282802285556682">Naršant inkognito režimu, prieš įkeliant svetainę, kurioje naudojamas nesaugus ryšys, „Brave“ jus įspės</translation>
|
||||
<translation id="6283840329609797763">Nepavyko įdiegti dėl nenurodytos klaidos. Atsisiųskite „Brave“ dar kartą.</translation>
|
||||
</translationbundle>
|
||||
@@ -705,4 +705,5 @@ other {Lai lietotu atjauninājumu, administrators pieprasa restartēt pārlūku
|
||||
<translation id="79269250264141507">Kad rakstāt adreses joslā vai meklēšanas lodziņā, to, ko rakstāt, Brave nosūta uz jūsu noklusējuma meklētājprogrammu, lai iegūtu labākus ieteikumus. Inkognito režīmā šī opcija ir izslēgta.</translation>
|
||||
<translation id="2589970573128789862">Brave inkognito</translation>
|
||||
<translation id="5994282802285556682">Pārlūkojot privātajā režīmā, Brave brīdinās jūs pirms vietnes ielādes, izmantojot nedrošu savienojumu</translation>
|
||||
<translation id="6283840329609797763">Instalēšana neizdevās nenoteiktas kļūdas dēļ. Lejupielādējiet pārlūku Brave vēlreiz.</translation>
|
||||
</translationbundle>
|
||||
@@ -698,4 +698,5 @@ Brave не може да ги обнови вашите поставки.</trans
|
||||
<translation id="79269250264141507">Кога пишувате во адресната лента или полето за пребарување, Brave го испраќа напишаното до вашиот стандардно пребарувач за да добиете подобри предлози. Ова е оневозможено во Приватниот режим.</translation>
|
||||
<translation id="2589970573128789862">Brave Приватен</translation>
|
||||
<translation id="5994282802285556682">Кога пребарувате во Приватниот режим, Brave ќе ве предупредува пред да вчита сајт со несигурна врска</translation>
|
||||
<translation id="6283840329609797763">Инсталирањето не успеа поради неназначена грешка. Преземете го Brave повторно.</translation>
|
||||
</translationbundle>
|
||||
@@ -698,4 +698,5 @@
|
||||
<translation id="79269250264141507">നിങ്ങൾ വിലാസ ബാറിലോ സെർച്ച് ബോക്സിലോ ടൈപ്പ് ചെയ്യുമ്പോൾ, മികച്ച നിർദ്ദേശങ്ങൾ ലഭിക്കുന്നതിന് ടൈപ്പ് ചെയ്യുന്നതെന്തോ അത് Brave നിങ്ങളുടെ ഡിഫോൾട്ട് തിരയൽ യന്ത്രത്തിലേക്ക് അയയ്ക്കുന്നു. ഇത് അദൃശ്യ മോഡിൽ ഓഫാണ്.</translation>
|
||||
<translation id="2589970573128789862">Brave അദൃശ്യ മോഡ്</translation>
|
||||
<translation id="5994282802285556682">അദൃശ്യ മോഡിൽ ബ്രൗസ് ചെയ്യുമ്പോൾ, സുരക്ഷിതമല്ലാത്ത കണക്ഷൻ ഉപയോഗിച്ച് ഒരു സൈറ്റ് ലോഡ് ചെയ്യുന്നതിന് മുമ്പ് Brave നിങ്ങൾക്ക് മുന്നറിയിപ്പ് നൽകും</translation>
|
||||
<translation id="6283840329609797763">അവ്യക്തമായ പിശകിനാൽ ഇൻസ്റ്റാൾ ചെയ്യൽ പരാജയപ്പെട്ടു. Brave വീണ്ടും ഡൗൺലോഡ് ചെയ്യുക.</translation>
|
||||
</translationbundle>
|
||||
@@ -694,4 +694,5 @@
|
||||
<translation id="79269250264141507">Та хаягийн баар эсвэл хайлтын хайрцагт бичих үед Brave таны хайлтны илүү сайн санал авахын тулд таны бичсэн зүйлээ үндсэн хайлтын системд явуулдаг. Энэ нь Нууцлалтай горимд идэвхгүй.</translation>
|
||||
<translation id="2589970573128789862">Brave Нууцлалтай</translation>
|
||||
<translation id="5994282802285556682">Нууцлалтай горимоор интернет үзэх үед Brave аюулгүй бус холболттой сайтыг ачаалахаас өмнө танд анхааруулга өгнө.</translation>
|
||||
<translation id="6283840329609797763">Гэнэтийн алдаанаас болж суулгах ажиллагаа амжилтгүй боллоо. Brave-ыг дахин татаж авна уу.</translation>
|
||||
</translationbundle>
|
||||
@@ -697,4 +697,5 @@ Brave तुमची सेटिंग्ज रिकव्हर करू
|
||||
<translation id="79269250264141507">तुम्ही अॅड्रेस बार किंवा सर्च बॉक्समध्ये टाइप करता, तेव्हा अधिक चांगल्या सूचना मिळवण्यासाठी तुम्ही जे टाइप करता ते Brave तुमच्या डीफॉल्ट शोध इंजीनला पाठवते. हे गुप्त मोड मध्ये बंद आहे.</translation>
|
||||
<translation id="2589970573128789862">Brave चा गुप्त मोड</translation>
|
||||
<translation id="5994282802285556682">गुप्त मोडमध्ये ब्राउझ करताना, असुरक्षित कनेक्शन वापरून साइट लोड करण्यापूर्वी Brave तुम्हाला चेतावणी देईल</translation>
|
||||
<translation id="6283840329609797763">नमूद न केलेल्या एररमुळे स्थापना अयशस्वी झाली. कृपया Brave पुन्हा डाउनलोड करा.</translation>
|
||||
</translationbundle>
|
||||
@@ -696,4 +696,5 @@ Brave tidak dapat mengembalikan tetapan anda.</translation>
|
||||
<translation id="79269250264141507">Apabila anda menaipkan maklumat ke dalam bar alamat atau kotak carian, Brave menghantar maklumat yang anda taipkan kepada enjin carian lalai anda untuk mendapatkan cadangan lebih baik. Ciri ini dimatikan dalam penyemak imbas Peribadi.</translation>
|
||||
<translation id="2589970573128789862">Brave Private</translation>
|
||||
<translation id="5994282802285556682">Apabila menyemak imbas dalam mod Peribadi, Brave akan memberikan amaran kepada anda sebelum memuatkan sesuatu laman menggunakan sambungan yang tidak selamat</translation>
|
||||
<translation id="6283840329609797763">Pemasangan gagal disebabkan ralat yang tidak dinyatakan. Sila muat turun semula Brave.</translation>
|
||||
</translationbundle>
|
||||
@@ -706,4 +706,5 @@ Brave သည်သင့်ကြိုတင်ချိန်ညှိချ
|
||||
<translation id="79269250264141507">သင့်လိပ်စာသို့ရှာဖွေပါမည်-</translation>
|
||||
<translation id="2589970573128789862">Brave Private</translation>
|
||||
<translation id="5994282802285556682">Private mode မွ browsing ဆောင်ရွက်နေစဉ် Brave သည် ဖွေလုံးများမတင်မသင့်ဖြစ်သည့် site အသားစများကို မရှိမဖြစ်ပေးပြီးမတင်မနိူင်သော</translation>
|
||||
<translation id="6283840329609797763">မသိရသည့် အမှားတစ်ခုကြောင့် တပ်ဆင်မှု မအေင်မြင်ခဲ့ပါ။ ကျေးဇူးပြုပြီး Brave ကို ထပ်ပြီး ဒေါင်းလုဒ် လုပ်ယူပါ။</translation>
|
||||
</translationbundle>
|
||||
@@ -696,4 +696,5 @@ Brave ले तपाइँका सेटिङहरू पुनर्प
|
||||
<translation id="79269250264141507">जब तपाईले ठेगाना बार वा खोजी बक्समा टाइप गर्नुहुन्छ, Brave थप सुझावहरू प्राप्त गर्न तपाईंले टाइप गर्नु भएको कुरा तपाईँको डिफल्ट खोज इन्जिनमा पठाउँछ। यो निजि मोडमा बन्द हुन्छ।</translation>
|
||||
<translation id="2589970573128789862">Brave निजि</translation>
|
||||
<translation id="5994282802285556682">निजि मोडमा ब्राउजिङ गर्दा, Brave ले असुरक्षित जडान प्रयोग गर्ने साइट लोड गर्नु अघि तपाईंलाई चेतावनी दिनेछ।</translation>
|
||||
<translation id="6283840329609797763">अनिश्</translation>
|
||||
</translationbundle>
|
||||
@@ -700,4 +700,5 @@ Brave kan je instellingen niet herstellen.</translation>
|
||||
<translation id="79269250264141507">Wanneer u iets in de adresbalk of het zoekveld typt, stuurt Brave dat naar uw standaard zoekmachine voor betere suggesties. Dit is uitgeschakeld in Privé.</translation>
|
||||
<translation id="2589970573128789862">Brave Privé</translation>
|
||||
<translation id="5994282802285556682">Wanneer u in privémodus surft, zal Brave u waarschuwen voordat u een site laadt met een onveilige verbinding</translation>
|
||||
<translation id="6283840329609797763">De installatie is mislukt wegens een onbekende fout. Download Brave opnieuw.</translation>
|
||||
</translationbundle>
|
||||
@@ -696,4 +696,5 @@ Brave kan ikke gjenopprette innstillingen dine.</translation>
|
||||
<translation id="79269250264141507">Når du skriver i adressefeltet eller søkefeltet, sender Brave det du skriver inn, til søkemotoren du har som standard, for å få opp bedre forslag. Dette er deaktivert i Privat modus.</translation>
|
||||
<translation id="2589970573128789862">Brave Privat</translation>
|
||||
<translation id="5994282802285556682">Når du surfer i Privat modus, advarer Brave deg før det lastes opp sider via usikre tilkoblinger</translation>
|
||||
<translation id="6283840329609797763">Installeringen mislyktes på grunn av en uspesifisert feil. Last ned Brave på nytt.</translation>
|
||||
</translationbundle>
|
||||
@@ -697,4 +697,5 @@ Brave ଆପଣଙ୍କ ସେଟିଂସ୍କୁ ପୁନରୁଦ୍ଧ
|
||||
<translation id="3146636448190445245">ଆପଣଙ୍କ ଲୋକେସନକୁ ବ୍ୟବହାର କରିବା ପାଇଁ <ph name="BEGIN_LINK"/>ସିଷ୍ଟମ ସେଟିଂସ<ph name="END_LINK"/>ରେ Braveକୁ ଆକ୍ସେସ ଦିଅନ୍ତୁ</translation>
|
||||
<translation id="137466361146087520">Google Chrome ବିଟା</translation>
|
||||
<translation id="7535429826459677826">Google Chrome ଡେଭ୍</translation>
|
||||
<translation id="6283840329609797763">ଅନିର୍ଦ୍ଦିଷ୍ଟ ତ୍ରୁଟି ଯୋଗୁଁ ଇନ୍ଷ୍ଟଲେସନ୍ ବିଫଳ ହୋଇଛି। ଦୟାକରି Brave ପୁଣି ଡାଉନ୍ଲୋଡ୍ କରନ୍ତୁ।</translation>
|
||||
</translationbundle>
|
||||
@@ -698,4 +698,5 @@ Brave ਤੁਹਾਡੀਆਂ ਸੈਟਿੰਗਾਂ ਮੁੜ-ਹਾਸਲ
|
||||
<translation id="79269250264141507">ਜਦੋਂ ਤੁਸੀਂ ਪਤੇ ਦੀ ਪੱਟੀ ਜਾਂ ਖੋਜ ਬਾਕਸ ਵਿੱਚ ਟਾਈਪ ਕਰਦੇ ਹੋ, Brave ਤੁਹਾਡੇ ਜੋ ਕੁਝ ਤੁਸੀਂ ਟਾਈਪ ਕਰਦੇ ਹੋ ਉਸ ਨੂੰ ਚੰਗੇ ਸੁਝਾਅ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਤੁਹਾਡੇ ਡਿਫਾਲਟ ਖੋਜ ਇੰਜਣ ਨੂੰ ਭੇਜਦਾ ਹੈ। ਇਹ ਨਿੱਜੀ ਵਿੱਚ ਬੰਦ ਹੈ।</translation>
|
||||
<translation id="2589970573128789862">Brave Private</translation>
|
||||
<translation id="5994282802285556682">ਨਿੱਜੀ ਮੋਡ ਵਿੱਚ ਬਰਾਊਜ਼ਿੰਗ ਕਰਦੇ ਸਮੇਂ, Brave ਅਸੁਰੱਖਿਅਤ ਕਨੈਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਰਲਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਤੁਹਾਨੂੰ ਚੇਤਾਵਨੀ ਦੇਵੇਗਾ।</translation>
|
||||
<translation id="6283840329609797763">ਅਨਿਸ਼ਚਿਤ ਗੜਬੜ ਕਾਰਨ ਸਥਾਪਨਾ ਅਸਫਲ ਹੋ ਗਈ। ਕਿਰਪਾ ਕਰਕੇ Brave ਨੂੰ ਦੁਬਾਰਾ ਡਾਊਨਲੋਡ ਕਰੋ।</translation>
|
||||
</translationbundle>
|
||||
@@ -696,4 +696,5 @@ Brave nie może odzyskać ustawień.</translation>
|
||||
<translation id="79269250264141507">Kiedy wpisujesz tekst w pasku adresu lub polu wyszukiwania, Brave wysyła wpisywany tekst do domyślnej wyszukiwarki w celu uzyskania lepszych wyników. Ta funkcja jest wyłączona w przeglądaniu prywatnym.</translation>
|
||||
<translation id="2589970573128789862">Tryb prywatny Brave</translation>
|
||||
<translation id="5994282802285556682">Przeglądając strony w trybie prywatnym, otrzymasz ostrzeżenie od Brave, kiedy ładowana strona korzysta z niezabezpieczonego połączenia</translation>
|
||||
<translation id="6283840329609797763">Instalacja nie powiodła się z powodu nieokreślonego błędu. Pobierz Brave ponownie.</translation>
|
||||
</translationbundle>
|
||||
@@ -696,4 +696,5 @@
|
||||
<translation id="79269250264141507">Quando você digita na barra de endereços ou na caixa de pesquisa, o Brave envia o que você digita para o mecanismo de pesquisa padrão para obter melhores sugestões. Isso está desativado em Privado.</translation>
|
||||
<translation id="2589970573128789862">Modo privado do Brave</translation>
|
||||
<translation id="5994282802285556682">Ao navegar no modo Privado, o Brave avisa você antes de carregar um site utilizando uma conexão não segura</translation>
|
||||
<translation id="6283840329609797763">Falha na instalação devido a um erro não especificado. Baixe o Brave novamente.</translation>
|
||||
</translationbundle>
|
||||
@@ -699,4 +699,5 @@ O Brave não consegue recuperar as suas definições.</translation>
|
||||
<translation id="79269250264141507">Quando introduz alguma coisa na barra de endereços ou na caixa de pesquisa, o Brave envia o que introduziu para o seu motor de busca padrão para ter sugestões melhores. Esta configuração está desativada no modo privado.</translation>
|
||||
<translation id="2589970573128789862">Modo privado do Brave</translation>
|
||||
<translation id="5994282802285556682">Ao navegar no modo Privado, o Brave avisa-o antes de carregar um site utilizando uma ligação não segura</translation>
|
||||
<translation id="6283840329609797763">A instalação falhou devido a um erro não especificado. Descarregue novamente o Brave .</translation>
|
||||
</translationbundle>
|
||||
@@ -699,4 +699,5 @@ Brave nu poate recupera setările.</translation>
|
||||
<translation id="79269250264141507">Când tastați în bara de adrese sau în caseta de căutare, Brave trimite ceea ce tastați către motorul de căutare implicit pentru a obține sugestii mai bune. Acest lucru este dezactivat în privat.</translation>
|
||||
<translation id="2589970573128789862">Brave Private</translation>
|
||||
<translation id="5994282802285556682">Când răsfoiți în modul Privat, Brave vă va avertiza înainte de a încărca un site care folosește o conexiune nesecurizată.</translation>
|
||||
<translation id="6283840329609797763">Instalarea nu a reușit din cauza unei erori neprecizate. Descărcați Brave din nou.</translation>
|
||||
</translationbundle>
|
||||
@@ -694,4 +694,5 @@
|
||||
<translation id="79269250264141507">Когда вы набираете текст в адресной строке или в поле поиска, Brave отправляет его в поисковую систему по умолчанию, чтобы получить лучшие предложения. В режиме «Приватный» эта функция отключена.</translation>
|
||||
<translation id="2589970573128789862">Приватный режим Brave</translation>
|
||||
<translation id="5994282802285556682">Когда вы находитесь в браузере в приватном режиме, Brave предупредит вас перед загрузкой сайта с небезопасным соединением</translation>
|
||||
<translation id="6283840329609797763">В процессе установки произошла неизвестная ошибка. Скачайте Brave ещё раз.</translation>
|
||||
</translationbundle>
|
||||
@@ -709,4 +709,5 @@ Brave හට ඔබගේ සැකසුම් ප්රතිසාධන
|
||||
<translation id="79269250264141507">ඔබ ලිපින තීරුවේ හෝ සෙවුම් කොටුවේ ලියන විට වඩා හොඳ යෝජනා ලබා ගැනීමට Brave ඔබ ලියන දෑ ඔබගේ පෙරනිමි සෙවුම් යන්ත්රයට යවයි. මෙය පෞද්ගලික ප්රකාරයේ අක්රියයි.</translation>
|
||||
<translation id="2589970573128789862">Brave පෞද්ගලික</translation>
|
||||
<translation id="5994282802285556682">පෞද්ගලික ප්රකාරයේ පිරික්සන විට අනාරක්ෂිත සම්බන්ධතාවයකින් අඩවියක් පූරණයට පෙර Brave ඔබට අනතුරු අඟවයි</translation>
|
||||
<translation id="6283840329609797763">නිශ්චිත නොමැති දෝෂයක් හේතුවෙන් ස්ථාපනය අසාර්ථක විය. නැවතත් Brave බාගන්න.</translation>
|
||||
</translationbundle>
|
||||
@@ -700,4 +700,5 @@ Prehliadač Brave nedokáže obnoviť vaše nastavenia.</translation>
|
||||
<translation id="79269250264141507">Pri písaní do adresného riadka alebo vyhľadávacieho poľa posiela Brave vložený text vášmu predvolenému vyhľadávaču, čím získate lepšie návrhy. Táto možnosť je v súkromnom režime vypnutá.</translation>
|
||||
<translation id="2589970573128789862">Brave Private</translation>
|
||||
<translation id="5994282802285556682">Pri prehliadaní v súkromnom režime vás aplikácia Brave upozorní pred načítaním stránky prostredníctvom nezabezpečeného pripojenia.</translation>
|
||||
<translation id="6283840329609797763">Inštalácia zlyhala kvôli neznámej chybe. Skúste prehliadač Brave stiahnuť znova.</translation>
|
||||
</translationbundle>
|
||||
@@ -701,4 +701,5 @@ Brave ne more obnoviti vaših nastavitev.</translation>
|
||||
<translation id="79269250264141507">Ko v naslovno vrstico ali iskalno polje vtipkate besedilo, Brave vneseno besedilo pošlje vašemu privzetemu iskalniku, da tako dobi boljše predloge. Ta funkcija je v zasebnem načinu izključena.</translation>
|
||||
<translation id="2589970573128789862">Brave Private</translation>
|
||||
<translation id="5994282802285556682">Ko brskate v zasebnem načinu, vas Brave opozori pred nalaganjem spletnega mesta prek nezanesljive povezave.</translation>
|
||||
<translation id="6283840329609797763">Namestitev ni uspela zaradi nenavedene napake. Znova prenesite Brave.</translation>
|
||||
</translationbundle>
|
||||
@@ -700,4 +700,5 @@ Brave nuk është në gjendje të rikuperojë cilësimet e tua.</translation>
|
||||
<translation id="79269250264141507">Kur shkruani në shiritin e adresave apo kutinë e kërkimit, Brave dërgon atë që shkruani tek motori juaj i paracaktuar i kërkimit për të marrë sugjerime më të mira. Kjo është e çaktivizuar në Private.</translation>
|
||||
<translation id="2589970573128789862">Brave Private</translation>
|
||||
<translation id="5994282802285556682">Kur shfletoni në modalitetin Private, Brave do t'ju paralajmërojë para se të ngarkojë një sajt që përdor një lidhje të pasigurtë</translation>
|
||||
<translation id="6283840329609797763">Instalimi dështoi për shkak të një gabimi të papërcaktuar. Shkarko përsëri Brave.</translation>
|
||||
</translationbundle>
|
||||
@@ -707,4 +707,5 @@ Brave ne može da vrati podešavanja.</translation>
|
||||
<translation id="79269250264141507">Kada kucate u traku za adresu ili polje za pretragu, Brave šalje to što unosite u vaš podrazumevani pretraživač da biste dobili bolje predloge. To je isključeno u privatnom režimu.</translation>
|
||||
<translation id="2589970573128789862">Brave – privatni režim</translation>
|
||||
<translation id="5994282802285556682">Kada pregledate u privatnom režimu, Brave će vas upozoriti pre nego što učitate sajt preko nebezbedne veze</translation>
|
||||
<translation id="6283840329609797763">Instalacija nije uspela zbog neodređene greške. Preuzmite Brave ponovo.</translation>
|
||||
</translationbundle>
|
||||
@@ -698,4 +698,5 @@ Brave не може да врати подешавања.</translation>
|
||||
<translation id="3146636448190445245">Да бисте користили локацију, одобрите Brave-у приступ у <ph name="BEGIN_LINK"/>подешавањима система<ph name="END_LINK"/></translation>
|
||||
<translation id="137466361146087520">Google Chrome бета</translation>
|
||||
<translation id="7535429826459677826">Програмерска верзија Google Chrome-а</translation>
|
||||
<translation id="6283840329609797763">Инсталација није успела због неодређене грешке. Преузмите Браве поново.</translation>
|
||||
</translationbundle>
|
||||
@@ -701,4 +701,5 @@ Brave kan inte återställa dina inställningar.</translation>
|
||||
<translation id="79269250264141507">När du skriver i adressfältet eller sökrutan skickas det du skriver till din standardsökmotor för att du ska få bättre förslag. Detta är avstängt i Privat läge.</translation>
|
||||
<translation id="2589970573128789862">Brave privat</translation>
|
||||
<translation id="5994282802285556682">När du surfar i privat läge varnar Brave dig innan du laddar en webbplats med en osäker anslutning</translation>
|
||||
<translation id="6283840329609797763">Installationen misslyckades på grund av ett okänt fel. Ladda ned Brave igen.</translation>
|
||||
</translationbundle>
|
||||
@@ -698,4 +698,5 @@ Brave haiwezi kufufua mipangilio yako.</translation>
|
||||
<translation id="79269250264141507">Unapoandika kwenye upau wa anwani au kisanduku cha utafutaji, Brave hutuma unachoandika kwenye injini yako chaguomsingi ya utafutaji ili kupata mapendekezo bora zaidi. Hili limezimwa katika Faragha.</translation>
|
||||
<translation id="2589970573128789862">Brave ya Faragha</translation>
|
||||
<translation id="5994282802285556682">Unapovinjari katika modi ya faragha, Brave itakupa onyo kabla ya kupakia tovuti kwa kutumia muunganisho usio salama</translation>
|
||||
<translation id="6283840329609797763">Usakinishaji ulishindwa kwa sababu ya hitilafu isiyobainika. Tafadhali pakua Brave tena.</translation>
|
||||
</translationbundle>
|
||||
@@ -696,4 +696,5 @@
|
||||
<translation id="79269250264141507">முகவரிப் பட்டியிலோ தேடல் பெட்டியிலோ நீங்கள் டைப்செய்யும்போது, சிறப்பான பரிந்துரைகளைப் பெறுவதற்காக அவற்றை உங்களின் வழக்கமான தேடல் இன்ஜினுக்கு Brave அனுப்பும். இந்த அம்சம் மறைநிலைப் பயன்முறையில் முடக்கப்பட்டிருக்கும்.</translation>
|
||||
<translation id="2589970573128789862">Brave மறைநிலை</translation>
|
||||
<translation id="5994282802285556682">மறைநிலைப் பயன்முறையில் உலாவும்போது, பாதுகாப்பற்ற இணைப்பைப் பயன்படுத்தி ஒரு தளத்தை ஏற்றும் முன் Brave உங்களை எச்சரிக்கும்</translation>
|
||||
<translation id="6283840329609797763">குறிப்பிடப்படாத பிழை காரணமாக நிறுவல் தோல்வியடைந்தது. Braveமை மீண்டும் பதிவிறக்கம் செய்க.</translation>
|
||||
</translationbundle>
|
||||
@@ -692,4 +692,5 @@
|
||||
<translation id="79269250264141507">మీరు అడ్రస్ బార్లో లేదా సెర్చ్ బాక్స్లో టైప్ చేసినప్పుడు, మెరుగైన సూచనలను పొందడానికి Brave మీరు టైప్ చేసిన దానిని మీ ఆటోమేటిక్ సెర్చ్ ఇంజిన్కు పంపుతుంది. అజ్ఞాత మోడ్లో ఇది ఆఫ్లో ఉంటుంది.</translation>
|
||||
<translation id="2589970573128789862">Brave అజ్ఞాత మోడ్</translation>
|
||||
<translation id="5994282802285556682">అజ్ఞాత మోడ్లో బ్రౌజ్ చేస్తున్నప్పుడు, సురక్షితం కాని కనెక్షన్ను ఉపయోగించి సైట్ను లోడ్ చేసే ముందు Brave మిమ్మల్ని హెచ్చరిస్తుంది</translation>
|
||||
<translation id="6283840329609797763">తెలియని ఎర్రర్ కారణంగా ఇనస్టలేషన్ విఫలమైంది. దయచేసి Braveను మళ్లీ డౌన్లోడ్ చేయండి.</translation>
|
||||
</translationbundle>
|
||||
@@ -698,4 +698,5 @@ Brave ไม่สามารถกู้คืนการตั้งค่
|
||||
<translation id="79269250264141507">เมื่อคุณพิมพ์ในแถบที่อยู่หรือช่องค้นหา Brave จะส่งข้อมูลที่คุณพิมพ์ไปยังเครื่องมือค้นหาเริ่มต้นเพื่อรับคำแนะนำที่ดีขึ้น และจะถูกปิดใน Private</translation>
|
||||
<translation id="2589970573128789862">Brave Private</translation>
|
||||
<translation id="5994282802285556682">เมื่อท่องเว็บในโหมดส่วนตัว Brave จะทำการเตือนคุณก่อนโหลดเว็บไซต์ที่ใช้การเชื่อมต่อที่ไม่ปลอดภัย</translation>
|
||||
<translation id="6283840329609797763">การติดตั้งล้มเหลวเนื่องจากเกิดข้อผิดพลาดที่ไม่ระบุ โปรดดาวน์โหลด Brave อีกครั้ง</translation>
|
||||
</translationbundle>
|
||||
@@ -696,4 +696,5 @@ Brave ayarlarınızı kurtaramıyor.</translation>
|
||||
<translation id="79269250264141507">Bir adres çubuğuna veya arama kutusuna yazdığınız zaman, Brave daha iyi öneriler almanız için yazdığınız şeyi varsayılan arama motorunuza gönderir. Bu Gizli modda kapalıdır.</translation>
|
||||
<translation id="2589970573128789862">Brave Gizli Mod</translation>
|
||||
<translation id="5994282802285556682">Gizli modda gezinirken Brave, güvenli olmayan bir bağlantı kullanan bir siteyi yüklemeden önce sizi uyaracaktır</translation>
|
||||
<translation id="6283840329609797763">Yükleme belirtilmeyen bir hata nedeniyle başarısız oldu. Lütfen Brave'u tekrar indirin.</translation>
|
||||
</translationbundle>
|
||||
@@ -714,4 +714,5 @@ Brave не може відновити ваші налаштування.</trans
|
||||
<translation id="79269250264141507">Коли ви вводите запит у панелі адреси чи полі пошуку, Brave надсилає його до типової пошукової системи, щоб отримати кращі пропозиції. Цю функцію вимкнено в приватному режимі перегляду.</translation>
|
||||
<translation id="2589970573128789862">Приватний режим Brave</translation>
|
||||
<translation id="5994282802285556682">Під час перегляду сторінок у приватному режимі Brave попереджатиме вас, перш ніж завантажити вебсайт із незахищеним з’єднанням</translation>
|
||||
<translation id="6283840329609797763">Не вдалося встановити через невизначену помилку. Завантажте Brave ще раз.</translation>
|
||||
</translationbundle>
|
||||
@@ -697,4 +697,5 @@ Brave آپ کی ترتیبات کو بازیافت کرنے سے قاصر ہے۔
|
||||
<translation id="3146636448190445245">اپنے مقام کا استعمال کرنے کے لیے، <ph name="BEGIN_LINK"/>سسٹم کی ترتیبات<ph name="END_LINK"/> میں Brave کو رسائی فراہم کریں</translation>
|
||||
<translation id="137466361146087520">Google Chrome بی ٹا</translation>
|
||||
<translation id="7535429826459677826">Google Chrome Dev</translation>
|
||||
<translation id="6283840329609797763">غیر متعین خرابی کی وجہ سے انسٹالیشن ناکام ہوگیا۔ براہ کرم Brave دوبارہ ڈاؤن لوڈ کریں۔</translation>
|
||||
</translationbundle>
|
||||
@@ -702,4 +702,5 @@ Brave sozlamalaringizni qaytadan tiklay olmadi.</translation>
|
||||
<translation id="79269250264141507">Manzil qatori va qidiruv maydonchasida matn kiritganingizda, yaxshiroq tavsiyalar berilishi uchun Brave kiritilganlarni birlamchi qidiruv tizimingizga yuboradi. Bu funksiya Maxfiy rejimda faolsizlantiriladi.</translation>
|
||||
<translation id="2589970573128789862">Brave Maxfiy rejimi</translation>
|
||||
<translation id="5994282802285556682">Maxfiy rejimdan foydalanilganda, Brave saytni yuklashdan oldin sizni xavfsiz boʻlmagan ulanish usuli orqali ogohlantiradi</translation>
|
||||
<translation id="6283840329609797763">O‘rnatish vaqtida kutilmagan xatolik yuz berdi. Brave‘ni qaytadan yuklab oling.</translation>
|
||||
</translationbundle>
|
||||
@@ -699,4 +699,5 @@ Brave không thể khôi phục cài đặt của bạn.</translation>
|
||||
<translation id="79269250264141507">Khi bạn nhập vào thanh địa chỉ hoặc hộp tìm kiếm, Brave sẽ gửi nội dung bạn nhập tới công cụ tìm kiếm mặc định của bạn để nhận các đề xuất tốt hơn. Điều này được tắt trong Riêng tư.</translation>
|
||||
<translation id="2589970573128789862">Brave Riêng tư</translation>
|
||||
<translation id="5994282802285556682">Khi duyệt ở chế độ Riêng tư, Brave sẽ cảnh báo bạn trước khi tải trang web bằng kết nối không an toàn</translation>
|
||||
<translation id="6283840329609797763">Không thể cài đặt do xảy ra lỗi không xác định. Hãy tải xuống Brave lại lần nữa.</translation>
|
||||
</translationbundle>
|
||||
@@ -698,4 +698,5 @@ Brave 无法恢复您的设置。</translation>
|
||||
<translation id="79269250264141507">当您在地址栏或搜索框中输入时,Brave 会将您输入的内容发送到默认搜索引擎,以获得更好的建议。这是私密的。</translation>
|
||||
<translation id="2589970573128789862">Brave 隐私</translation>
|
||||
<translation id="5994282802285556682">在隐私模式下浏览时,Brave 会在使用不安全连接加载网站之前向您发出警告</translation>
|
||||
<translation id="6283840329609797763">未指定的错误导致安装失败。请重新下载 Brave。</translation>
|
||||
</translationbundle>
|
||||
@@ -695,4 +695,5 @@ Brave 無法復原您的設定。</translation>
|
||||
<translation id="3146636448190445245">如要使用位置,請在<ph name="BEGIN_LINK"/>系統設定<ph name="END_LINK"/>中向 Brave 授予存取權</translation>
|
||||
<translation id="137466361146087520">Google Chrome 測試版</translation>
|
||||
<translation id="7535429826459677826">Google Chrome 開發人員版</translation>
|
||||
<translation id="6283840329609797763">不明錯誤導致安裝失敗,請重新下載 Brave。</translation>
|
||||
</translationbundle>
|
||||
@@ -698,4 +698,5 @@ Brave 無法復原你的設定。</translation>
|
||||
<translation id="79269250264141507">當您在網址列或搜尋方塊輸入內容時,Brave 會將您輸入的內容傳送至您的預設搜尋引擎,以便取得更好的建議。在無痕模式下會停用此功能。</translation>
|
||||
<translation id="2589970573128789862">Brave 隱私模式</translation>
|
||||
<translation id="5994282802285556682">以私密模式瀏覽時,Brave 會在使用不安全連線載入網站前向您發出警告</translation>
|
||||
<translation id="6283840329609797763">不明錯誤導致安裝失敗,請重新下載 Brave。</translation>
|
||||
</translationbundle>
|
||||
@@ -697,4 +697,5 @@ I-Brave ayikwazi ukubuyisela izilungiselelo zakho.</translation>
|
||||
<translation id="3146636448190445245">Ukuze usebenzise indawo yakho, nikeza iBrave ukufinyelela <ph name="BEGIN_LINK"/>amasethingi ohlelo<ph name="END_LINK"/></translation>
|
||||
<translation id="137466361146087520">I-beta ye-Google Chrome</translation>
|
||||
<translation id="7535429826459677826">I-Google Chrome Dev</translation>
|
||||
<translation id="6283840329609797763">Ukufakwa kuhlulekile ngenxa yephutha elingacacisiwe. Sicela ulande i-Brave futhi.</translation>
|
||||
</translationbundle>
|
||||
@@ -90,6 +90,9 @@
|
||||
"chrome/grit/generated_resources.h": [
|
||||
"IDS_PERMISSIONS_BUBBLE_PROMPT",
|
||||
],
|
||||
"chrome/install_static/chromium_install_modes.h": [
|
||||
"CHROMIUM_INDEX",
|
||||
],
|
||||
"chrome/install_static/install_constants.h": [
|
||||
"BUILDFLAG_INTERNAL_USE_GOOGLE_UPDATE_INTEGRATION",
|
||||
],
|
||||
|
||||
@@ -31,6 +31,9 @@ enum InstallConstantIndex {
|
||||
};
|
||||
|
||||
#if defined(OFFICIAL_BUILD)
|
||||
|
||||
#define CHROMIUM_INDEX STABLE_INDEX
|
||||
|
||||
// Regarding the install switch, use the same values that are in
|
||||
// chrome/installer/mini_installer/configuration.cc
|
||||
inline constexpr auto kInstallModes = std::to_array<InstallConstants>({
|
||||
@@ -226,6 +229,9 @@ inline constexpr auto kInstallModes = std::to_array<InstallConstants>({
|
||||
},
|
||||
});
|
||||
#else
|
||||
|
||||
#define CHROMIUM_INDEX DEVELOPER_INDEX
|
||||
|
||||
inline constexpr auto kInstallModes = std::to_array<InstallConstants>({
|
||||
// The primary (and only) install mode for Brave developer build.
|
||||
{
|
||||
|
||||
@@ -6,4 +6,7 @@ include_rules += [
|
||||
"+brave/components/brave_vpn/browser/connection/ikev2/win",
|
||||
"+brave/components/brave_vpn/common/buildflags",
|
||||
"+brave/installer",
|
||||
# We need bspatch for delta updates on Windows until we are on Omaha 4. See:
|
||||
# github.com/brave/brave-core/pull/31937
|
||||
"+brave/third_party/bspatch"
|
||||
]
|
||||
|
||||
@@ -0,0 +1,104 @@
|
||||
/* Copyright (c) 2025 The Brave Authors. All rights reserved.
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
// This file contains code that used to be upstream and had to be restored in
|
||||
// Brave to support delta updates on Windows until we are on Omaha 4. See:
|
||||
// github.com/brave/brave-core/pull/31937
|
||||
|
||||
#ifdef UNSAFE_BUFFERS_BUILD
|
||||
// TODO(https://github.com/brave/brave-browser/issues/50977): Remove this and
|
||||
// convert code to safer constructs.
|
||||
#pragma allow_unsafe_buffers
|
||||
#endif
|
||||
|
||||
#include "chrome/installer/mini_installer/configuration.h"
|
||||
|
||||
#include <cassert>
|
||||
|
||||
#include "build/branding_buildflags.h"
|
||||
#include "chrome/installer/mini_installer/appid.h"
|
||||
#include "chrome/installer/mini_installer/mini_string.h"
|
||||
|
||||
#define Initialize() Initialize(HMODULE module)
|
||||
|
||||
#define kAppGuid \
|
||||
kAppGuid; \
|
||||
previous_version_ = nullptr
|
||||
|
||||
#if defined(OFFICIAL_BUILD) && !BUILDFLAG(GOOGLE_CHROME_BRANDING)
|
||||
#undef BUILDFLAG_INTERNAL_GOOGLE_CHROME_BRANDING
|
||||
#define BUILDFLAG_INTERNAL_GOOGLE_CHROME_BRANDING() (1)
|
||||
#define NEED_TO_RESET_BUILDFLAG_INTERNAL_GOOGLE_CHROME_BRANDING
|
||||
#endif
|
||||
|
||||
#if defined(OFFICIAL_BUILD)
|
||||
namespace {
|
||||
DWORD BraveGetEnvironmentVariableW(const wchar_t* var,
|
||||
wchar_t* value,
|
||||
DWORD bufSize) {
|
||||
assert(::lstrcmp(var, L"GoogleUpdateIsMachine") == 0);
|
||||
return ::GetEnvironmentVariableW(L"BraveSoftwareUpdateIsMachine", value,
|
||||
bufSize);
|
||||
}
|
||||
} // namespace
|
||||
#define GetEnvironmentVariableW BraveGetEnvironmentVariableW
|
||||
#endif
|
||||
|
||||
#define BRAVE_READ_RESOURCES ReadResources(module);
|
||||
|
||||
#include <chrome/installer/mini_installer/configuration.cc>
|
||||
|
||||
#undef BRAVE_READ_RESOURCES
|
||||
|
||||
#if defined(OFFICIAL_BUILD)
|
||||
#undef GetEnvironmentVariableW
|
||||
#endif
|
||||
|
||||
#if defined(NEED_TO_RESET_BUILDFLAG_INTERNAL_GOOGLE_CHROME_BRANDING)
|
||||
#undef BUILDFLAG_INTERNAL_GOOGLE_CHROME_BRANDING
|
||||
#define BUILDFLAG_INTERNAL_GOOGLE_CHROME_BRANDING() (0)
|
||||
#undef NEED_TO_RESET_BUILDFLAG_INTERNAL_GOOGLE_CHROME_BRANDING
|
||||
#endif
|
||||
|
||||
#undef kAppGuid
|
||||
#undef Initialize
|
||||
|
||||
namespace mini_installer {
|
||||
|
||||
void Configuration::ReadResources(HMODULE module) {
|
||||
HRSRC resource_info_block =
|
||||
FindResource(module, MAKEINTRESOURCE(ID_PREVIOUS_VERSION), RT_RCDATA);
|
||||
if (!resource_info_block) {
|
||||
return;
|
||||
}
|
||||
|
||||
HGLOBAL data_handle = LoadResource(module, resource_info_block);
|
||||
if (!data_handle) {
|
||||
return;
|
||||
}
|
||||
|
||||
// The data is a Unicode string, so it must be a multiple of two bytes.
|
||||
DWORD version_size = SizeofResource(module, resource_info_block);
|
||||
if (!version_size || (version_size & 0x01) != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
void* version_data = LockResource(data_handle);
|
||||
if (!version_data) {
|
||||
return;
|
||||
}
|
||||
|
||||
const wchar_t* version_string = reinterpret_cast<wchar_t*>(version_data);
|
||||
size_t version_len = version_size / sizeof(wchar_t);
|
||||
|
||||
// The string must be terminated.
|
||||
if (version_string[version_len - 1]) {
|
||||
return;
|
||||
}
|
||||
|
||||
previous_version_ = version_string;
|
||||
}
|
||||
|
||||
} // namespace mini_installer
|
||||
@@ -0,0 +1,30 @@
|
||||
/* Copyright (c) 2025 The Brave Authors. All rights reserved.
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
// This file contains code that used to be upstream and had to be restored in
|
||||
// Brave to support delta updates on Windows until we are on Omaha 4. See:
|
||||
// github.com/brave/brave-core/pull/31937
|
||||
|
||||
#ifndef BRAVE_CHROMIUM_SRC_CHROME_INSTALLER_MINI_INSTALLER_CONFIGURATION_H_
|
||||
#define BRAVE_CHROMIUM_SRC_CHROME_INSTALLER_MINI_INSTALLER_CONFIGURATION_H_
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
#define Initialize() Initialize(HMODULE module)
|
||||
#define program() \
|
||||
previous_version() const { \
|
||||
return previous_version_; \
|
||||
} \
|
||||
const wchar_t* program()
|
||||
#define Clear() \
|
||||
Clear(); \
|
||||
void ReadResources(HMODULE module); \
|
||||
const wchar_t* previous_version_
|
||||
#include <chrome/installer/mini_installer/configuration.h> // IWYU pragma: export
|
||||
#undef Clear
|
||||
#undef program
|
||||
#undef Initialize
|
||||
|
||||
#endif // BRAVE_CHROMIUM_SRC_CHROME_INSTALLER_MINI_INSTALLER_CONFIGURATION_H_
|
||||
@@ -0,0 +1,20 @@
|
||||
/* Copyright (c) 2025 The Brave Authors. All rights reserved.
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
// This file contains code that used to be upstream and had to be restored in
|
||||
// Brave to support delta updates on Windows until we are on Omaha 4. See:
|
||||
// github.com/brave/brave-core/pull/31937
|
||||
|
||||
#include "chrome/installer/mini_installer/configuration.h"
|
||||
|
||||
// Need to include registry.h because it has an `Initialize` method, and we
|
||||
// define a macro with the same name below.
|
||||
#include "base/win/registry.h"
|
||||
|
||||
#define Initialize() Initialize(::GetModuleHandle(nullptr))
|
||||
|
||||
#include <chrome/installer/mini_installer/configuration_test.cc>
|
||||
|
||||
#undef Initialize
|
||||
@@ -3,38 +3,115 @@
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
// This file contains a lot of code that used to be upstream and had to be
|
||||
// restored in Brave to support delta updates on Windows until we are on Omaha
|
||||
// 4. See github.com/brave/brave-core/pull/31937.
|
||||
|
||||
#ifdef UNSAFE_BUFFERS_BUILD
|
||||
// TODO(https://github.com/brave/brave-browser/issues/50977): Remove this and
|
||||
// convert code to safer constructs.
|
||||
#pragma allow_unsafe_buffers
|
||||
#endif
|
||||
|
||||
#include "chrome/installer/mini_installer/mini_installer.h"
|
||||
|
||||
#include "base/compiler_specific.h"
|
||||
#include "build/branding_buildflags.h"
|
||||
#include "chrome/installer/mini_installer/configuration.h"
|
||||
#include "chrome/installer/mini_installer/mini_installer_constants.h"
|
||||
#include "chrome/installer/mini_installer/mini_string.h"
|
||||
#include "chrome/installer/mini_installer/regkey.h"
|
||||
|
||||
#define BRAVE_RUN_SETUP \
|
||||
PathString installer_filename; \
|
||||
wchar_t value[MAX_PATH] = {0, }; \
|
||||
const bool result = \
|
||||
RegKey::ReadSZValue(HKEY_CURRENT_USER, \
|
||||
L"Software\\BraveSoftware\\Promo", \
|
||||
L"StubInstallerPath", value, _countof(value)) ; \
|
||||
if (result && \
|
||||
installer_filename.assign(value) && \
|
||||
installer_filename.length() != 0) { \
|
||||
ReferralCodeString referral_code; \
|
||||
if (ParseReferralCode(installer_filename.get(), &referral_code)) { \
|
||||
cmd_line.append(L" --brave-referral-code"); \
|
||||
cmd_line.append(L"=\""); \
|
||||
cmd_line.append(referral_code.get()); \
|
||||
cmd_line.append(L"\""); \
|
||||
} \
|
||||
}
|
||||
|
||||
#if defined(OFFICIAL_BUILD)
|
||||
#if defined(OFFICIAL_BUILD) && !BUILDFLAG(GOOGLE_CHROME_BRANDING)
|
||||
#undef BUILDFLAG_INTERNAL_GOOGLE_CHROME_BRANDING
|
||||
#define BUILDFLAG_INTERNAL_GOOGLE_CHROME_BRANDING() (1)
|
||||
#define NEED_TO_RESET_BUILDFLAG_INTERNAL_GOOGLE_CHROME_BRANDING
|
||||
#endif // defined(OFFICIAL_BUILD)
|
||||
|
||||
#define BRAVE_STUFF_PATCH_FLAG_INTO_WINDOWS_ERROR \
|
||||
if (exit_code.IsSuccess() && setup_type.compare(kLZMAResourceType) == 0) { \
|
||||
exit_code.windows_error = kNotAnErrorIsPatchUpdate; \
|
||||
}
|
||||
|
||||
#define BRAVE_ASSIGN_PREVIOUS_SETUP_EXE_IF_SETUP_PATH_EMPTY \
|
||||
if (*setup_path == L'\0') { \
|
||||
ProcessExitResult exit_code = GetPreviousSetupExePath( \
|
||||
configuration, setup_exe.get(), setup_exe.capacity()); \
|
||||
if (!exit_code.IsSuccess()) { \
|
||||
return exit_code; \
|
||||
} \
|
||||
}
|
||||
|
||||
#define BRAVE_MAYBE_APPEND_PREVIOUS_VERSION_AND_PARSE_REFERRAL_CODE \
|
||||
if (configuration.previous_version() && \
|
||||
(!cmd_line.append(L" --") || !cmd_line.append(kCmdPreviousVersion) || \
|
||||
!cmd_line.append(L"=\"") || \
|
||||
!cmd_line.append(configuration.previous_version()) || \
|
||||
!cmd_line.append(L"\""))) { \
|
||||
return ProcessExitResult(COMMAND_STRING_OVERFLOW); \
|
||||
} \
|
||||
PathString installer_filename; \
|
||||
wchar_t value[MAX_PATH] = { \
|
||||
0, \
|
||||
}; \
|
||||
const bool result = RegKey::ReadSZValue( \
|
||||
HKEY_CURRENT_USER, L"Software\\BraveSoftware\\Promo", \
|
||||
L"StubInstallerPath", value, _countof(value)); \
|
||||
if (result && installer_filename.assign(value) && \
|
||||
installer_filename.length() != 0) { \
|
||||
ReferralCodeString referral_code; \
|
||||
if (ParseReferralCode(installer_filename.get(), &referral_code)) { \
|
||||
cmd_line.append(L" --brave-referral-code"); \
|
||||
cmd_line.append(L"=\""); \
|
||||
cmd_line.append(referral_code.get()); \
|
||||
cmd_line.append(L"\""); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define BRAVE_APPEND_FULL_SUFFIX_IN_REGISTRY SetInstallerFlags(configuration);
|
||||
|
||||
// If a compressed setup patch was found, run the previous setup.exe to
|
||||
// patch and generate the new setup.exe.
|
||||
#define BRAVE_MAYBE_PATCH_PREVIOUS_SETUP_EXE \
|
||||
if (exit_code.IsSuccess() && \
|
||||
exit_code.windows_error == kNotAnErrorIsPatchUpdate) { \
|
||||
PathString setup_dest_path; \
|
||||
if (!setup_dest_path.assign(base_path.get()) || \
|
||||
!setup_dest_path.append(kSetupExe)) { \
|
||||
return ProcessExitResult(PATH_STRING_OVERFLOW); \
|
||||
} \
|
||||
exit_code = PatchSetup(configuration, setup_path, setup_dest_path, \
|
||||
max_delete_attempts); \
|
||||
if (exit_code.IsSuccess()) { \
|
||||
setup_path.assign(setup_dest_path); \
|
||||
} else { \
|
||||
setup_path.clear(); \
|
||||
} \
|
||||
}
|
||||
|
||||
namespace mini_installer {
|
||||
|
||||
namespace {
|
||||
ProcessExitResult PatchSetup(const Configuration& configuration,
|
||||
const PathString& patch_path,
|
||||
const PathString& dest_path,
|
||||
int& max_delete_attempts);
|
||||
} // namespace
|
||||
|
||||
void SetInstallerFlags(const Configuration& configuration);
|
||||
|
||||
} // namespace mini_installer
|
||||
|
||||
#define Initialize() Initialize(module)
|
||||
|
||||
#include <chrome/installer/mini_installer/mini_installer.cc>
|
||||
#if defined(OFFICIAL_BUILD)
|
||||
#undef BUILDFLAG_INTERNAL_GOOGLE_CHROME_BRANDING
|
||||
#endif // defined(OFFICIAL_BUILD)
|
||||
#undef BRAVE_RUN_SETUP
|
||||
|
||||
#undef Initialize
|
||||
#undef BRAVE_MAYBE_PATCH_PREVIOUS_SETUP_EXE
|
||||
#undef BRAVE_APPEND_FULL_SUFFIX_IN_REGISTRY
|
||||
#undef BRAVE_MAYBE_APPEND_PREVIOUS_VERSION_AND_PARSE_REFERRAL_CODE
|
||||
#undef BRAVE_ASSIGN_PREVIOUS_SETUP_EXE_IF_SETUP_PATH_EMPTY
|
||||
#undef BRAVE_STUFF_PATCH_FLAG_INTO_WINDOWS_ERROR
|
||||
|
||||
namespace mini_installer {
|
||||
|
||||
@@ -189,4 +266,141 @@ bool ParseReferralCode(const wchar_t* installer_filename,
|
||||
return true;
|
||||
}
|
||||
|
||||
void SetInstallerFlags(const Configuration& configuration) {
|
||||
#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
|
||||
// Set the magic suffix in registry to try full installer next time. We ignore
|
||||
// any errors here and we try to set the suffix for user level unless
|
||||
// GoogleUpdateIsMachine=1 is present in the environment or --system-level is
|
||||
// on the command line in which case we set it for system level instead. If
|
||||
// the current installer works, the flag to try full installer is cleared by
|
||||
// setup.exe at the end of install.
|
||||
|
||||
StackString<128> value;
|
||||
|
||||
RegKey key;
|
||||
if (!OpenInstallStateKey(configuration, &key)) {
|
||||
return;
|
||||
}
|
||||
|
||||
LONG ret = key.ReadSZValue(kApRegistryValue, value.get(), value.capacity());
|
||||
|
||||
// The conditions below are handling two cases:
|
||||
// 1. When ap value is present, we want to add the required tag only if it
|
||||
// is not present.
|
||||
// 2. When ap value is missing, we are going to create it with the required
|
||||
// tag.
|
||||
if ((ret == ERROR_SUCCESS) || (ret == ERROR_FILE_NOT_FOUND)) {
|
||||
if (ret == ERROR_FILE_NOT_FOUND) {
|
||||
value.clear();
|
||||
}
|
||||
|
||||
if (!StrEndsWith(value.get(), kFullInstallerSuffix) &&
|
||||
value.append(kFullInstallerSuffix)) {
|
||||
key.WriteSZValue(kApRegistryValue, value.get());
|
||||
}
|
||||
}
|
||||
#endif // BUILDFLAG(GOOGLE_CHROME_BRANDING)
|
||||
}
|
||||
|
||||
// Gets the setup.exe path from Registry by looking at the value of Uninstall
|
||||
// string. |size| is measured in wchar_t units.
|
||||
ProcessExitResult GetSetupExePathForAppGuid(bool system_level,
|
||||
const wchar_t* app_guid,
|
||||
const wchar_t* previous_version,
|
||||
wchar_t* path,
|
||||
size_t size) {
|
||||
const HKEY root_key = system_level ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER;
|
||||
RegKey key;
|
||||
LONG result = OpenClientStateKey(root_key, app_guid, KEY_QUERY_VALUE, &key);
|
||||
if (result == ERROR_SUCCESS) {
|
||||
result = key.ReadSZValue(kUninstallRegistryValue, path, size);
|
||||
}
|
||||
if (result != ERROR_SUCCESS) {
|
||||
return ProcessExitResult(UNABLE_TO_FIND_REGISTRY_KEY, result);
|
||||
}
|
||||
|
||||
// Check that the path to the existing installer includes the expected
|
||||
// version number. It's not necessary for accuracy to verify before/after
|
||||
// delimiters.
|
||||
if (!SearchStringI(path, previous_version)) {
|
||||
return ProcessExitResult(PATCH_NOT_FOR_INSTALLED_VERSION);
|
||||
}
|
||||
|
||||
// Strip double-quotes surrounding the string, if present.
|
||||
if (size >= 1 && path[0] == '\"') {
|
||||
size_t path_length = SafeStrLen(path, size);
|
||||
if (path_length >= 2 && path[path_length - 1] == '\"') {
|
||||
if (!SafeStrCopy(path, size, path + 1)) {
|
||||
return ProcessExitResult(PATH_STRING_OVERFLOW);
|
||||
}
|
||||
path[path_length - 2] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
return ProcessExitResult(SUCCESS_EXIT_CODE);
|
||||
}
|
||||
|
||||
// Gets the path to setup.exe of the previous version. The overall path is found
|
||||
// in the Uninstall string in the registry. A previous version number specified
|
||||
// in |configuration| is used if available. |size| is measured in wchar_t units.
|
||||
ProcessExitResult GetPreviousSetupExePath(const Configuration& configuration,
|
||||
wchar_t* path,
|
||||
size_t size) {
|
||||
// Check Chrome's ClientState key for the path to setup.exe. This will have
|
||||
// the correct path for all well-functioning installs.
|
||||
return GetSetupExePathForAppGuid(
|
||||
configuration.is_system_level(), configuration.chrome_app_guid(),
|
||||
configuration.previous_version(), path, size);
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
||||
// Applies an differential update to the previous setup.exe provided by
|
||||
// `patch_path` and produces a new setup.exe at the path `target_path`.
|
||||
ProcessExitResult PatchSetup(const Configuration& configuration,
|
||||
const PathString& patch_path,
|
||||
const PathString& dest_path,
|
||||
int& max_delete_attempts) {
|
||||
CommandString cmd_line;
|
||||
PathString exe_path;
|
||||
ProcessExitResult exit_code = GetPreviousSetupExePath(
|
||||
configuration, exe_path.get(), exe_path.capacity());
|
||||
if (!exit_code.IsSuccess()) {
|
||||
return exit_code;
|
||||
}
|
||||
|
||||
if (!cmd_line.append(L"\"") || !cmd_line.append(exe_path.get()) ||
|
||||
!cmd_line.append(L"\" --") || !cmd_line.append(kCmdUpdateSetupExe) ||
|
||||
!cmd_line.append(L"=\"") || !cmd_line.append(patch_path.get()) ||
|
||||
!cmd_line.append(L"\" --") || !cmd_line.append(kCmdNewSetupExe) ||
|
||||
!cmd_line.append(L"=\"") || !cmd_line.append(dest_path.get()) ||
|
||||
!cmd_line.append(L"\"")) {
|
||||
exit_code = ProcessExitResult(COMMAND_STRING_OVERFLOW);
|
||||
}
|
||||
|
||||
if (!exit_code.IsSuccess()) {
|
||||
return exit_code;
|
||||
}
|
||||
|
||||
// Get any command line option specified for mini_installer and pass them
|
||||
// on to setup.exe.
|
||||
AppendCommandLineFlags(configuration.command_line(), &cmd_line);
|
||||
|
||||
exit_code = RunProcessAndWait(exe_path.get(), cmd_line.get(),
|
||||
SETUP_PATCH_FAILED_FILE_NOT_FOUND,
|
||||
SETUP_PATCH_FAILED_PATH_NOT_FOUND,
|
||||
SETUP_PATCH_FAILED_COULD_NOT_CREATE_PROCESS);
|
||||
DeleteWithRetryAndMetrics(patch_path.get(), max_delete_attempts);
|
||||
|
||||
return exit_code;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
} // namespace mini_installer
|
||||
|
||||
#if defined(NEED_TO_RESET_BUILDFLAG_INTERNAL_GOOGLE_CHROME_BRANDING)
|
||||
#undef BUILDFLAG_INTERNAL_GOOGLE_CHROME_BRANDING
|
||||
#define BUILDFLAG_INTERNAL_GOOGLE_CHROME_BRANDING() (0)
|
||||
#undef NEED_TO_RESET_BUILDFLAG_INTERNAL_GOOGLE_CHROME_BRANDING
|
||||
#endif
|
||||
|
||||
@@ -17,6 +17,17 @@ typedef StackString<128> ReferralCodeString;
|
||||
|
||||
bool ParseReferralCode(const wchar_t* installer_filename,
|
||||
ReferralCodeString* referral_code);
|
||||
|
||||
// Upstream's UnpackBinaryResources function used to have a parameter
|
||||
// ResourceTypeString& setup_type. When this had value kLZMAResourceType after
|
||||
// the function, then upstream used to run the previous setup.exe to patch and
|
||||
// generate the new setup.exe. Upstream removed this functionality when it
|
||||
// switched to Omaha 4. We are still on Omaha 3. To restore the feature with
|
||||
// minimal changes in upstream even though UnpackBinaryResources's has changed,
|
||||
// we stuff the information whether a differential update is to be applied into
|
||||
// the Windows error code, with this special value:
|
||||
inline constexpr DWORD kNotAnErrorIsPatchUpdate = 0x12345678;
|
||||
|
||||
} // namespace mini_installer
|
||||
|
||||
#endif // BRAVE_CHROMIUM_SRC_CHROME_INSTALLER_MINI_INSTALLER_MINI_INSTALLER_H_
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
/* Copyright (c) 2025 The Brave Authors. All rights reserved.
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
// This file contains code that used to be upstream and had to be restored in
|
||||
// Brave to support delta updates on Windows until we are on Omaha 4. See:
|
||||
// github.com/brave/brave-core/pull/31937
|
||||
|
||||
#include <chrome/installer/mini_installer/mini_installer_unittest.cc>
|
||||
|
||||
#define PREVIOUS_VERSION L"62.0.1234.0"
|
||||
|
||||
namespace mini_installer {
|
||||
|
||||
namespace {
|
||||
|
||||
constexpr wchar_t kPreviousVersion[] = PREVIOUS_VERSION;
|
||||
|
||||
class FakeConfiguration : public Configuration {
|
||||
public:
|
||||
FakeConfiguration() { previous_version_ = kPreviousVersion; }
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
// A test harness for GetPreviousSetupExePath.
|
||||
class GetPreviousSetupExePathTest : public ::testing::Test {
|
||||
public:
|
||||
GetPreviousSetupExePathTest(const GetPreviousSetupExePathTest&) = delete;
|
||||
GetPreviousSetupExePathTest& operator=(const GetPreviousSetupExePathTest&) =
|
||||
delete;
|
||||
|
||||
protected:
|
||||
GetPreviousSetupExePathTest() = default;
|
||||
~GetPreviousSetupExePathTest() override = default;
|
||||
|
||||
void SetUp() override {
|
||||
ASSERT_NO_FATAL_FAILURE(
|
||||
registry_override_manager_.OverrideRegistry(HKEY_CURRENT_USER));
|
||||
}
|
||||
|
||||
const Configuration& configuration() const { return configuration_; }
|
||||
|
||||
// Writes |path| to the registry in Chrome's ClientState...UninstallString
|
||||
// value.
|
||||
void SetPreviousSetup(const wchar_t* path) {
|
||||
base::win::RegKey key;
|
||||
const install_static::InstallDetails& details =
|
||||
install_static::InstallDetails::Get();
|
||||
ASSERT_EQ(
|
||||
key.Create(HKEY_CURRENT_USER, details.GetClientStateKeyPath().c_str(),
|
||||
KEY_SET_VALUE | KEY_WOW64_32KEY),
|
||||
ERROR_SUCCESS);
|
||||
ASSERT_EQ(key.WriteValue(installer::kUninstallStringField, path),
|
||||
ERROR_SUCCESS);
|
||||
}
|
||||
|
||||
private:
|
||||
registry_util::RegistryOverrideManager registry_override_manager_;
|
||||
FakeConfiguration configuration_;
|
||||
};
|
||||
|
||||
// Tests that the path is returned.
|
||||
TEST_F(GetPreviousSetupExePathTest, SimpleTest) {
|
||||
static constexpr wchar_t kSetupExePath[] =
|
||||
L"C:\\SomePath\\To\\" PREVIOUS_VERSION L"\\setup.exe";
|
||||
ASSERT_NO_FATAL_FAILURE(SetPreviousSetup(kSetupExePath));
|
||||
|
||||
StackString<MAX_PATH> path;
|
||||
ProcessExitResult result =
|
||||
GetPreviousSetupExePath(configuration(), path.get(), path.capacity());
|
||||
ASSERT_TRUE(result.IsSuccess());
|
||||
EXPECT_STREQ(path.get(), kSetupExePath);
|
||||
}
|
||||
|
||||
// Tests that quotes are removed, if present.
|
||||
TEST_F(GetPreviousSetupExePathTest, QuoteStripping) {
|
||||
static constexpr wchar_t kSetupExePath[] =
|
||||
L"C:\\SomePath\\To\\" PREVIOUS_VERSION L"\\setup.exe";
|
||||
std::wstring quoted_path(L"\"");
|
||||
quoted_path += kSetupExePath;
|
||||
quoted_path += L"\"";
|
||||
ASSERT_NO_FATAL_FAILURE(SetPreviousSetup(quoted_path.c_str()));
|
||||
|
||||
StackString<MAX_PATH> path;
|
||||
ProcessExitResult result =
|
||||
GetPreviousSetupExePath(configuration(), path.get(), path.capacity());
|
||||
ASSERT_TRUE(result.IsSuccess());
|
||||
EXPECT_STREQ(path.get(), kSetupExePath);
|
||||
}
|
||||
|
||||
} // namespace mini_installer
|
||||
|
||||
#undef PREVIOUS_VERSION
|
||||
@@ -0,0 +1,62 @@
|
||||
/* Copyright (c) 2025 The Brave Authors. All rights reserved.
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
// This file contains code that used to be upstream and had to be restored in
|
||||
// Brave to support delta updates on Windows until we are on Omaha 4. See:
|
||||
// github.com/brave/brave-core/pull/31937
|
||||
|
||||
#ifdef UNSAFE_BUFFERS_BUILD
|
||||
// TODO(https://github.com/brave/brave-browser/issues/50977): Remove this and
|
||||
// convert code to safer constructs.
|
||||
#pragma allow_unsafe_buffers
|
||||
#endif
|
||||
|
||||
#include <chrome/installer/mini_installer/mini_string.cc>
|
||||
|
||||
namespace mini_installer {
|
||||
|
||||
const wchar_t* SearchStringI(const wchar_t* source, const wchar_t* find) {
|
||||
if (!find || find[0] == L'\0') {
|
||||
return source;
|
||||
}
|
||||
|
||||
const wchar_t* scan = source;
|
||||
while (*scan) {
|
||||
const wchar_t* s = scan;
|
||||
const wchar_t* f = find;
|
||||
|
||||
while (*s && *f && EqualASCIICharI(*s, *f)) {
|
||||
++s, ++f;
|
||||
}
|
||||
|
||||
if (!*f) {
|
||||
return scan;
|
||||
}
|
||||
|
||||
++scan;
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool FindTagInStr(const wchar_t* str,
|
||||
const wchar_t* tag,
|
||||
const wchar_t** position) {
|
||||
int tag_length = ::lstrlen(tag);
|
||||
const wchar_t* scan = str;
|
||||
for (const wchar_t* tag_start = SearchStringI(scan, tag);
|
||||
tag_start != nullptr; tag_start = SearchStringI(scan, tag)) {
|
||||
scan = tag_start + tag_length;
|
||||
if (*scan == L'-' || *scan == L'\0') {
|
||||
if (position != nullptr) {
|
||||
*position = tag_start;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
} // namespace mini_installer
|
||||
@@ -0,0 +1,30 @@
|
||||
/* Copyright (c) 2025 The Brave Authors. All rights reserved.
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
// This file contains code that used to be upstream and had to be restored in
|
||||
// Brave to support delta updates on Windows until we are on Omaha 4. See:
|
||||
// github.com/brave/brave-core/pull/31937
|
||||
|
||||
#ifndef BRAVE_CHROMIUM_SRC_CHROME_INSTALLER_MINI_INSTALLER_MINI_STRING_H_
|
||||
#define BRAVE_CHROMIUM_SRC_CHROME_INSTALLER_MINI_INSTALLER_MINI_STRING_H_
|
||||
|
||||
#include <chrome/installer/mini_installer/mini_string.h> // IWYU pragma: export
|
||||
|
||||
namespace mini_installer {
|
||||
|
||||
// Case insensitive search of the first occurrence of |find| in |source|.
|
||||
const wchar_t* SearchStringI(const wchar_t* source, const wchar_t* find);
|
||||
|
||||
// Searches for |tag| within |str|. Returns true if |tag| is found and is
|
||||
// immediately followed by '-' or is at the end of the string. If |position|
|
||||
// is non-nullptr, the location of the tag is returned in |*position| on
|
||||
// success.
|
||||
bool FindTagInStr(const wchar_t* str,
|
||||
const wchar_t* tag,
|
||||
const wchar_t** position);
|
||||
|
||||
} // namespace mini_installer
|
||||
|
||||
#endif // BRAVE_CHROMIUM_SRC_CHROME_INSTALLER_MINI_INSTALLER_MINI_STRING_H_
|
||||
@@ -0,0 +1,28 @@
|
||||
/* Copyright (c) 2025 The Brave Authors. All rights reserved.
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include <chrome/installer/mini_installer/mini_string_test.cc>
|
||||
|
||||
// Tests the case insensitive find support of the StackString class.
|
||||
// This test used to be upstream and had to be restored in Brave to support
|
||||
// delta updates on Windows until we are on Omaha 4. See:
|
||||
// github.com/brave/brave-core/pull/31937
|
||||
TEST_F(MiniInstallerStringTest, StackStringFind) {
|
||||
static const wchar_t kTestStringSource[] = L"1234ABcD567890";
|
||||
static const wchar_t kTestStringFind[] = L"abcd";
|
||||
static const wchar_t kTestStringNotFound[] = L"80";
|
||||
|
||||
StackString<MAX_PATH> str;
|
||||
EXPECT_TRUE(str.assign(kTestStringSource));
|
||||
EXPECT_EQ(str.get(),
|
||||
mini_installer::SearchStringI(str.get(), kTestStringSource));
|
||||
EXPECT_EQ(nullptr,
|
||||
mini_installer::SearchStringI(str.get(), kTestStringNotFound));
|
||||
const wchar_t* found =
|
||||
mini_installer::SearchStringI(str.get(), kTestStringFind);
|
||||
EXPECT_NE(nullptr, found);
|
||||
std::wstring check(found, _countof(kTestStringFind) - 1);
|
||||
EXPECT_EQ(0, lstrcmpi(check.c_str(), kTestStringFind));
|
||||
}
|
||||
@@ -19,3 +19,16 @@
|
||||
#if defined(OFFICIAL_BUILD)
|
||||
#undef BUILDFLAG_INTERNAL_GOOGLE_CHROME_BRANDING
|
||||
#endif
|
||||
|
||||
namespace mini_installer {
|
||||
|
||||
// This function used to be upstream and had to be restored in Brave to support
|
||||
// delta updates on Windows until we are on Omaha 4. See:
|
||||
// github.com/brave/brave-core/pull/31937
|
||||
LONG RegKey::WriteSZValue(const wchar_t* value_name, const wchar_t* value) {
|
||||
return ::RegSetValueEx(key_, value_name, 0, REG_SZ,
|
||||
reinterpret_cast<const BYTE*>(value),
|
||||
(lstrlen(value) + 1) * sizeof(wchar_t));
|
||||
}
|
||||
|
||||
} // namespace mini_installer
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
/* Copyright (c) 2025 The Brave Authors. All rights reserved.
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#ifndef BRAVE_CHROMIUM_SRC_CHROME_INSTALLER_MINI_INSTALLER_REGKEY_H_
|
||||
#define BRAVE_CHROMIUM_SRC_CHROME_INSTALLER_MINI_INSTALLER_REGKEY_H_
|
||||
|
||||
// The WriteSZValue function used to be upstream and had to be restored in Brave
|
||||
// to support delta updates on Windows until we are on Omaha 4. See:
|
||||
// github.com/brave/brave-core/pull/31937
|
||||
#define WriteDWValue(...) \
|
||||
WriteDWValue(__VA_ARGS__); \
|
||||
LONG WriteSZValue(const wchar_t* value_name, const wchar_t* value)
|
||||
|
||||
#include <chrome/installer/mini_installer/regkey.h> // IWYU pragma: export
|
||||
|
||||
#undef WriteDWValue
|
||||
|
||||
#endif // BRAVE_CHROMIUM_SRC_CHROME_INSTALLER_MINI_INSTALLER_REGKEY_H_
|
||||
@@ -0,0 +1,5 @@
|
||||
# Upstream used to have zucchini in include_rules until it moved the delta
|
||||
# update logic from the browser installer into the updater. We need to keep it
|
||||
# here until we are on Omaha 4 on Windows. See
|
||||
# github.com/brave/brave-core/pull/31937
|
||||
include_rules = [ "+components/zucchini" ]
|
||||
@@ -0,0 +1,20 @@
|
||||
/* Copyright (c) 2025 The Brave Authors. All rights reserved.
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#ifndef BRAVE_CHROMIUM_SRC_CHROME_INSTALLER_SETUP_BRAND_BEHAVIORS_H_
|
||||
#define BRAVE_CHROMIUM_SRC_CHROME_INSTALLER_SETUP_BRAND_BEHAVIORS_H_
|
||||
|
||||
// UpdateInstallStatus used to have a different signature in upstream. We need
|
||||
// to restore it here to support delta updates on Windows until we are on Omaha
|
||||
// 4. See github.com/brave/brave-core/pull/31937.
|
||||
#define UpdateInstallStatus() \
|
||||
UpdateInstallStatus(installer::ArchiveType archive_type, \
|
||||
installer::InstallStatus install_status)
|
||||
|
||||
#include <chrome/installer/setup/brand_behaviors.h> // IWYU pragma: export
|
||||
|
||||
#undef UpdateInstallStatus
|
||||
|
||||
#endif // BRAVE_CHROMIUM_SRC_CHROME_INSTALLER_SETUP_BRAND_BEHAVIORS_H_
|
||||
@@ -7,19 +7,23 @@
|
||||
|
||||
#include "base/check_op.h"
|
||||
#include "base/dcheck_is_on.h"
|
||||
#include "base/notreached.h"
|
||||
#include "base/strings/strcat.h"
|
||||
#include "base/strings/utf_string_conversions.h"
|
||||
#include "base/win/windows_version.h"
|
||||
#include "chrome/install_static/install_util.h"
|
||||
#include "chrome/installer/setup/brand_behaviors.h"
|
||||
#include "chrome/installer/util/google_update_settings.h"
|
||||
#include "chrome/installer/util/install_util.h"
|
||||
#include "third_party/abseil-cpp/absl/strings/str_format.h"
|
||||
|
||||
#define DoPostUninstallOperations DoPostUninstallOperations_UNUSED
|
||||
#include <chrome/installer/setup/google_chrome_behaviors.cc>
|
||||
#undef DoPostUninstallOperations
|
||||
|
||||
namespace installer {
|
||||
|
||||
namespace {
|
||||
|
||||
bool NavigateToUrlWithHttps(const std::wstring& url);
|
||||
void NavigateToUrlWithIExplore(const std::wstring& url);
|
||||
|
||||
// This code is copied from `DoPostUninstallOperations` implementation in
|
||||
// `chrome/installer/setup/google_chrome_behaviors.cc` with the following
|
||||
// changes:
|
||||
@@ -32,6 +36,23 @@ constexpr std::wstring_view kBraveUninstallSurveyUrl(
|
||||
|
||||
} // namespace
|
||||
|
||||
// If |archive_type| is INCREMENTAL_ARCHIVE_TYPE and |install_status| does not
|
||||
// indicate a successful update, "-full" is appended to Chrome's "ap" value in
|
||||
// its ClientState key if it is not present, resulting in the full installer
|
||||
// being returned from the next update check. If |archive_type| is
|
||||
// FULL_ARCHIVE_TYPE or |install_status| indicates a successful update, "-full"
|
||||
// is removed from the "ap" value. "-stage:*" values are
|
||||
// unconditionally removed from the "ap" value.
|
||||
// This function used to be upstream and had to be restored in Brave to support
|
||||
// delta updates on Windows until we are on Omaha 4. See:
|
||||
// github.com/brave/brave-core/pull/31937
|
||||
void UpdateInstallStatus(installer::ArchiveType archive_type,
|
||||
installer::InstallStatus install_status) {
|
||||
GoogleUpdateSettings::UpdateInstallStatus(
|
||||
install_static::IsSystemInstall(), archive_type,
|
||||
InstallUtil::GetInstallReturnCode(install_status));
|
||||
}
|
||||
|
||||
void DoPostUninstallOperations(const base::Version& version,
|
||||
const base::FilePath& local_data_path,
|
||||
const std::wstring& distribution_data) {
|
||||
@@ -64,4 +85,15 @@ void DoPostUninstallOperations(const base::Version& version,
|
||||
}
|
||||
}
|
||||
|
||||
class GoogleUpdateSettings_UNUSED {
|
||||
public:
|
||||
static void UpdateInstallStatus() { NOTREACHED(); }
|
||||
};
|
||||
|
||||
} // namespace installer
|
||||
|
||||
#define GoogleUpdateSettings GoogleUpdateSettings_UNUSED
|
||||
#define DoPostUninstallOperations DoPostUninstallOperations_UNUSED
|
||||
#include <chrome/installer/setup/google_chrome_behaviors.cc>
|
||||
#undef DoPostUninstallOperations
|
||||
#undef GoogleUpdateSettings
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user