diff --git a/res/loc/rufus.loc b/res/loc/rufus.loc index 70f7ad28..7d4f02c4 100644 --- a/res/loc/rufus.loc +++ b/res/loc/rufus.loc @@ -223,7 +223,7 @@ t MSG_084 "This ISO image seems to use an obsolete version of '%s'.\n" "If you don't know what to do, you should select 'Yes'.\n\n" "Note: The new file will be downloaded in the current directory and once a " "'%s' exists there, it will be reused automatically." -t MSG_085 "Downloading '%s'" +t MSG_085 "Downloading %s" t MSG_086 "No image selected" # This message appears in Advanced format options → Check device for bad blocks → dropdown menu # %s will be replaced with SLC, MLC or TLC, which is a type of NAND (or flash memory). In other @@ -710,7 +710,7 @@ t MSG_081 "صورة غير مدعومة" t MSG_082 "هذه الصورة إما لا يمكن الإقلاع منها وإما تستعمل طريقة إقلاع أو ضغط غير مدعومة في روفوس..." t MSG_083 "إستبدال %s؟" t MSG_084 "صورة الـISO يبدو استخدامها لإصدار قديم من '%s'. \nقوائم التمهيد قد لا يتم عرضها بشكل صحيح بهذا السبب.\n\nلإصلاح الخلل يمكنك تحميل إصدار جديد من قبل روفوس:\n- إختر ‘نعم’ للإتصال بالإنترنت وتحميل الملف\n- إختر ‘لا’ لترك ملف الISO دون تعديل\nإذا كنت لا تعرف ما عليك فعله, عليك اختيار ‘نعم’.\n\nملاحظة: سيتم تحميل ملف جديد في الدليل الحالي وبعد العثور على ‘%s’ هناك, سوف يتم إعادة إستخدامه تلقائياً." -t MSG_085 "تحميل '%s'" +t MSG_085 "تحميل %s" t MSG_086 "لم يتم إختيار الصورة" t MSG_087 "ل %s NAND" t MSG_088 "ملف الصورة (الإيميج) كبير جداً" @@ -1072,7 +1072,7 @@ t MSG_084 "Bu ISO faylı '%s'in köhnə bir versiyanı istifadə edir kimi gör "Nə edəcəyinizi bilmirsinizsə, 'Bəli'i seçməlisiniz.\n\n" "Qeyd: Yeni Fayl mövcud göstəriciyə yüklənəcək və " "'%s' Orda mövcud olduqda, avtomatik olaraq istifadə ediləcək." -t MSG_085 "'%s' yüklənir" +t MSG_085 "%s yüklənir" t MSG_086 "Fayl seçilmədi" t MSG_088 "Fayl çox böyükdür" t MSG_089 "Fayl seçilən hədəf üçün çox böyükdür." @@ -1466,7 +1466,7 @@ t MSG_081 "Неподдържан образ" t MSG_082 "Този образ не е зареждащ или използва зареждащ или компресиращ метод който не се поддържа от Rufus.." t MSG_083 "Заместване на %s ?" t MSG_084 "Изглежда, че този ISO образ използва стара версия на '%s'.\nПоради тази причина стартиращите менюта може да не бъдат изобразени правилно.\n\nПо-нова версия може да бъде изтеглена от Rufus, за да отстрани този проблем:\n- Изберете 'Yes', за да се свържете с интернет и да изтеглите необходимият файл\n- Изберете 'No', за да продължите с настоящият ISO файл\nАко не знаете какво да правите, е препоръчително да изберете 'Yes'.\n\nБележка: Този файл ще бъде изтеглен в настоящата директория и щом '%s' е наличен, процесът ще продължи автоматично." -t MSG_085 "Изтегляне на '%s'" +t MSG_085 "Изтегляне на %s" t MSG_086 "Не е избран образ" t MSG_087 "за %s NAND" t MSG_088 "Образът е твърде голям" @@ -1808,7 +1808,7 @@ t MSG_081 "不支持的镜像" t MSG_082 "本镜像是不可引导的,或者使用了不被 Rufus 所支持的引导或压缩方式...\n本版本 Rufus 仅支持基于 bootmgr, EFI, Grub4DOS, GRUB 2, isolinux 或 WinPE 的启动 ISO 镜像。" t MSG_083 "替换 %s?" t MSG_084 "这个 ISO 镜像似乎使用一个过时的 '%s' 版本。\n引导菜单可能因此而无法正常显示。\n\nRufus 可以下载更新的版本来修复这个问题:\n- 选择【是】连接网络并下载文件\n- 选择【否】保留现有的 ISO 文件不变\n如果不知道如何选择,请选择【是】。\n\n注意:新文件将会下载到当前目录,一旦 '%s' 存在则会被自动选用。" -t MSG_085 "下载 '%s' 中" +t MSG_085 "下载 %s 中" t MSG_086 "未选择镜像" t MSG_087 "对 %s 闪存" t MSG_088 "镜像文件过大" @@ -2144,7 +2144,7 @@ t MSG_081 "不支援的 ISO 映像檔" t MSG_082 "此映像檔無法開機,或是使用 Rufus 不支援的開機、壓縮方式..." t MSG_083 "取代 %s?" t MSG_084 "此 ISO 映像檔似乎使用較舊版本的 '%s',\n開機選單可能因此無法正常運作。\n\nRufus 可協助下載較新版本來修正問題:\n- 選「是」,立即連上網路下載\n- 選「否」,保留原始 ISO 內容\n如果你看不懂或不知該如何抉擇,強烈建議選「是」\n\n注意: 一經下載後,Rufus 未來會自動套用新版 '%s'" -t MSG_085 "下載中 '%s'" +t MSG_085 "下載中 %s" t MSG_086 "未選取任何映像檔" t MSG_087 "給 %s NAND" t MSG_088 "映像檔之檔案大小過大" @@ -2503,7 +2503,7 @@ t MSG_084 "Ova ISO slika koristi staru verziju '%s'.\n" "- Odaberite 'Ne' da nastavite bez preuzimanja\n" "Preporuka je da odabarete 'Da'.\n\n" "Nova datoteka preuzima se u mapu gdje je Rufus." -t MSG_085 "Preuzimam '%s'" +t MSG_085 "Preuzimam %s" t MSG_086 "Nema odabira" t MSG_088 "Slika je prevelika" t MSG_089 "Ime mora biti kraće za odabrani medij." @@ -2889,7 +2889,7 @@ t MSG_081 "Nepodporovaný obraz" t MSG_082 "Obraz není bootovací, nebo používá metodu spuštění nebo kompresi, která není podporován Rufusem..." t MSG_083 "Nahradit %s?" t MSG_084 "Zdá se, že tento ISO obraz používá zastaralou verzi '%s'.\nNabídka boot systému se proto nemusí zobrazovat správně.\n\nRufus může odstranit tento problém stažením nové verze:\n- Zvolte 'Ano' pro připojení na Internet a stažení souboru\n- Zvolte 'Ne' pro ponechání stávajícího ISO souboru beze změny\nPokud nevíte, co máte udělat, zvolte 'Ano'.\n\nPoznámka: Nový soubor %s bude stažen do aktuální složky pro opětovné automatické použití." -t MSG_085 "Stahuji '%s'" +t MSG_085 "Stahuji %s" t MSG_086 "Nebyl zvolen žádný obraz disku" t MSG_088 "Obraz disku je příliš velký" t MSG_089 "Obraz disku je příliš velký pro zvolený cíl." @@ -3222,7 +3222,7 @@ t MSG_081 "ISO-filen er ikke understøttet" t MSG_082 "Denne ISO er enten ikke-bootbar eller er baseret på boot eller kompression metode, der er ikke støttet af Rufus..." t MSG_083 "Erstat %s?" t MSG_084 "Dette ISO-image lader til at bruge en forældet version af '%s'.\nPå grund af dette bliver Boot-menuer måske ikke vist korrekt.\n\nRufus kan hente en nyere version for at fikse dette problem:\n- Vælg 'Ja' for at oprette forbindelse til internettet og hente filen\n- Vælg 'Nej' for at lade ISO-filen forblive uændret\nHvis du er i tvivl om, hvad du skal vælge, bør du vælge 'Ja'.\n\nBemærk: '%s' bliver gemt i den nuværende mappe og bliver efterfølgende automatisk genanvendt, hvis den er der." -t MSG_085 "Downloader '%s'" +t MSG_085 "Downloader %s" t MSG_086 "Ingen image-fil er valgt" t MSG_087 "til %s NAND" t MSG_088 "Image-filen er for stor" @@ -3555,7 +3555,7 @@ t MSG_081 "Niet-ondersteunde image" t MSG_082 "Deze image is ofwel niet opstartbaar, of het gebruikt een opstart- of compressiemethode die niet ondersteund wordt door Rufus..." t MSG_083 "%s vervangen?" t MSG_084 "Deze ISO-image lijkt een verouderde versie te gebruiken van '%s'.\nOpstartmenu's worden hierdoor mogelijk niet goed weergegeven.\n\nEen nieuwere versie kan gedownload worden door Rufus om dit probleem op te lossen:\n- Kies 'Ja' om met het internet te verbinden en het bestand te downloaden\n- Kies 'Nee' om het bestaande ISO-bestand ongewijzigd te laten.\nAls u niet weet wat u moet doen, selecteert u best 'Ja'.\n\nOpmerking: Het nieuwe bestand wordt naar de huidige map gedownload en eens er een '%s' bestaat, zal deze automatisch opnieuw gebruikt worden." -t MSG_085 "'%s' downloaden" +t MSG_085 "%s downloaden" t MSG_086 "Geen image geselecteerd" t MSG_087 "voor %s NAND" t MSG_088 "Image is te groot" @@ -3894,7 +3894,7 @@ t MSG_081 "Levykuvaa ei tueta" t MSG_082 "Valittu levykuva ei ole boottava tai se käyttää käynnistys- tai pakkausmenetelmää jota Rufus ei tue..." t MSG_083 "Korvataanko %s?" t MSG_084 "Tämä ISO-levykuva vaikuttaisi käyttävän vanhentunutta '%s'-versiota.\nTämän vuoksi käynnistysvalikot saattavat näkyä väärin.\n\nRufus voi ladata uudemman version ongelman korjaamiseksi:\n- Valitse 'Kyllä' yhdistääksesi internetiin ja ladataksesi tiedoston\n- Valitse 'Ei' jättääksesi ISO-levykuvan alkuperäiseen muotoonsa\nJos et ole varma, sinun kannattaa valita 'Kyllä'.\n\nHuomio: Uusi tiedosto ladataan nykyiseen sijaintiin ja kun '%s' löytyy sijainnista, sitä käytetään automaattisesti." -t MSG_085 "Ladataan '%s'" +t MSG_085 "Ladataan %s" t MSG_086 "ISO-levykuvaa ei valittu" t MSG_087 "%s NAND-muistille" t MSG_088 "Levykuva on liian suuri" @@ -4234,7 +4234,7 @@ t MSG_081 "Image non supportée" t MSG_082 "Cette image n'est pas démarrable, ou bien elle utilise une méthode de démarrage ou de compression qui n'est pas compatible avec Rufus..." t MSG_083 "Remplacer %s ?" t MSG_084 "Cette image ISO utilise une version obsolète du fichier '%s'.\nLes menus de démarrage peuvent de pas fonctionner à cause de cela.\n\nRufus peut télécharger une nouvelle version du fichier pour résoudre ce problème :\n- Choisissez 'Oui' pour télécharger le fichier depuis Internet\n- Choisissez 'Non' pour garder le fichier de l'image ISO\nSi vous ne savez pas quoi faire, sélectionnez 'Oui'.\n\nNote : Le nouveau fichier sera téléchargé dans le répertoire courant. Si un '%s' existe à cet endroit, il sera réutilisé automatiquement." -t MSG_085 "Téléchargement de '%s'" +t MSG_085 "Téléchargement de %s" t MSG_086 "Aucune image sélectionnée" t MSG_087 "pour NAND %s" t MSG_088 "Image trop large" @@ -4580,7 +4580,7 @@ t MSG_081 "Nicht unterstützte Abbild-Datei" t MSG_082 "Dieses Abbild ist nicht startfähig oder benutzt eine nicht unterstützte Startart und/oder Kompression." t MSG_083 "Ersetze %s?" t MSG_084 "Diese ISO-Abbild-Datei verwendet eine veraltete Version von '%s'.\nBootmenüs werden deswegen möglicherweise fehlerhaft dargestellt.\n\nEine neuere Version kann von Rufus heruntergeladen werden, um diese Problem zu vermeiden:\n- Wählen Sie 'Ja', um die Datei herunterzuladen\n- Wählen Sie 'Nein', um das ISO-Abbild nicht zu verändern\nWenn Sie unsicher sind, wählen Sie 'Ja'.\n\nHinweis: Die neue Datei wird in das aktuelle Verzeichnis heruntergeladen und falls '%s' bereits vorhanden ist, wird sie automatisch wiederverwendet." -t MSG_085 "Download '%s'" +t MSG_085 "Download %s" t MSG_086 "Keine Abbild-Datei gewählt" t MSG_087 "für %s Flash" t MSG_088 "Abbild ist zu groß" @@ -4910,7 +4910,7 @@ t MSG_081 "Μη υποστηριζόμενο είδωλο" t MSG_082 "Αυτό το είδωλο είτε δεν διαθέτει δυνατότητα εκκίνησης ή δεν χρησιμοποιεί κάποια από τις μεθόδους συμπίεσης/εκκίνησης υποστηριζόμενη απο το Rufus..." t MSG_083 "Αντικατάσταση %s?" t MSG_084 "Αυτό το είδωλο ISO φαίνεται να χρησιμοποιεί μία ξεπερασμένη έκδοση του '%s'.\nΤο μενού εκκίνησης μπορεί να μην εμφανίζεται σωστά εξαιτίας αυτού.\n\nΤο Rufus είναι σε θέση να κάνει λήψη μίας νεότερης έκδοσης για να διορθωθεί αυτό το πρόβλημα:\n- Επιλέξτε το 'Ναι' για να συνδεθείτε στο διαδίκτυο και να κάνετε λήψη του αρχείου\n- Επιλέξτε το 'Όχι' για να αφήσετε το αρχείο ISO αμετάβλητο.\nΣε περίπτωση που δεν γνωρίζετε τι να κάνετε, θα ήταν καλό να επιλέξετε το 'Ναι'.\n\nΣημείωση: Η λήψη του νέου αρχείου θα γίνει στον τρέχοντα κατάλογο και εφόσον το'%s' υπάρχει εκεί, θα επαναχρησιμοποιηθεί αυτόματα." -t MSG_085 "Λήψη '%s'" +t MSG_085 "Λήψη %s" t MSG_086 "Δεν έχει επιλεχθεί κάποιο είδωλο" t MSG_087 "για %s NAND" t MSG_088 "Το είδωλο έχει πολύ μεγάλο μέγεθος" @@ -5251,7 +5251,7 @@ t MSG_081 "קובץ לא נתמך" t MSG_082 "קובץ זה לא ניתן לאתחול, או שהוא משתמש בשיטת כיווץ או אתחול שלא נתמכת על ידי Rufus..." t MSG_083 "האם להחליף את %s?" t MSG_084 "נראה שקובץ ה־ISO הזה משתמש בגרסה מיושנת של '%s'.\nלפיכך, יתכן שתפריטי האתחול לא יוצגו כראוי.\n\nRufus יכול להוריד גרסה חדשה כדי לתקן בעיה זו:\n- יש לבחור 'כן' כדי להתחבר לאינטרנט ולהוריד את הקובץ\n- יש לבחור 'לא' כדי להשאיר את קובץ ה־ISO ללא שינויים\nאם לא ברור לך מה לעשות, כדאי לבחור באפשרות 'כן'.\n\nהערה: הקובץ החדש יירד לספרייה בה ממוקם היישום וכל עוד ש־'%s' קיים שם, Rufus ישתמש בו באופן אוטומטי במידת הצורך." -t MSG_085 "מוריד את '%s'" +t MSG_085 "מוריד את %s" t MSG_086 "לא נבחר קובץ תמונה" t MSG_087 "עבור %s NAND" t MSG_088 "קובץ התמונה גדול מדי" @@ -5611,7 +5611,7 @@ t MSG_084 "Ez az ISO fájl valószínűleg a(z) '%s' elavult verzióját haszná "Ha nem tudod, mit kell tenned, nyomj 'Igen' gombot.\n\n" "Megjegyzés: Az új fájl a jelenlegi mappába lesz letöltve, és ha egy " "'%s' létezik, akkor az automatikusan újra lesz használva." -t MSG_085 "'%s' letöltése" +t MSG_085 "%s letöltése" t MSG_086 "Nincs képfájl kiválasztva" t MSG_088 "A képfájl túl nagy" t MSG_089 "A képfájl túl nagy a kiválasztott célhoz" @@ -5997,7 +5997,7 @@ t MSG_081 "Image tidak didukung" t MSG_082 "Image ini kemungkinan non-bootable, atau menggunakan metode boot atau kompresi yang tidak didukung oleh Rufus..." t MSG_083 "Ganti %s?" t MSG_084 "ISO image ini tampaknya menggunakan versi lawas dari '%s'.\nMenu Boot mungkin tidak ditampilkan dengan baik karena masalah ini.\n\nVersi yang lebih baru dapat diunduh oleh Rufus untuk menyelesaikan masalah ini:\n- Pilih 'Ya' untuk menyambungkan ke internet dan mengunduh berkas\n- Pilih 'Tidak' untuk membiarkan berkas ISO yang ada tidak termodifikasi\nJika Anda tidak mengetahui apa yang harus dilakukan, sebaiknya pilih 'Ya'.\n\nCatatan: Berkas baru akan diunduh di direktori saat ini dan karena '%s' sudah ada disana, berkas tersebut akan digunakan kembali secara otomatis." -t MSG_085 "Mengunduh '%s'" +t MSG_085 "Mengunduh %s" t MSG_086 "Tidak ada image terpilih" t MSG_087 "untuk %s NAND" t MSG_088 "Image terlalu besar" @@ -6328,7 +6328,7 @@ t MSG_081 "Formato immagine non supportato" t MSG_082 "Questa immagine non è avviabile, o usa un metodo di boot o di compressione non supportato da Rufus..." t MSG_083 "Sostituire %s?" t MSG_084 "Questa immagine sembra che usi una versione obsoleta di '%s'.\nA causa di ciò il menu di avvio potrebbe non essere visualizzato correttamente.\n\nUna nuova versione può essere scaricata da Rufus per correggere questo problema:\n- Seleziona 'Sì' per collegarsi a internet e scaricare il file\n- Seleziona 'No' per lasciare inalterato il file immagine ISO\nIn caso di dubbi, è preferibile selezionare 'Sì'.\n\nNota: il nuovo file verrà scaricato nella cartella attuale e una volta scaricato '%s', verrà riusato automaticamente." -t MSG_085 "Download '%s'" +t MSG_085 "Download %s" t MSG_086 "Nessuna immagine selezionata" t MSG_087 "per NAND %s" t MSG_088 "Immagine troppo grande" @@ -6667,7 +6667,7 @@ t MSG_081 "非対応のイメージです。" t MSG_082 "このイメージはブート非対応あるいはRufusでサポートされていないブート方式、圧縮方式を使用しています。" t MSG_083 "%sを置き換えますか?" t MSG_084 "このISOは“%s”の古いバージョンを使用するようです。\nブートメニューが正しく表示できないかもしれません。\n\nこの問題を解決するために新しいバージョンをダウンロードできます。\n- インターネットに接続し、ファイルをダウンロードするには [はい] をクリックしてください。\n- 既存のISOを変更しない場合は [いいえ] をクリックしてください。\nどうしたらよいかわからない場合は [はい] をクリックすることを推奨します。\n\n注意: 新しいファイルは現在のフォルダーにダウンロードされます。すでに“%s”のファイルがある場合は自動的に再利用します。" -t MSG_085 "“%s”をダウンロード中" +t MSG_085 "%s をダウンロード中" t MSG_086 "イメージが選択されていません。" t MSG_087 "(%s NAND用)" t MSG_088 "イメージが大きすぎます。" @@ -7005,7 +7005,7 @@ t MSG_081 "지원되지 않는 이미지" t MSG_082 "이 이미지는 부팅할 수 없거나, Rufus가 지원하지 않는 부팅 또는 압축 방법을 사용하고 있습니다." t MSG_083 "%s 교체?" t MSG_084 "이 ISO 이미지는 '%s'의 이전 버전을 사용하고 있는 것 같습니다.\n이것 때문에 부팅 메뉴가 제대로 표시되지 않을 수 있습니다.\n\n\nRufus가 최신 버전을 다운로드하여 이 문제를 해결할 수 있습니다.:\n- 인터넷에 연결해 파일을 내려받으려면 '예'를 선택하십시오.\n- 기존 ISO 파일을 수정하지 않고 그대로 두려면 '아니오'를 선택하십시오.\n만약 무엇을 선택해야 할지 모른다면 '예'를 선택하십시오.\n\n알림: 새 파일은 현재 디렉토리에 내려받게 되며 이미 '%s'가 있다면 자동으로 재사용됩니다." -t MSG_085 "'%s' 다운로드 중..." +t MSG_085 "%s 다운로드 중..." t MSG_086 "선택된 ISO 이미지가 없습니다" t MSG_087 "%s 낸드" t MSG_088 "이미지가 너무 큽니다" @@ -7345,7 +7345,7 @@ t MSG_081 "Neatbalstāms virtuālā attēla formāts" t MSG_082 "Izvēlētais virtuālais attēls nav ielādes, jeb izmanto Rufus nezināmu ielādes metodi vai saspiešanas formātu." t MSG_083 "Aizvietot %s?" t MSG_084 "Šis ISO virtuālais attēls izmanto novecojušas versijas '%s'.\nIelādes komandkarte var attēloties nekorekti.\n\nŠīs kļūdas novēršanai jāielādē jaunāka Rufus versija:\n- Izvēlieties 'Jā' lai pieslēgtos pie interneta un ielādētu jaunāku versiju\n- Izvēlieties 'Nē' lai ISO fails paliktu nemainīts\nJa nezināt ko darīt, izvēlieties 'Jā'.\n\nPiezīme: Jaunais fails tiks lejupielādēts tekošajā mapē, un eksistējošais '%s' automātiski tiks samainīts." -t MSG_085 "Lejuplādēts '%s'" +t MSG_085 "Lejuplādēts %s" t MSG_086 "Nav izvēlēts virtuālais attēls" t MSG_087 "no %s NAND" t MSG_088 "Virtuālais attēls pārāk liels" @@ -7684,7 +7684,7 @@ t MSG_081 "Nepalaikomas atvaizdas" t MSG_082 "Arba tai ne įkelties atvaizdas, arba jis naudoja įkelties ar glaudinimo metodą, kurio nepalaiko Rufus..." t MSG_083 "Pakeisti %s?" t MSG_084 "Atrodo, šis ISO atvaizdas naudoja pasenusią „%s“ versiją.\nĮkelties meniu dėl to gali būti vaizduojamas blogai.\n\nGalima atsisiųsti naujesnę Rufus versiją išspręsti problemai:\n- Pasirinkite 'Taip' norėdami prisijungti prie interneto ir atsisiųsti failą\n- Pasirinkite 'Ne' norėdami palikti esamą ISO failą nepakeistą\nJei nežinote ką daryti, reikėtų pasirinkti 'Taip'.\n\nPastaba: naujas failas bus atsiųstas į dabartinį katalogą ir jei „%s“ ten jau yra, jis bus panaudotas iš naujo automatiškai." -t MSG_085 "Siunčiama: „%s“" +t MSG_085 "Siunčiama: %s" t MSG_086 "Atvaizdas nepasirinktas" t MSG_087 "su %s NAND" t MSG_088 "Atvaizdas per didelis" @@ -8022,7 +8022,7 @@ t MSG_081 "Imej tidak disokong" t MSG_082 "Imej ini sama ada tidak boleh boot, atau ia menggunakan kaedah boot atau mampatan yang tidak disokong oleh Rufus..." t MSG_083 "Gantikan %s?" t MSG_084 "Imej ISO ini menggunakan versi '%s' yang telah lapuk.\nOleh sebab ini, menu boot mungkin tidak dipaparkan dengan betul.\n\nVersi yang lebih baharu boleh dimuat turun oleh Rufus untuk memperbaiki isu ini:\n- Pilih 'Ya' untuk menyambung ke internet dan muat turun fail tersebut\n- Pilih 'Tidak' untuk tidak mengubahsuai fail ISO yang digunakan\nJika anda tidak pasti apa yang perlu dilakukan, pilih 'Ya'.\n\nPerhatian: Fail yang dimuat turun akan disimpan di dalam direktori bersamaan dengan Rufus dan apabila terdapat '%s' , ia akan digunakan secara automatik." -t MSG_085 "Memuat turun '%s'" +t MSG_085 "Memuat turun %s" t MSG_086 "Tiada imej yang dipilih" t MSG_087 "untuk %s NAND" t MSG_088 "Imej terlalu besar" @@ -8383,7 +8383,7 @@ t MSG_084 "Dette ISO-bildet ser ut til å inneholde en foreldet versjon av '%s'. "Hvis du ikke vet hva du skal gjøre, bør du velge 'Ja'.\n\n" "OBS: Den nye filen vil bli lastet ned i den gjeldende mappen, og når" "'%s' er der, vil den bli brukt automatisk." -t MSG_085 "Laster ned '%s'" +t MSG_085 "Laster ned %s" t MSG_086 "Intet bilde valgt" t MSG_088 "Bildet er for stort" t MSG_089 "Bildet er for stort for det valgte målet." @@ -8782,7 +8782,7 @@ t MSG_081 "فایل ایمیج انتخاب‌شده پشتیبانی نمی‌ t MSG_082 "فایل ایمیج (Image) انتخاب‌شده، قابلیت راه‌اندازی سیستم‌عامل را ندارد (none-bootable) یا ساختاری دارد که Rufus آن را پشتیبانی نمی‌کند." t MSG_083 "%s جایگزین شود؟" t MSG_084 "انگار این فایل ISO از نسخه قدیمی «%s» استفاده می‌کند.\nبه همین دلیل، ممکن است منوی راه‌اندازی (Boot Menu) به‌درستی نمایش داده نشود.\n\nبرای از بین بردن این مشکل، Rufus می‌تواند نسخه جدید آن را دانلود کند.\n-برای اتصال به اینترنت و دانلود این فایل «بله» را انتخاب کنید\n-اگر نمی‌خواهید این فایل را دانلود کنید، «خیر» را انتخاب کنید.\n\nنکته: این فایل در پوشه نرم‌افزار دانلود می‌شود و در دفعات بعد به‌صورت خودکار از آن استفاده خواهد شد." -t MSG_085 "در حال دانلود کردن '%s'" +t MSG_085 "در حال دانلود کردن %s" t MSG_086 "فایل ایمیج انتخاب نشده است" t MSG_087 "برای نوع %s" t MSG_088 "فایل ایمیج بیش از اندازه بزرگ است" @@ -9119,7 +9119,7 @@ t MSG_081 "Niewspierany obraz" t MSG_082 "Ten obraz nie jest bootowalny lub używa kompresji sektora rozruchowego niewspieranej przez Rufusa..." t MSG_083 "Zastąpić %s?" t MSG_084 "Ten plik ISO wydaje się być przestarzałą wersją '%s'.\nZ tego powodu menu bootowania może nie wyświetlać się poprawnie.\n\nNowsza wersja może być pobrana przez Rufusz aby naprawić ten błąd:\n- Wybierz 'Tak' aby połączyć się z internetem i pobrać plik\n- Wybierz 'Nie' aby zostawić istniejący plik ISO niezmieniony\nJeśli nie wiesz co zrobić, powinieneś wybrać 'Tak'.\n\nInformacja: Nowy plik będzie pobrany do aktualnej lokalizacji i gdy '%s' jest tutaj, zostanie użyte automatycznie." -t MSG_085 "Pobieranie '%s'" +t MSG_085 "Pobieranie %s" t MSG_086 "Nie wybrano obrazu" t MSG_087 "dla NAND %s" t MSG_088 "Obraz jest zbyt duży" @@ -9451,7 +9451,7 @@ t MSG_081 "Imagem não suportada" t MSG_082 "Esta imagem não é inicializável ou utiliza um método de inicialização ou compressão não suportado pelo Rufus..." t MSG_083 "Substituir %s?" t MSG_084 "Parece que esta imagem ISO usa uma versão obsoleta do arquivo '%s'.\nIsso pode fazer com que os menus de inicialização não sejam exibidos corretamente.\n\nO Rufus pode baixar uma versão mais recente para resolver esse problema:\n- Selecione 'Sim' para se conectar à Internet e baixar o arquivo\n- Selecione 'Não' para deixar o arquivo ISO tal como está\nSe não sabe o que fazer, é recomendado selecionar 'Sim'.\n\nNota: O novo arquivo será baixado na pasta atual e, caso exista um arquivo\n '%s' nela, ele será reutilizado automaticamente." -t MSG_085 "Baixando '%s'" +t MSG_085 "Baixando %s" t MSG_086 "Nenhuma imagem ISO foi selecionada" t MSG_087 "para %s NAND" t MSG_088 "Imagem ISO muito grande" @@ -9786,7 +9786,7 @@ t MSG_081 "Tipo de imagem não suportada" t MSG_082 "Esta imagem não é inicializável ou então usa um método de arranque ou compressão não suportado." t MSG_083 "Substituir %s?" t MSG_084 "Esta imagem ISO usa uma versão obsoleta do ficheiro '%s'.\nIsto pode fazer com que o menu de arranque não seja exibido corretamente.\n\nRufus pode transferir uma versão mais recente para resolver este problema:\n- Selecione 'Sim' para ligar-se à Internet e transferir o ficheiro\n- Selecione 'Não' para deixar o ficheiro ISO tal como está\nSe não sabe o que fazer, é recomendado selecionar 'Sim'.\n\nNota: O novo ficheiro será transferido para a pasta atual, e se o ficheiro\n '%s' já existir, será substituído automaticamente." -t MSG_085 "A transferir '%s'" +t MSG_085 "A transferir %s" t MSG_086 "Nenhuma imagem selecionada" t MSG_087 "para %s TIPO" t MSG_088 "Imagem demasiado grande" @@ -10128,7 +10128,7 @@ t MSG_081 "Imaginea nu este acceptată" t MSG_082 "Această imagine nu este boot-abilă sau folosește o metodă de boot sau de compresie nesuportată de Rufus..." t MSG_083 "Înlocuire %s?" t MSG_084 "Acest lucru arată ca utilizați o versiune învechită a '%s'.\nDin acest motiv, meniul de boot nu este vizualizat corect.\n\nO versiune nouă poate fi descărcată de la Rufus, pentru a corecta această problemă:\n- Selectați 'Da' pentru a vă conecta la Internet și a descărca fișierul\n- Selectați 'Nu' pentru a lăsa neschimbat fișierul din imaginea ISO\nDacă nu știi ce să faci, este recomandat să alegi 'Da'.\n\nNotă: Noul fișier va fi descărcat în folderul curent și odată descărcat '%s', va fi reutilizat automat." -t MSG_085 "Descărcare '%s'" +t MSG_085 "Descărcare %s" t MSG_086 "Nici o imagine selectată" t MSG_087 "pentru %s NAND" t MSG_088 "Imagine prea mare" @@ -10472,7 +10472,7 @@ t MSG_081 "Неподдерживаемый образ" t MSG_082 "Выбранный образ либо незагрузочный, либо использует метод загрузки или сжатия, который не поддерживается Rufus..." t MSG_083 "Переместить %s?" t MSG_084 "Выбранный ISO-образ использует устаревшие '%s'.\nИз-за этого загрузочного меню может отображаться неправильно.\n\nНовые версии можно скачать с помощью Rufus:\n- Выберите 'Да', чтобы скачать файл из интернета\n- Выберите 'Нет', чтобы не модифицировать ISO-образ\nЕсли вы не знаете что делать, то выберите 'Да'.\n\nФайл будет загружен в текущую директорию, а в случае наличия '%s' - заменен автоматически." -t MSG_085 "Загружено '%s'" +t MSG_085 "Загружено %s" t MSG_086 "Не выбран образ" t MSG_087 "для %s NAND" t MSG_088 "Образ слишком большой" @@ -10810,7 +10810,7 @@ t MSG_081 "Nepodržana datoteka" t MSG_082 "Ova slika nije podržana, ili koristi metodu kompresije koju Rufus ne podržava..." t MSG_083 "Zameni %s?" t MSG_084 "Ova ISO datoteka koristi zastarjelu verziju '%s'.\nZbog toga, moguće je da se meniji pri podizanju sistema ne prikažu valjano.\n\nRufus može preuzeti noviju verziju da ne dođe do problema:\n- Odaberite 'Da' kako bi ste datoteka preuzela\n- Odaberite 'Ne' da ostavite postojeću ISO datoteku\nUkoliko niste sigurni šta da odaberete, odaberite 'Da'.\n\nNapomena: Nova datoteka će biti sačuvana u istom direktorijumu kao i Rufus, i kad datoteka '%s' postoji tamo, automatski će biti korišćena." -t MSG_085 "Preuzimam '%s'" +t MSG_085 "Preuzimam %s" t MSG_086 "Nije odabrana datoteka" t MSG_087 "za %s NAND" t MSG_088 "Datoteka je prevelika" @@ -11149,7 +11149,7 @@ t MSG_081 "Nepodporovaný obraz" t MSG_082 "Tento obraz už viac nie je bootovateľný alebo používa boot alebo kompresnú metódu, ktorá nie je podporovaná programom Rufus..." t MSG_083 "Nahradenie modulu %s?" t MSG_084 "Zdá sa, že tento ISO obraz používa zastaralú verziu modulu %s.\nBootovacie menu sa preto nemusí zobrazovať správne.\n\nNová verzia modulu bude automaticky stiahnutá programom Rufus\na môže jednoducho odstrániť tento problém:\n- Stlačte „Áno\" pre pripojenie na internet a stiahnutie súboru\n- Stlačte „Nie\" a nechajte existujúci ISO súbor nezmenený\nAk neviete, čo máte robiť, vyberte tlačidlo „Áno\".\n\nPoznámka: Nový súbor „%s\" bude stiahnutý do aktuálneho priečinka programu a potom bude automaticky použitý." -t MSG_085 "Sťahovanie '%s'" +t MSG_085 "Sťahovanie %s" t MSG_086 "Nie je vybraný žiadny obraz disku" t MSG_087 "pre %s NAND" t MSG_088 "Obraz disku je príliš veľký" @@ -11512,7 +11512,7 @@ t MSG_084 "Zdi se, da ta ISO slika uporablja zastarelo verzijo \"%s\".\n" "Če ne veste, kaj storiti, izberite \"Da\".\n\n" "Opomba: nova datoteka bo prenesena v trenutni imenik in ko datoteka " "\"%s\" tam enkrat obstaja, bo samodejno uporabljena tudi v bodoče." -t MSG_085 "Prenašam '%s'" +t MSG_085 "Prenašam %s" t MSG_086 "Izbrana ni nobena slika" t MSG_088 "Slika je prevelika" t MSG_089 "Ta slika je prevelika za izbrani cilj." @@ -11891,7 +11891,7 @@ t MSG_081 "Tipo de imagen no soportada" t MSG_082 "Esta imagen ISO, o no es autoarrancable, o usa un método de arranque o compresión que no es soportado por Rufus..." t MSG_083 "¿Reemplazar %s?" t MSG_084 "Esta imagen ISO parece que usa una versión obsoleta del archivo '%s'.\nEsto puede hacer que los menús de arranque no se muestren correctamente.\n\nRufus puede descargar una versión más reciente para resolver este problema:\n- Seleccione 'Sí' para conectarse al Internet y descargar el archivo\n- Seleccione 'No' para dejar el archivo ISO tal como está\nSi no sabe qué hacer, se recomienda seleccionar 'Sí'.\n\nNota: El nuevo archivo se descargará en el directorio actual, en el momento que un archivo\n '%s' exista ahí, será usado automáticamente." -t MSG_085 "Descargando '%s'" +t MSG_085 "Descargando %s" t MSG_086 "No hay imagen ISO seleccionada" t MSG_087 "para NAND %s" t MSG_088 "Imagen ISO demasiado grande" @@ -12223,7 +12223,7 @@ t MSG_081 "Avbilden stöds ej" t MSG_082 "Denna avbild är antingen icke startbar, eller så använder den en start- eller kompression-metod som Rufus inte stöder..." t MSG_083 "Ersätt %s?" t MSG_084 "Denna ISO-avbild verkar använda en gammal version av '%s'.\nStartmenyn visas kanske inte på ett korrekt sätt på grund av detta.\n\nLadda ner en nyare version av Rufus så löser det problemet:\n- Välj 'Ja' för att ansluta till internet och ladda ner filen\n- Välj 'Nej' för att låta befintlig ISO-fil vara omodifierad\nVet du inte vad du ska välja, så ska du välja 'Ja'.\n\nObs: Filen kommer att laddas ner i nuvarande katalog och när '%s' sedan finns där, kommer den automatiskt att återanvändas." -t MSG_085 "Laddar ner '%s'" +t MSG_085 "Laddar ner %s" t MSG_086 "Ingen avbild vald" t MSG_087 "för %s-NAND" t MSG_088 "Avbilden är för stor" @@ -12556,7 +12556,7 @@ t MSG_081 "อิมเมจไฟล์ไม่รองรับ" t MSG_082 "อิมเมจไฟล์นี้ไม่สามารถบูตได้ หรืออาจใช้วิธีการบูตอื่นๆ ที่ Rufus ไม่รองรับ" t MSG_083 "แทนที่ %s?" t MSG_084 "ISO อิมเมจนี้อาจเป็นเวอร์ชั่นที่ล้าสมัยของ '%s'\nอาจทำให้เมนูการบูตไม่สามารถแสดงได้ถูกต้อง\n\nRufus สามารถดาวน์โหลดเวอร์ชั่นที่ใหม่กว่าให้คุณได้:\n- เลือก 'ใช่' เพื่อดาวน์โหลดไฟล์\n- เลือก 'ไม่ใช่' เพื่อใช้อิมเมจไฟล์อันเดิม\nหากไม่รู้จะเลือกวิธีใด ให้เลือก 'ใช่'\n\nหมายเหตุ: ไฟล์ใหม่จะถูกจัดเก็บในโฟลเดอร์ปัจจุบัน และเมื่อไฟล์ '%s มีแล้ว ไฟล์จะถูกเลือกใช้โดยอัตโนมัติ" -t MSG_085 "กำลังดาวน์โหลด '%s'" +t MSG_085 "กำลังดาวน์โหลด %s" t MSG_086 "ยังไม่ได้เลือกอิมเมจไฟล์" t MSG_087 "สำหรับ %s NAND" t MSG_088 "อิมเมจไฟล์มีขนาดใหญ่เกินไป" @@ -12888,7 +12888,7 @@ t MSG_081 "Desteklenmeyen Yansıma" t MSG_082 "Bu yansıma ya önyüklenebilir değil ya da Rufus tarafından desteklenmeyen bir önyükleme veya bir sıkıştırma yöntemi kullanıyor..." t MSG_083 "%s yerdeğiştirilsin mi?" t MSG_084 "Bu ISO yansıması '%s'in eski bir sürümünü kullanıyor gibi görünüyor.\nAçılış menüsü bundan dolayı düzgün görüntülenmeyebilir.\n\nBu durumu düzeltmek için yeni sürümü Rufus tarafından indirilebilir:\n- İnternete bağlanıp dosyayı indirmek için 'Evet'i ssçin\n- Varolan ISO dosyasını olduğu gibi bırakmak için 'Hayır'ı seçin\nNe yapacağınızı bilmiyorsanız, 'Evet'i seçmelisiniz.\n\nNot: Yeni dosya mevcut dizine indirilecek ve '%s' orda varolunca, otomatik olarak kullanılacak." -t MSG_085 "'%s' indiriliyor" +t MSG_085 "%s indiriliyor" t MSG_086 "Yansıma seçilmedi" t MSG_087 "%s NAND için" t MSG_088 "Yansıma çok büyük" @@ -13232,7 +13232,7 @@ t MSG_081 "Непідтримуваний ISO-образ" t MSG_082 "Обраний образ або незавантажувальний або використовує метод завантаження чи стиснення, який не підтримується Rufus..." t MSG_083 "Перемістити %s?" t MSG_084 "Обраний ISO-образ використовує застарілу версію '%s'.\nЧерез це завантажувальне меню може відображатися неправильно.\n\nНову версію можна завантажити за допомогою Rufus:\n- Оберіть 'Так', щоб завантажити файл з інтернету\n- Оберіть 'Ні', щоб не модифікувати ISO-образ\nЯкщо ви не знаєте що робити, то оберіть 'Так'.\n\nФайл буде завантажений в поточну директорію, а в разі наявності '%s' - замінений автоматично." -t MSG_085 "Завантаженя '%s'" +t MSG_085 "Завантаженя %s" t MSG_086 "Образ не обрано" t MSG_087 "для %s NAND" t MSG_088 "Образ занадто великий" @@ -13567,7 +13567,7 @@ t MSG_081 "Ảnh không được hỗ trợ" t MSG_082 "Ảnh này không có khả năng khởi động hoặc sử dụng một phương thức khởi động hoặc nén không được Rufus hỗ trợ..." t MSG_083 "Thay thế %s?" t MSG_084 "Ảnh ISO này là phiên bản cũ của '%s'.\nMenu khởi động có thể không hiện chính xác vì điều này.\n\nMột phiên bản mới có thể được tải xuống bởi Rufus để khắc phục vấn đề này:\n- Chọn 'Có' để kết nối với Internet và tải tập tin xuống\n- Chọn 'Không' để không thay đổi tập tin ISO đang có\nNếu bạn không biết phải làm gì, bạn nên chọn 'Có'.\n\nGhi chú: Tập tin mới sẽ được tải xuống vào thư mục hiện tại và một khi '%s' có trong đó, nó sẽ được tự động tái sử dụng." -t MSG_085 "Đang tải xuống '%s'" +t MSG_085 "Đang tải xuống %s" t MSG_086 "Chưa chọn ảnh" t MSG_087 "cho %s NAND" t MSG_088 "Ảnh quá lớn" diff --git a/src/checksum.c b/src/checksum.c index 4128527e..f7550ad6 100644 --- a/src/checksum.c +++ b/src/checksum.c @@ -4,7 +4,7 @@ * Copyright © 1998-2001 Free Software Foundation, Inc. * Copyright © 2004 g10 Code GmbH * Copyright © 2002-2015 Wei Dai & Igor Pavlov - * Copyright © 2015-2016 Pete Batard + * Copyright © 2015-2019 Pete Batard * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -827,7 +827,7 @@ INT_PTR CALLBACK ChecksumCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM SetWindowTextU(hDlg, &image_path[i+1]); // Set focus on the OK button SendMessage(hDlg, WM_NEXTDLGCTL, (WPARAM)GetDlgItem(hDlg, IDOK), TRUE); - CenterDialog(hDlg); + CenterDialog(hDlg, NULL); break; case WM_COMMAND: switch (LOWORD(wParam)) { diff --git a/src/dev.c b/src/dev.c index bc8f1b96..bdf483be 100644 --- a/src/dev.c +++ b/src/dev.c @@ -1,7 +1,7 @@ /* * Rufus: The Reliable USB Formatting Utility * Device detection and enumeration - * Copyright © 2014-2018 Pete Batard + * Copyright © 2014-2019 Pete Batard * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -311,8 +311,8 @@ BOOL GetOpticalMedia(IMG_SAVE* img_save) //#define FORCED_DEVICE #ifdef FORCED_DEVICE #define FORCED_VID 0x067B -#define FORCED_PID 0x2731 -#define FORCED_NAME "SD Card Reader USB Device" +#define FORCED_PID 0x2733 +#define FORCED_NAME "EAGET Mass Storage USB Device" #endif /* diff --git a/src/hdd_vs_ufd.h b/src/hdd_vs_ufd.h index 4b8b6198..08fcb32f 100644 --- a/src/hdd_vs_ufd.h +++ b/src/hdd_vs_ufd.h @@ -1,7 +1,7 @@ /* * Rufus: The Reliable USB Formatting Utility * SMART HDD vs Flash detection - isHDD() tables - * Copyright © 2013-2014 Pete Batard + * Copyright © 2013-2019 Pete Batard * * Based in part on drivedb.h from Smartmontools: * http://svn.code.sf.net/p/smartmontools/code/trunk/smartmontools/drivedb.h @@ -257,6 +257,7 @@ static vidpid_score_t vidpid_score[] = { { 0x067b, 0x2517, -20 }, // 1 GB UFD { 0x067b, 0x2528, -20 }, // 8 GB UFD { 0x067b, 0x2731, -20 }, // SD/TF Card Reader + { 0x067b, 0x2733, -20 }, // EAGET Mass Storage USB Device { 0x067b, 0x3400, -10 }, // Hi-Speed Flash Disk with TruePrint AES3400 { 0x067b, 0x3500, -10 }, // Hi-Speed Flash Disk with TruePrint AES3500 // Freecom exceptions diff --git a/src/net.c b/src/net.c index 48daea7f..80cd4168 100644 --- a/src/net.c +++ b/src/net.c @@ -226,6 +226,38 @@ const char* WinInetErrorString(void) } } +static char* GetShortName(const char* url) +{ + static char short_name[128]; + char *p; + size_t i, len = safe_strlen(url); + if (len < 5) + return NULL; + + for (i = len - 1; i > 0; i--) { + if (url[i] == '/') { + i++; + break; + } + } + static_strcpy(short_name, &url[i]); + // If the URL is followed by a query, remove that part + // Make sure we detect escaped queries too + p = strstr(short_name, "%3F"); + if (p != NULL) + *p = 0; + p = strstr(short_name, "%3f"); + if (p != NULL) + *p = 0; + for (i = 0; i < strlen(short_name); i++) { + if ((short_name[i] == '?') || (short_name[i] == '#')) { + short_name[i] = 0; + break; + } + } + return short_name; +} + // Open an Internet session static HINTERNET GetInternetSession(BOOL bRetry) { @@ -275,7 +307,7 @@ out: * to the dialog in question, with WPARAM being set to nonzero for EXIT on success * and also attempt to indicate progress using an IDC_PROGRESS control */ -static uint64_t DownloadToFileOrBuffer(const char* url, const char* file, BYTE** buffer, HWND hProgressDialog) +static uint64_t DownloadToFileOrBuffer(const char* url, const char* file, BYTE** buffer, HWND hProgressDialog, BOOL bTaskBarProgress) { const char* accept_types[] = {"*/*\0", NULL}; const char* short_name; @@ -377,8 +409,12 @@ static uint64_t DownloadToFileOrBuffer(const char* url, const char* file, BYTE** goto out; } total_size = (uint64_t)atoll(strsize); - if (hProgressDialog != NULL) + if (hProgressDialog != NULL) { + char msg[128]; uprintf("File length: %s", SizeToHumanReadable(total_size, FALSE, FALSE)); + static_sprintf(msg, "%s (%s)", GetShortName(url), SizeToHumanReadable(total_size, FALSE, FALSE)); + PrintStatus(0, MSG_085, msg); + } if (file != NULL) { hFile = CreateFileU(file, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); @@ -406,7 +442,9 @@ static uint64_t DownloadToFileOrBuffer(const char* url, const char* file, BYTE** if (!pfInternetReadFile(hRequest, buf, sizeof(buf), &dwDownloaded) || (dwDownloaded == 0)) break; if (hProgressDialog != NULL) { - SendMessage(hProgressBar, PBM_SETPOS, (WPARAM)(MAX_PROGRESS*((1.0f*size) / (1.0f*total_size))), 0); + SendMessage(hProgressBar, PBM_SETPOS, (WPARAM)((1.0f * MAX_PROGRESS * size) / (1.0f * total_size)), 0); + if (bTaskBarProgress) + SetTaskbarProgressValue((ULONGLONG)((1.0f * MAX_PROGRESS * size) / (1.0f * total_size)), MAX_PROGRESS); PrintInfo(0, MSG_241, (100.0f*size) / (1.0f*total_size)); } if (file != NULL) { @@ -480,10 +518,10 @@ DWORD DownloadSignedFile(const char* url, const char* file, HWND hProgressDialog strcpy(url_sig, url); strcat(url_sig, ".sig"); - buf_len = (DWORD)DownloadToFileOrBuffer(url, NULL, &buf, hProgressDialog); + buf_len = (DWORD)DownloadToFileOrBuffer(url, NULL, &buf, hProgressDialog, FALSE); if (buf_len == 0) goto out; - sig_len = (DWORD)DownloadToFileOrBuffer(url_sig, NULL, &sig, NULL); + sig_len = (DWORD)DownloadToFileOrBuffer(url_sig, NULL, &sig, NULL, FALSE); if ((sig_len != RSA_SIGNATURE_SIZE) || (!ValidateOpensslSignature(buf, buf_len, sig, sig_len))) { uprintf("FATAL: Download signature is invalid ✗"); DownloadStatus = 403; // Forbidden @@ -750,7 +788,7 @@ static DWORD WINAPI CheckForUpdatesThread(LPVOID param) // Now download the signature file static_sprintf(sigpath, "%s/%s.sig", server_url, urlpath); - dwDownloaded = (DWORD)DownloadToFileOrBuffer(sigpath, NULL, &sig, NULL); + dwDownloaded = (DWORD)DownloadToFileOrBuffer(sigpath, NULL, &sig, NULL, FALSE); if ((dwDownloaded != RSA_SIGNATURE_SIZE) || (!ValidateOpensslSignature(buf, dwTotalSize, sig, dwDownloaded))) { uprintf("FATAL: Version signature is invalid ✗"); goto out; @@ -828,12 +866,12 @@ BOOL CheckForUpdates(BOOL force) */ static DWORD WINAPI DownloadISOThread(LPVOID param) { - char cmdline[512], locale_str[1024], iso_name[128], pipe[64] = "\\\\.\\pipe\\"; + char cmdline[512], locale_str[1024], pipe[64] = "\\\\.\\pipe\\"; char powershell_path[MAX_PATH], icon_path[MAX_PATH] = "", script_path[MAX_PATH] = ""; - char *p, *url = NULL, sig_url[128]; + char *url = NULL, sig_url[128]; BYTE *sig = NULL; HANDLE hFile, hPipe; - DWORD i, dwSize, dwAvail, dwPipeSize = 4096; + DWORD dwSize, dwAvail, dwPipeSize = 4096; GUID guid; IGNORE_RETVAL(CoInitializeEx(NULL, COINIT_APARTMENTTHREADED)); @@ -847,6 +885,7 @@ static DWORD WINAPI DownloadISOThread(LPVOID param) ExtractAppIcon(icon_path, TRUE); //#define FORCE_URL "https://github.com/pbatard/rufus/raw/master/res/loc/test/windows_to_go.iso" +//#define FORCE_URL "https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.8.0-amd64-netinst.iso" #if !defined(FORCE_URL) #if defined(RUFUS_TEST) // In test mode, just use our local script @@ -854,11 +893,11 @@ static DWORD WINAPI DownloadISOThread(LPVOID param) #else // If we don't have the script, download it if (fido_len == 0) { - fido_len = (DWORD)DownloadToFileOrBuffer(fido_url, NULL, &fido_script, hMainDialog); + fido_len = (DWORD)DownloadToFileOrBuffer(fido_url, NULL, &fido_script, hMainDialog, FALSE); if (fido_len == 0) goto out; static_sprintf(sig_url, "%s.sig", fido_url); - dwSize = (DWORD)DownloadToFileOrBuffer(sig_url, NULL, &sig, NULL); + dwSize = (DWORD)DownloadToFileOrBuffer(sig_url, NULL, &sig, NULL, FALSE); if ((dwSize != RSA_SIGNATURE_SIZE) || (!ValidateOpensslSignature(fido_script, fido_len, sig, dwSize))) { uprintf("FATAL: Signature is invalid ✗"); free(sig); @@ -918,57 +957,32 @@ static DWORD WINAPI DownloadISOThread(LPVOID param) #endif IMG_SAVE img_save = { 0 }; url[dwSize] = 0; - for (i = dwSize - 1; i != 0; i--) { - if (url[i] == '/') - break; - } - static_strcpy(iso_name, &url[i + 1]); - // There's extra stuff after the ISO name, which we need to account for - p = strstr(iso_name, ".iso"); - if (p != NULL) { - p[4] = 0; - } else for (i = 0; i < strlen(iso_name); i++) { - if (iso_name[i] == '?') { - iso_name[i] = 0; - break; - } - } - - EXT_DECL(img_ext, iso_name, __VA_GROUP__("*.iso"), __VA_GROUP__(lmprintf(MSG_036))); + EXT_DECL(img_ext, GetShortName(url), __VA_GROUP__("*.iso"), __VA_GROUP__(lmprintf(MSG_036))); img_save.Type = IMG_SAVE_TYPE_ISO; img_save.ImagePath = FileDialog(TRUE, NULL, &img_ext, 0); if (img_save.ImagePath == NULL) { goto out; } // Download the ISO and report errors if any - SendMessage(hProgress, PBM_SETSTATE, (WPARAM)PBST_NORMAL, 0); - SetTaskbarProgressState(TASKBAR_NORMAL); - SetTaskbarProgressValue(0, MAX_PROGRESS); - SendMessage(hProgress, PBM_SETPOS, 0, 0); + SendMessage(hMainDialog, UM_PROGRESS_INIT, 0, 0); FormatStatus = 0; format_op_in_progress = TRUE; SendMessage(hMainDialog, UM_TIMER_START, 0, 0); - if (DownloadToFileOrBuffer(url, img_save.ImagePath, NULL, hMainDialog) == 0) { + if (DownloadToFileOrBuffer(url, img_save.ImagePath, NULL, hMainDialog, TRUE) == 0) { + SendMessage(hMainDialog, UM_PROGRESS_EXIT, 0, 0); if (SCODE_CODE(FormatStatus) == ERROR_CANCELLED) { uprintf("Download cancelled by user"); - SendMessage(hProgress, PBM_SETSTATE, (WPARAM)PBST_PAUSED, 0); - SetTaskbarProgressState(TASKBAR_PAUSED); - PrintInfo(0, MSG_211); Notification(MSG_INFO, NULL, NULL, lmprintf(MSG_211), lmprintf(MSG_041)); + PrintInfo(0, MSG_211); } else { - FormatStatus = GetLastError(); - SendMessage(hProgress, PBM_SETSTATE, (WPARAM)PBST_ERROR, 0); - SetTaskbarProgressState(TASKBAR_ERROR); + Notification(MSG_ERROR, NULL, NULL, lmprintf(MSG_194, GetShortName(url)), lmprintf(MSG_043, WinInetErrorString())); PrintInfo(0, MSG_212); - MessageBeep(MB_ICONERROR); - FlashTaskbar(dialog_handle); - SetLastError(FormatStatus); - Notification(MSG_ERROR, NULL, NULL, lmprintf(MSG_194, iso_name), lmprintf(MSG_043, WinInetErrorString())); } + } else { + // Download was successful => Select and scan the ISO + image_path = safe_strdup(img_save.ImagePath); + PostMessage(hMainDialog, UM_SELECT_ISO, 0, 0); } - // Download was successful => Select and scan the ISO - image_path = safe_strdup(img_save.ImagePath); - PostMessage(hMainDialog, UM_SELECT_ISO, 0, 0); format_op_in_progress = FALSE; safe_free(img_save.ImagePath); } diff --git a/src/rufus.c b/src/rufus.c index af574497..6e52a6ef 100755 --- a/src/rufus.c +++ b/src/rufus.c @@ -77,6 +77,7 @@ static char uppercase_select[2][64], uppercase_start[64], uppercase_close[64], u extern BOOL enable_iso, enable_joliet, enable_rockridge; extern BYTE* fido_script; +extern HWND hFidoDlg; extern uint8_t* grub2_buf; extern long grub2_len; extern char* szStatusMessage; @@ -1692,10 +1693,7 @@ static void SaveVHD(void) img_save.DeviceSize = SelectedDrive.DiskSize; if (img_save.ImagePath != NULL) { // Reset all progress bars - SendMessage(hProgress, PBM_SETSTATE, (WPARAM)PBST_NORMAL, 0); - SetTaskbarProgressState(TASKBAR_NORMAL); - SetTaskbarProgressValue(0, MAX_PROGRESS); - SendMessage(hProgress, PBM_SETPOS, 0, 0); + SendMessage(hMainDialog, UM_PROGRESS_INIT, 0, 0); FormatStatus = 0; format_op_in_progress = TRUE; free_space.QuadPart = 0; @@ -1759,11 +1757,7 @@ static void SaveISO(void) img_save.ImagePath = FileDialog(TRUE, NULL, &img_ext, 0); if (img_save.ImagePath == NULL) return; - // Reset all progress bars - SendMessage(hProgress, PBM_SETSTATE, (WPARAM)PBST_NORMAL, 0); - SetTaskbarProgressState(TASKBAR_NORMAL); - SetTaskbarProgressValue(0, MAX_PROGRESS); - SendMessage(hProgress, PBM_SETPOS, 0, 0); + SendMessage(hMainDialog, UM_PROGRESS_INIT, 0, 0); FormatStatus = 0; format_op_in_progress = TRUE; // Disable all controls except cancel @@ -1875,7 +1869,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA RECT rc, DialogRect, DesktopRect; HDC hDC; PAINTSTRUCT ps; - int nDeviceIndex, i, nWidth, nHeight, nb_devices, selected_language, offset; + int nDeviceIndex, i, nWidth, nHeight, nb_devices, selected_language, offset, tb_state, tb_flags; char tmp[128]; wchar_t* wbuffer = NULL; loc_cmd* lcmd = NULL; @@ -2207,11 +2201,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA StrArrayClear(&BlockingProcess); format_op_in_progress = TRUE; no_confirmation_on_cancel = FALSE; - // Reset all progress bars - SendMessage(hProgress, PBM_SETSTATE, (WPARAM)PBST_NORMAL, 0); - SetTaskbarProgressState(TASKBAR_NORMAL); - SetTaskbarProgressValue(0, MAX_PROGRESS); - SendMessage(hProgress, PBM_SETPOS, 0, 0); + SendMessage(hMainDialog, UM_PROGRESS_INIT, 0, 0); selection_default = (int)ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType)); // Create a thread to validate options and download files as needed (so that we can update the UI). // On exit, this thread sends message UM_FORMAT_START back to this dialog. @@ -2236,11 +2226,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA FormatStatus = 0; format_op_in_progress = TRUE; no_confirmation_on_cancel = TRUE; - // Reset all progress bars - SendMessage(hProgress, PBM_SETSTATE, (WPARAM)PBST_NORMAL, 0); - SetTaskbarProgressState(TASKBAR_NORMAL); - SetTaskbarProgressValue(0, MAX_PROGRESS); - SendMessage(hProgress, PBM_SETPOS, 0, 0); + SendMessage(hMainDialog, UM_PROGRESS_INIT, 0, 0); // Disable all controls except cancel EnableControls(FALSE); InitProgress(FALSE); @@ -2513,7 +2499,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA return (INT_PTR)TRUE; } if (message == WM_CLOSE) { - // We must use PostQuitMessage() on VM_CLOSE, to prevent notification sound... + // We must use PostQuitMessage() on WM_CLOSE, to prevent notification sound... PostQuitMessage(0); } else { // ...but we must simulate Cancel on shutdown requests, else the app freezes. @@ -2532,14 +2518,24 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA break; case UM_PROGRESS_EXIT: + tb_state = PBST_NORMAL; + tb_flags = TASKBAR_NORMAL; if (isMarquee) { SendMessage(hProgress, PBM_SETMARQUEE, FALSE, 0); SetTaskbarProgressValue(0, MAX_PROGRESS); } else if (!IS_ERROR(FormatStatus)) { SetTaskbarProgressValue(MAX_PROGRESS, MAX_PROGRESS); + } else if (SCODE_CODE(FormatStatus) == ERROR_CANCELLED) { + tb_state = PBST_PAUSED; + tb_flags = TASKBAR_PAUSED; + } else { + tb_state = PBST_ERROR; + tb_flags = TASKBAR_ERROR; + MessageBeep(MB_ICONERROR); + FlashTaskbar(dialog_handle); } - SendMessage(hProgress, PBM_SETSTATE, (WPARAM)PBST_NORMAL, 0); - SetTaskbarProgressState(TASKBAR_NORMAL); + SendMessage(hProgress, PBM_SETSTATE, (WPARAM)tb_state, 0); + SetTaskbarProgressState(tb_flags); break; case UM_NO_UPDATE: @@ -3387,6 +3383,8 @@ relaunch: DispatchMessage(&msg); } } + if (hFidoDlg != NULL) + SendMessage(hFidoDlg, WM_CLOSE, 0, 0); if (relaunch) { relaunch = FALSE; reinit_localization(); diff --git a/src/rufus.h b/src/rufus.h index e73ba962..48340f9d 100644 --- a/src/rufus.h +++ b/src/rufus.h @@ -484,7 +484,7 @@ extern char* SizeToHumanReadable(uint64_t size, BOOL copy_to_log, BOOL fake_unit extern char* TimestampToHumanReadable(uint64_t ts); extern HWND MyCreateDialog(HINSTANCE hInstance, int Dialog_ID, HWND hWndParent, DLGPROC lpDialogFunc); extern INT_PTR MyDialogBox(HINSTANCE hInstance, int Dialog_ID, HWND hWndParent, DLGPROC lpDialogFunc); -extern void CenterDialog(HWND hDlg); +extern void CenterDialog(HWND hDlg, HWND hParent); extern void ResizeMoveCtrl(HWND hDlg, HWND hCtrl, int dx, int dy, int dw, int dh, float scale); extern void ResizeButtonHeight(HWND hDlg, int id); extern void CreateStatusBar(void); diff --git a/src/rufus.rc b/src/rufus.rc index d48dd5c6..122d3c9d 100644 --- a/src/rufus.rc +++ b/src/rufus.rc @@ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL IDD_DIALOG DIALOGEX 12, 12, 232, 326 STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_ACCEPTFILES -CAPTION "Rufus 3.5.1453" +CAPTION "Rufus 3.5.1454" FONT 9, "Segoe UI Symbol", 400, 0, 0x0 BEGIN LTEXT "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP @@ -394,8 +394,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,5,1453,0 - PRODUCTVERSION 3,5,1453,0 + FILEVERSION 3,5,1454,0 + PRODUCTVERSION 3,5,1454,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -413,13 +413,13 @@ BEGIN VALUE "Comments", "https://akeo.ie" VALUE "CompanyName", "Akeo Consulting" VALUE "FileDescription", "Rufus" - VALUE "FileVersion", "3.5.1453" + VALUE "FileVersion", "3.5.1454" VALUE "InternalName", "Rufus" VALUE "LegalCopyright", " 2011-2019 Pete Batard (GPL v3)" VALUE "LegalTrademarks", "https://www.gnu.org/copyleft/gpl.html" VALUE "OriginalFilename", "rufus-3.5.exe" VALUE "ProductName", "Rufus" - VALUE "ProductVersion", "3.5.1453" + VALUE "ProductVersion", "3.5.1454" END END BLOCK "VarFileInfo" diff --git a/src/stdlg.c b/src/stdlg.c index 3a10c99e..549708fe 100644 --- a/src/stdlg.c +++ b/src/stdlg.c @@ -51,8 +51,7 @@ static char* szMessageText = NULL; static char* szMessageTitle = NULL; static char **szDialogItem; static int nDialogItems; -static HWND hBrowseEdit; -extern HWND hUpdatesDlg; +static HWND hBrowseEdit, hUpdatesDlg; static WNDPROC pOrgBrowseWndproc; static const SETTEXTEX friggin_microsoft_unicode_amateurs = {ST_DEFAULT, CP_UTF8}; static BOOL notification_is_question; @@ -60,8 +59,8 @@ static const notification_info* notification_more_info; static const char* notification_dont_display_setting; static WNDPROC update_original_proc = NULL; static HWINEVENTHOOK ap_weh = NULL; -static char *fp_title_str = "Microsoft Windows", *fp_button_str = "Format disk"; -static char *cp_title_str = "Windows Security Warning"; +static char title_str[3][128], button_str[128]; +HWND hFidoDlg = NULL; BOOL close_fido_cookie_prompts = FALSE; static int update_settings_reposition_ids[] = { @@ -442,16 +441,16 @@ void CreateStatusBar(void) /* * Center a dialog with regards to the main application Window or the desktop - * See http://msdn.microsoft.com/en-us/library/windows/desktop/ms644996.aspx#init_box + * See https://docs.microsoft.com/en-gb/windows/desktop/dlgbox/using-dialog-boxes#initializing-a-dialog-box */ -void CenterDialog(HWND hDlg) +void CenterDialog(HWND hDlg, HWND hParent) { - HWND hParent; RECT rc, rcDlg, rcParent; - if ((hParent = GetParent(hDlg)) == NULL) { + if (hParent == NULL) + hParent = GetParent(hDlg); + if (hParent == NULL) hParent = GetDesktopWindow(); - } GetWindowRect(hParent, &rcParent); GetWindowRect(hDlg, &rcDlg); @@ -530,7 +529,7 @@ INT_PTR CALLBACK LicenseCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM case WM_INITDIALOG: hLicense = GetDlgItem(hDlg, IDC_LICENSE_TEXT); apply_localization(IDD_LICENSE, hDlg); - CenterDialog(hDlg); + CenterDialog(hDlg, NULL); ResizeButtonHeight(hDlg, IDCANCEL); // Suppress any inherited RTL flags style = GetWindowLongPtr(hLicense, GWL_EXSTYLE); @@ -576,7 +575,7 @@ INT_PTR CALLBACK AboutCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lP // Execute dialog localization apply_localization(IDD_ABOUTBOX, hDlg); SetTitleBarIcon(hDlg); - CenterDialog(hDlg); + CenterDialog(hDlg, NULL); // Resize the 'License' button hCtrl = GetDlgItem(hDlg, IDC_ABOUT_LICENSE); GetWindowRect(hCtrl, &rc); @@ -704,7 +703,7 @@ INT_PTR CALLBACK NotificationCallback(HWND hDlg, UINT message, WPARAM wParam, LP separator_brush = CreateSolidBrush(GetSysColor(COLOR_3DLIGHT)); buttonface_brush = CreateSolidBrush(GetSysColor(COLOR_BTNFACE)); SetTitleBarIcon(hDlg); - CenterDialog(hDlg); + CenterDialog(hDlg, NULL); // Change the default icon if (Static_SetIcon(GetDlgItem(hDlg, IDC_NOTIFICATION_ICON), hMessageIcon) == 0) { uprintf("Could not set dialog icon\n"); @@ -897,7 +896,7 @@ INT_PTR CALLBACK SelectionCallback(HWND hDlg, UINT message, WPARAM wParam, LPARA background_brush = CreateSolidBrush(GetSysColor(COLOR_WINDOW)); separator_brush = CreateSolidBrush(GetSysColor(COLOR_3DLIGHT)); SetTitleBarIcon(hDlg); - CenterDialog(hDlg); + CenterDialog(hDlg, NULL); // Change the default icon and set the text Static_SetIcon(GetDlgItem(hDlg, IDC_SELECTION_ICON), LoadIcon(NULL, IDI_QUESTION)); SetWindowTextU(hDlg, szMessageTitle); @@ -1030,7 +1029,7 @@ INT_PTR CALLBACK ListCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lPa background_brush = CreateSolidBrush(GetSysColor(COLOR_WINDOW)); separator_brush = CreateSolidBrush(GetSysColor(COLOR_3DLIGHT)); SetTitleBarIcon(hDlg); - CenterDialog(hDlg); + CenterDialog(hDlg, NULL); // Change the default icon and set the text Static_SetIcon(GetDlgItem(hDlg, IDC_LIST_ICON), LoadIcon(NULL, IDI_EXCLAMATION)); SetWindowTextU(hDlg, szMessageTitle); @@ -1413,7 +1412,7 @@ INT_PTR CALLBACK UpdateCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM l apply_localization(IDD_UPDATE_POLICY, hDlg); PositionControls(hDlg); SetTitleBarIcon(hDlg); - CenterDialog(hDlg); + CenterDialog(hDlg, NULL); hFrequency = GetDlgItem(hDlg, IDC_UPDATE_FREQUENCY); hBeta = GetDlgItem(hDlg, IDC_INCLUDE_BETAS); IGNORE_RETVAL(ComboBox_SetItemData(hFrequency, ComboBox_AddStringU(hFrequency, lmprintf(MSG_013)), -1)); @@ -1636,7 +1635,7 @@ INT_PTR CALLBACK NewVersionCallback(HWND hDlg, UINT message, WPARAM wParam, LPAR apply_localization(IDD_NEW_VERSION, hDlg); download_status = 0; SetTitleBarIcon(hDlg); - CenterDialog(hDlg); + CenterDialog(hDlg, NULL); // Subclass the callback so that we can change the cursor update_original_proc = (WNDPROC)SetWindowLongPtr(hDlg, GWLP_WNDPROC, (LONG_PTR)update_subclass_callback); hNotes = GetDlgItem(hDlg, IDC_RELEASE_NOTES); @@ -1949,7 +1948,7 @@ static BOOL CALLBACK AlertPromptCallback(HWND hWnd, LPARAM lParam) if (GetWindowTextU(hWnd, str, sizeof(str)) == 0) return TRUE; - if (safe_strcmp(str, fp_button_str) == 0) + if (safe_strcmp(str, button_str) == 0) *found = TRUE; return TRUE; } @@ -1963,15 +1962,19 @@ static void CALLBACK AlertPromptHook(HWINEVENTHOOK hWinEventHook, DWORD Event, H if (GetWindowLongPtr(hWnd, GWL_STYLE) & WS_POPUPWINDOW) { str[0] = 0; GetWindowTextU(hWnd, str, sizeof(str)); - if (strcmp(str, fp_title_str) == 0) { + if (strcmp(str, title_str[0]) == 0) { found = FALSE; EnumChildWindows(hWnd, AlertPromptCallback, (LPARAM)&found); if (found) { SendMessage(hWnd, WM_COMMAND, (WPARAM)IDCANCEL, (LPARAM)0); uprintf("Closed Windows format prompt"); } - } else if (close_fido_cookie_prompts && strcmp(str, cp_title_str) == 0) { + } else if (close_fido_cookie_prompts && strcmp(str, title_str[1]) == 0) { SendMessage(hWnd, WM_COMMAND, (WPARAM)IDCANCEL, (LPARAM)0); + } else if ((strcmp(str, title_str[2]) == 0) && (hWnd != hFidoDlg)) { + // A wild Fido dialog appeared! => Keep track of its handle and center it + hFidoDlg = hWnd; + CenterDialog(hWnd, hMainDialog); } } } @@ -1981,7 +1984,6 @@ BOOL SetAlertPromptHook(void) { HMODULE mui_lib; char mui_path[MAX_PATH]; - static char title_str[2][128], button_str[128]; if (ap_weh != NULL) return TRUE; // No need to set again if active @@ -1993,26 +1995,27 @@ BOOL SetAlertPromptHook(void) // 4097 = "You need to format the disk in drive %c: before you can use it." (dialog text) // 4125 = "Microsoft Windows" (dialog title) // 4126 = "Format disk" (button) - if (LoadStringU(mui_lib, 4125, title_str[0], sizeof(title_str[0])) > 0) - fp_title_str = title_str[0]; - else + if (LoadStringU(mui_lib, 4125, title_str[0], sizeof(title_str[0])) <= 0) { + static_strcpy(title_str[0], "Microsoft Windows"); uprintf("Warning: Could not locate localized format prompt title string in '%s': %s", mui_path, WindowsErrorString()); - if (LoadStringU(mui_lib, 4126, button_str, sizeof(button_str)) > 0) - fp_button_str = button_str; - else + } + if (LoadStringU(mui_lib, 4126, button_str, sizeof(button_str)) <= 0) { + static_strcpy(button_str, "Format disk"); uprintf("Warning: Could not locate localized format prompt button string in '%s': %s", mui_path, WindowsErrorString()); + } FreeLibrary(mui_lib); } static_sprintf(mui_path, "%s\\%s\\urlmon.dll.mui", system_dir, GetCurrentMUI()); mui_lib = LoadLibraryU(mui_path); if (mui_lib != NULL) { // 2070 = "Windows Security Warning" (yes, that's what MS uses for a stupid cookie!) - if (LoadStringU(mui_lib, 2070, title_str[1], sizeof(title_str[1])) > 0) - cp_title_str = title_str[1]; - else + if (LoadStringU(mui_lib, 2070, title_str[1], sizeof(title_str[1])) <= 0) { + static_strcpy(title_str[1], "Windows Security Warning"); uprintf("Warning: Could not locate localized cookie prompt title string in '%s': %s", mui_path, WindowsErrorString()); + } FreeLibrary(mui_lib); } + static_strcpy(title_str[2], lmprintf(MSG_143)); ap_weh = SetWinEventHook(EVENT_SYSTEM_FOREGROUND, EVENT_SYSTEM_FOREGROUND, NULL, AlertPromptHook, 0, 0, WINEVENT_OUTOFCONTEXT | WINEVENT_SKIPOWNPROCESS);