Browse Source

Merge branch 'main' into darkstatusbar

Martijn Laan 2 tháng trước cách đây
mục cha
commit
a15e837f83

+ 44 - 14
Components/ISSigFunc.pas

@@ -96,17 +96,24 @@ begin
   TSHA256Digest(Result) := SHA256DigestFromString(S);
 end;
 
-function CalcHashToSign(const AIncludeFileName: Boolean; const AFileName: String; const AFileSize: Int64;
-  const AFileHash: TSHA256Digest): TSHA256Digest;
+function CalcHashToSign(const AIncludeFileNameAndTag: Boolean; const AFileName: String; const AFileSize: Int64;
+  const AFileHash: TSHA256Digest; const AFileTag: String): TSHA256Digest;
+
+  procedure SHA256UpdateWithString(var Context: TSHA256Context; const S: String);
+  begin
+    const U = UTF8String(S);
+    const N: Cardinal = Length(U);
+    SHA256Update(Context, N, SizeOf(N));
+    if N > 0 then
+      SHA256Update(Context, Pointer(U)^, N*SizeOf(U[1]));
+  end;
+
 begin
   var Context: TSHA256Context;
   SHA256Init(Context);
-  if AIncludeFileName then begin
-    const UTF8FileName = UTF8String(AFileName);
-    const UTF8FileNameLength: Cardinal = Length(UTF8FileName);
-    SHA256Update(Context, UTF8FileNameLength, SizeOf(UTF8FileNameLength));
-    if UTF8FileNameLength > 0 then
-      SHA256Update(Context, Pointer(UTF8FileName)^, UTF8FileNameLength*SizeOf(UTF8FileName[1]));
+  if AIncludeFileNameAndTag then begin
+    SHA256UpdateWithString(Context, AFileName);
+    SHA256UpdateWithString(Context, AFileTag);
   end;
   SHA256Update(Context, AFileSize, SizeOf(AFileSize));
   SHA256Update(Context, AFileHash, SizeOf(AFileHash));
@@ -185,6 +192,8 @@ end;
 function ISSigCreateSignatureText(const AKey: TECDSAKey;
   const AFileName: String; const AFileSize: Int64; const AFileHash: TSHA256Digest): String;
 begin
+  const AFileTag = ''; { Should be a parameter in the future }
+
   { Ensure unverifiable signature files can't be created accidentally }
   const UTF8FileName = UTF8String(AFileName);
   if Length(UTF8FileName) > 1000 then
@@ -202,7 +211,7 @@ begin
   var PublicKey: TECDSAPublicKey;
   AKey.ExportPublicKey(PublicKey);
 
-  const HashToSign = CalcHashToSign(True, AFileName, AFileSize, AFileHash);
+  const HashToSign = CalcHashToSign(True, AFileName, AFileSize, AFileHash, AFileTag);
   var Sig: TECDSASignature;
   AKey.SignHash(HashToSign, Sig);
 
@@ -211,12 +220,14 @@ begin
     'file-name "%s"'#13#10 +
     'file-size %d'#13#10 +
     'file-hash %s'#13#10 +
+    'file-tag "%s"'#13#10 +
     'key-id %s'#13#10 +
     'sig-r %s'#13#10 +
     'sig-s %s'#13#10,
     [AFileName,
      AFileSize,
      SHA256DigestToString(AFileHash),
+     AFileTag,
      SHA256DigestToString(CalcKeyID(PublicKey)),
      ECDSAInt256ToString(Sig.Sig_r),
      ECDSAInt256ToString(Sig.Sig_s)]);
@@ -225,9 +236,23 @@ end;
 function ISSigVerifySignatureText(const AAllowedKeys: array of TECDSAKey;
   const AText: String; out AFileName: String; out AFileSize: Int64;
   out AFileHash: TSHA256Digest; out AKeyUsedID: String): TISSigVerifySignatureResult;
+
+  function FormatToVersion(const Format: String; out Version: Integer): Boolean;
+  begin
+    if Format = 'issig-v1' then begin
+      Version := 1;
+      Exit(True);
+    end else if Format = 'issig-v2' then begin
+      Version := 2;
+      Exit(True);
+    end else
+      Exit(False);
+  end;
+
 var
   TextValues: record
-    Format, FileName, FileSize, FileHash, KeyID, Sig_r, Sig_s: String;
+    Format, FileName, FileSize, FileHash, FileTag, KeyID, Sig_r, Sig_s: String;
+    Version: Integer;
   end;
 begin
   { To be extra safe, clear the "out" parameters just in case the caller isn't
@@ -235,6 +260,7 @@ begin
   AFileName := '';
   AFileSize := -1;
   FillChar(AFileHash, SizeOf(AFileHash), 0);
+  var AFileTag := ''; { Should be a parameter in the future }
   AKeyUsedID := '';
 
   if Length(AText) > ISSigTextFileLengthLimit then
@@ -244,11 +270,13 @@ begin
 
   var SS := TStringScanner.Create(AText);
   if not ConsumeLineValue(SS, 'format', TextValues.Format, 8, 8, NonControlASCIICharsSet) or
-     ((TextValues.Format <> 'issig-v1') and ((TextValues.Format <> 'issig-v2'))) or
-     ((TextValues.Format = 'issig-v2') and not ConsumeLineValue(SS, 'file-name', TextValues.FileName, 0, MaxInt,
+     not FormatToVersion(TextValues.Format, TextValues.Version) or
+     ((TextValues.Version >= 2) and not ConsumeLineValue(SS, 'file-name', TextValues.FileName, 0, MaxInt,
        (NonControlASCIICharsSet - ['"']) + AllHighCharsSet, True, True)) or
      not ConsumeLineValue(SS, 'file-size', TextValues.FileSize, 1, 16, DigitsSet) or
      not ConsumeLineValue(SS, 'file-hash', TextValues.FileHash, 64, 64, HexDigitsSet) or
+     ((TextValues.Version >= 2) and not ConsumeLineValue(SS, 'file-tag', TextValues.FileTag, 0, MaxInt,
+       (NonControlASCIICharsSet - ['"']) + AllHighCharsSet, True, True)) or
      not ConsumeLineValue(SS, 'key-id', TextValues.KeyID, 64, 64, HexDigitsSet) or
      not ConsumeLineValue(SS, 'sig-r', TextValues.Sig_r, 64, 64, HexDigitsSet) or
      not ConsumeLineValue(SS, 'sig-s', TextValues.Sig_s, 64, 64, HexDigitsSet) or
@@ -278,8 +306,9 @@ begin
   const UnverifiedFileName = TextValues.FileName;
   const UnverifiedFileSize = StrToInt64(TextValues.FileSize);
   const UnverifiedFileHash = SHA256DigestFromString(TextValues.FileHash);
-  const HashToSign = CalcHashToSign(TextValues.Format <> 'issig-v1', UnverifiedFileName,
-    UnverifiedFileSize, UnverifiedFileHash);
+  const UnverifiedFileTag = TextValues.FileTag;
+  const HashToSign = CalcHashToSign(TextValues.Version >= 2, UnverifiedFileName,
+    UnverifiedFileSize, UnverifiedFileHash, UnverifiedFileTag);
   var Sig: TECDSASignature;
   Sig.Sig_r := ECDSAInt256FromString(TextValues.Sig_r);
   Sig.Sig_s := ECDSAInt256FromString(TextValues.Sig_s);
@@ -287,6 +316,7 @@ begin
     AFileName := UnverifiedFileName;
     AFileSize := UnverifiedFileSize;
     AFileHash := UnverifiedFileHash;
+    AFileTag := UnverifiedFileTag;
     Result := vsrSuccess;
   end else
     Result := vsrBad;

+ 3 - 2
Examples/MyDll.dll.issig

@@ -2,6 +2,7 @@ format issig-v2
 file-name "MyDll.dll"
 file-size 21280
 file-hash f4e549ef947c33a61520a38c855583e48cfd1702303815123662f7e2e4e73e09
+file-tag ""
 key-id def0147c3bbc17ab99bf7b7a9c2de1390283f38972152418d7c2a4a7d7131a38
-sig-r 0ba33df66764201f643189531b10d687767275d5b42f61da16568854b2196577
-sig-s c19753f32422be3d924ca4ecca7529bcc098441d6b9055940fcbcf1c0e3fc4bc
+sig-r 924bb961758ede8e7a6b06e798bb45e0def30c3b56f10e8e2e9717a6e74cc573
+sig-s 3ac3b134b5a2167b41221f73cf854084dd67ffa845a7475cd7e4158ae71b0786

+ 3 - 2
Examples/MyProg-Arm64.exe.issig

@@ -2,6 +2,7 @@ format issig-v2
 file-name "MyProg-Arm64.exe"
 file-size 77960
 file-hash ca7812155ff5935264177277b7c351ef35deacfda114fe8418d65cbcf105883a
+file-tag ""
 key-id def0147c3bbc17ab99bf7b7a9c2de1390283f38972152418d7c2a4a7d7131a38
-sig-r f3bdb92812f621a6de7ef9828368f7edf2576f96b984d50bbcefb2eba8cd9240
-sig-s b64a5109feb59393f3237df84c5b21965b46b4b76117316557d8e07d4dea86a0
+sig-r 6609533c534e5c40276dd4d8d0e9895caa2da1ac468f81da1076f5b4f422188c
+sig-s 7c726c104127fb6361e7b7000745534923d9b34a10552d70443cb25d77ceb82b

+ 3 - 2
Examples/MyProg-x64.exe.issig

@@ -2,6 +2,7 @@ format issig-v2
 file-name "MyProg-x64.exe"
 file-size 77960
 file-hash b50952f9af310be586746356508b9fd430dcbbaa155a04e6f9563632de0a023b
+file-tag ""
 key-id def0147c3bbc17ab99bf7b7a9c2de1390283f38972152418d7c2a4a7d7131a38
-sig-r 0d70aa66576f8cb97ace74dc1d0348c7dfbd6d7d23ed1122185ecca3f79a8e76
-sig-s 6f04303418f230cf52e26285362e0214875f2bf40e9be1c5f9a1dad15649ef24
+sig-r 190988b37803d9ae3c75050c43496225a1e7beaef0abfd0e4806482797707449
+sig-s 0b367bb7e4236ae366eea37ddff343f440b880c2e478df7b08fbade1758cd3b5

+ 3 - 2
Examples/MyProg.exe.issig

@@ -2,6 +2,7 @@ format issig-v2
 file-name "MyProg.exe"
 file-size 78984
 file-hash be272491050410c39db97101f05e80ed5d30a10caca6bc9f02228aa9499e19c9
+file-tag ""
 key-id def0147c3bbc17ab99bf7b7a9c2de1390283f38972152418d7c2a4a7d7131a38
-sig-r a2475468aafe1b1841d57e2f863b3d4b30a9956bda1985b8937d0a75bddf13df
-sig-s 3d4a6eb8f93db576e61adf5a2f63e5c6db2cc5bfbd0cf5da8cbada673d458ca6
+sig-r 8484d44b5904d6b4d01c76ccd9ef0367a7cdd1667ba09e3bfb04af5743de3ca4
+sig-s ed6bd58c7e3a126ddf78f5f9b5745ac7e9f29030350e452c9611837c4bf79c82

+ 2 - 2
Files/Languages/Arabic.isl

@@ -213,7 +213,7 @@ ReadyMemoGroup=مجلد قائمة ابدأ:
 ReadyMemoTasks=مهام إضافية:
 
 ; *** TDownloadWizardPage wizard page and DownloadTemporaryFile
-DownloadingLabel=تحميل الملفات الإضافية...
+DownloadingLabel2=تحميل الملفات الإضافية...
 ButtonStopDownload=إي&قاف التحميل
 StopDownload=هل أنت متأكد من أنك ترغب في إيقاف التحميل؟
 ErrorDownloadAborted=تم إلغاء التحميل
@@ -223,7 +223,7 @@ ErrorProgress=تقدم غير صالح: %1 من %2
 ErrorFileSize=حجم الملف غير صالح: المتوقع %1، الموجود %2
 
 ; *** TExtractionWizardPage wizard page and Extract7ZipArchive
-ExtractionLabel=جاري فك ضغط الملفات الإضافية...
+ExtractingLabel=جاري فك ضغط الملفات الإضافية...
 ButtonStopExtraction=إي&قاف فك الضغط
 StopExtraction=هل حقا ترغب في إيقاف فك الضغط?
 ErrorExtractionAborted=تم إيقاف عملية فك الضغط

+ 22 - 5
Files/Languages/German.isl

@@ -1,6 +1,6 @@
 ; ******************************************************
 ; ***                                                ***
-; *** Inno Setup version 6.4.0+ German messages      ***
+; *** Inno Setup version 6.5.0+ German messages      ***
 ; ***                                                ***
 ; *** Changes 6.0.0+ Author:                         ***
 ; ***                                                ***
@@ -232,24 +232,27 @@ ReadyMemoGroup=Startmenü-Ordner:
 ReadyMemoTasks=Zusätzliche Aufgaben:
 
 ; *** TDownloadWizardPage wizard page and DownloadTemporaryFile
-DownloadingLabel=Lade zusätzliche Dateien herunter...
+DownloadingLabel2=Lade Dateien herunter...
 ButtonStopDownload=Download &abbrechen
 StopDownload=Sind Sie sicher, dass Sie den Download abbrechen wollen?
 ErrorDownloadAborted=Download abgebrochen
 ErrorDownloadFailed=Download fehlgeschlagen: %1 %2
 ErrorDownloadSizeFailed=Fehler beim Ermitteln der Größe: %1 %2
-ErrorFileHash1=Fehler beim Ermitteln der Datei-Prüfsumme: %1
-ErrorFileHash2=Ungültige Datei-Prüfsumme: erwartet %1, gefunden %2
 ErrorProgress=Ungültiger Fortschritt: %1 von %2
 ErrorFileSize=Ungültige Dateigröße: erwartet %1, gefunden %2
 
 ; *** TExtractionWizardPage wizard page and Extract7ZipArchive
-ExtractionLabel=Entpacke zusätzliche Dateien...
+ExtractingLabel=Entpacke Dateien...
 ButtonStopExtraction=Entpacken &abbrechen
 StopExtraction=Sind Sie sicher, dass Sie das Entpacken abbrechen wollen?
 ErrorExtractionAborted=Entpacken abgebrochen
 ErrorExtractionFailed=Entpacken fehlgeschlagen: %1
 
+; *** Archive extraction failure details
+ArchiveIncorrectPassword=Ungültiges Passwort
+ArchiveIsCorrupted=Das Archiv ist defekt
+ArchiveUnsupportedFormat=Das Archivformat wird nicht unterstützt
+
 ; *** "Preparing to Install" wizard page
 WizardPreparing=Vorbereitung der Installation
 PreparingDesc=Das Setup bereitet die Installation von [name] auf diesem Computer vor.
@@ -294,11 +297,15 @@ AbortRetryIgnoreSelectAction=Bitte auswählen
 AbortRetryIgnoreRetry=&Nochmals versuchen
 AbortRetryIgnoreIgnore=&Den Fehler ignorieren und fortfahren
 AbortRetryIgnoreCancel=Installation abbrechen
+RetryCancelSelectAction=Bitte auswählen
+RetryCancelRetry=&Wiederholen
+RetryCancelCancel=&Abbrechen
 
 ; *** Installation status messages
 StatusClosingApplications=Anwendungen werden geschlossen ...
 StatusCreateDirs=Ordner werden erstellt ...
 StatusExtractFiles=Dateien werden entpackt ...
+StatusDownloadFiles=Dateien werden herunter geladen...
 StatusCreateIcons=Verknüpfungen werden erstellt ...
 StatusCreateIniEntries=INI-Einträge werden erstellt ...
 StatusCreateRegistryEntries=Registry-Einträge werden erstellt ...
@@ -328,6 +335,14 @@ FileAbortRetryIgnoreSkipNotRecommended=Diese Datei &überspringen (nicht empfohl
 FileAbortRetryIgnoreIgnoreNotRecommended=Den Fehler &ignorieren und fortfahren (nicht empfohlen)
 SourceIsCorrupted=Die Quelldatei ist beschädigt
 SourceDoesntExist=Die Quelldatei "%1" existiert nicht
+SourceVerificationFailed=Überprüfung der Quelldatei fehlgeschlagen: %1
+VerificationSignatureDoesntExist=Die Signaturdatei "%1" existiert nicht
+VerificationSignatureInvalid=Die Signaturdatei "%1" ist ungültig
+VerificationKeyNotFound=Die Signaturdatei "%1" verwendet einen unbekannten Schlüssel
+VerificationFileNameIncorrect=Der Name der Datei ist ungültig
+VerificationFileTagIncorrect=Der Tag der Datei ist ungültig
+VerificationFileSizeIncorrect=Die Größe der Datei ist ungültig
+VerificationFileHashIncorrect=Der Hashwert der Datei ist ungültig
 ExistingFileReadOnly2=Die vorhandene Datei kann nicht ersetzt werden, da sie schreibgeschützt ist.
 ExistingFileReadOnlyRetry=&Den Schreibschutz entfernen und noch einmal versuchen
 ExistingFileReadOnlyKeepExisting=Die &vorhandene Datei behalten
@@ -346,6 +361,8 @@ ErrorChangingAttr=Fehler beim Ändern der Datei-Attribute:
 ErrorCreatingTemp=Fehler beim Erstellen einer Datei im Ziel-Ordner:
 ErrorReadingSource=Fehler beim Lesen der Quelldatei:
 ErrorCopying=Fehler beim Kopieren einer Datei:
+ErrorDownloading=Beim Download der Datei ist ein Fehler aufgetreten:
+ErrorExtracting=Beim Entpacken eines Archivs ist ein Fehler aufgetreten:
 ErrorReplacingExistingFile=Fehler beim Ersetzen einer vorhandenen Datei:
 ErrorRestartReplace="Ersetzen nach Neustart" fehlgeschlagen:
 ErrorRenamingTemp=Fehler beim Umbenennen einer Datei im Ziel-Ordner:

+ 28 - 13
Files/Languages/Polish.isl

@@ -1,8 +1,8 @@
-; *** Inno Setup version 6.4.0+ Polish messages ***
+; *** Inno Setup version 6.5.0+ Polish messages ***
+; Proofreading, corrections and 5.5.7-6.5.0+ updates:
+; Łukasz Abramczuk <lukasz.abramczuk at gmail.com>
 ; Original translations up to 5.5.7:
 ; Krzysztof Cynarski <krzysztof at cynarski.net>
-; Proofreading, corrections and 5.5.7-6.4.0+ updates:
-; Łukasz Abramczuk <lukasz.abramczuk at gmail.com>
 ; To download user-contributed translations of this file, go to:
 ;   https://jrsoftware.org/files/istrans/
 ;
@@ -10,11 +10,9 @@
 ; messages that didn't have them already, because on those messages Inno
 ; Setup adds the periods automatically (appending a period would result in
 ; two periods being displayed).
-; last update: 2020/07/26 
+; last update: 2025/06/23 
 
 [LangOptions]
-; The following three entries are very important. Be sure to read and 
-; understand the '[LangOptions] section' topic in the help file.
 LanguageName=Polski
 LanguageID=$0415
 LanguageCodePage=1250
@@ -57,7 +55,7 @@ PowerUserPrivilegesRequired=Aby przeprowadzić instalację tej aplikacji, konto
 SetupAppRunningError=Instalator wykrył, iż aplikacja %1 jest aktualnie uruchomiona.%n%nPrzed wciśnięciem przycisku OK zamknij wszystkie procesy aplikacji. Kliknij przycisk Anuluj, aby przerwać instalację.
 UninstallAppRunningError=Dezinstalator wykrył, iż aplikacja %1 jest aktualnie uruchomiona.%n%nPrzed wciśnięciem przycisku OK zamknij wszystkie procesy aplikacji. Kliknij przycisk Anuluj, aby przerwać dezinstalację.
 
-; *** Startup questions	 ---
+; *** Startup questions
 PrivilegesRequiredOverrideTitle=Wybierz typ instalacji aplikacji
 PrivilegesRequiredOverrideInstruction=Wybierz typ instalacji
 PrivilegesRequiredOverrideText1=Aplikacja %1 może zostać zainstalowana dla wszystkich użytkowników (wymagane są uprawnienia administratora) lub tylko dla bieżącego użytkownika.
@@ -78,7 +76,7 @@ AboutSetupMenuItem=&O instalatorze...
 AboutSetupTitle=O instalatorze
 AboutSetupMessage=%1 wersja %2%n%3%n%n Strona domowa %1:%n%4
 AboutSetupNote=
-TranslatorNote=Wersja polska: Krzysztof Cynarski%n<krzysztof at cynarski.net>%nOd wersji 5.5.7: Łukasz Abramczuk%n<lukasz.abramczuk at gmail.com>
+TranslatorNote=Wersja polska: %nŁukasz Abramczuk <lukasz.abramczuk at gmail.com>%nKrzysztof Cynarski <krzysztof at cynarski.net>
 
 ; *** Buttons
 ButtonBack=< &Wstecz
@@ -205,24 +203,27 @@ ReadyMemoGroup=Folder w Menu Start:
 ReadyMemoTasks=Dodatkowe zadania:
 
 ; *** TDownloadWizardPage wizard page and DownloadTemporaryFile
-DownloadingLabel=Pobieranie dodatkowych plików...
+DownloadingLabel2=Pobieranie plików...
 ButtonStopDownload=&Zatrzymaj pobieranie
 StopDownload=Czy na pewno chcesz zatrzymać pobieranie?
 ErrorDownloadAborted=Pobieranie przerwane
 ErrorDownloadFailed=Błąd pobierania: %1 %2
 ErrorDownloadSizeFailed=Pobieranie informacji o rozmiarze nie powiodło się: %1 %2
-ErrorFileHash1=Błąd sumy kontrolnej pliku: %1
-ErrorFileHash2=Nieprawidłowa suma kontrolna pliku: oczekiwano %1, otrzymano %2
 ErrorProgress=Nieprawidłowy postęp: %1 z %2
 ErrorFileSize=Nieprawidłowy rozmiar pliku: oczekiwano %1, otrzymano %2
 
-; *** TExtractionWizardPage wizard page and Extract7ZipArchive
-ExtractionLabel=Wypakowywanie dodatkowych plików...
+; *** TExtractionWizardPage wizard page and ExtractArchive
+ExtractingLabel=Wypakowywanie plików...
 ButtonStopExtraction=&Zatrzymaj wypakowywanie
 StopExtraction=Azy na pewno chcesz zatrzymać wypakowywanie?
 ErrorExtractionAborted=Wypakowywanie przerwane
 ErrorExtractionFailed=Błąd wypakowywania: %1
 
+; *** Archive extraction failure details
+ArchiveIncorrectPassword=Nieprawidłowe hasło
+ArchiveIsCorrupted=Archiwum jest uszkodzone
+ArchiveUnsupportedFormat=Format archiwum nie jest wspierany
+
 ; *** "Preparing to Install" wizard page
 WizardPreparing=Przygotowanie do instalacji
 PreparingDesc=Instalator przygotowuje instalację aplikacji [name] na komputerze.
@@ -267,11 +268,15 @@ AbortRetryIgnoreSelectAction=Wybierz operację
 AbortRetryIgnoreRetry=Spróbuj &ponownie
 AbortRetryIgnoreIgnore=Z&ignoruj błąd i kontynuuj
 AbortRetryIgnoreCancel=Przerwij instalację
+RetryCancelSelectAction=Wybierz operację
+RetryCancelRetry=Spróbuj &ponownie
+RetryCancelCancel=Anuluj
 
 ; *** Installation status messages
 StatusClosingApplications=Zamykanie aplikacji...
 StatusCreateDirs=Tworzenie folderów...
 StatusExtractFiles=Dekompresja plików...
+StatusDownloadFiles=Pobieranie plików...
 StatusCreateIcons=Tworzenie skrótów aplikacji...
 StatusCreateIniEntries=Tworzenie zapisów w plikach INI...
 StatusCreateRegistryEntries=Tworzenie zapisów w rejestrze...
@@ -301,6 +306,14 @@ FileAbortRetryIgnoreSkipNotRecommended=&Pomiń plik (niezalecane)
 FileAbortRetryIgnoreIgnoreNotRecommended=Z&ignoruj błąd i kontynuuj (niezalecane)
 SourceIsCorrupted=Plik źródłowy jest uszkodzony
 SourceDoesntExist=Plik źródłowy "%1" nie istnieje
+SourceVerificationFailed=Weryfikacja pliku źródłowego nie powiodła się: %1
+VerificationSignatureDoesntExist=Plik podpisu "%1" nie istnieje
+VerificationSignatureInvalid=Plik podpisu "%1" jest nieprawidłowy
+VerificationKeyNotFound=Plik podpisu "%1" wykorzystuje nieznany klucz
+VerificationFileNameIncorrect=Nazwa pliku jest nieprawidłowa
+VerificationFileTagIncorrect=Etykieta pliku jest nieprawidłowa
+VerificationFileSizeIncorrect=Rozmiar pliku jest nieprawidłowy
+VerificationFileHashIncorrect=Suma kontrolna pliku jest nieprawidłowa
 ExistingFileReadOnly2=Istniejący plik nie może zostać zastąpiony, gdyż jest oznaczony jako "Tylko do odczytu".
 ExistingFileReadOnlyRetry=&Usuń atrybut "Tylko do odczytu" i spróbuj ponownie
 ExistingFileReadOnlyKeepExisting=&Zachowaj istniejący plik
@@ -319,6 +332,8 @@ ErrorChangingAttr=Wystąpił błąd podczas próby zmiany atrybutów pliku docel
 ErrorCreatingTemp=Wystąpił błąd podczas próby utworzenia pliku w folderze docelowym:
 ErrorReadingSource=Wystąpił błąd podczas próby odczytu pliku źródłowego:
 ErrorCopying=Wystąpił błąd podczas próby kopiowania pliku:
+ErrorDownloading=Wystąpił błąd podczas próby pobrania pliku:
+ErrorExtracting=Wystąpił błąd podczas próby wypakowywania archiwum:
 ErrorReplacingExistingFile=Wystąpił błąd podczas próby zamiany istniejącego pliku:
 ErrorRestartReplace=Próba zastąpienia plików przy ponownym uruchomieniu komputera nie powiodła się.
 ErrorRenamingTemp=Wystąpił błąd podczas próby zmiany nazwy pliku w folderze docelowym:

+ 1 - 1
Files/Languages/Slovenian.isl

@@ -1,4 +1,4 @@
-; *** Inno Setup version 6.4.0+ Slovenian messages ***
+; *** Inno Setup version 6.5.0+ Slovenian messages ***
 ;
 ; To download user-contributed translations of this file, go to:
 ;   http://www.jrsoftware.org/is3rdparty.php

+ 3 - 2
Files/is7z.dll.issig

@@ -2,6 +2,7 @@ format issig-v2
 file-name "is7z.dll"
 file-size 992912
 file-hash 74081e3749ab6f833618c4a9efbb75537a4e68e6e0579a7b43270a38224dcb66
+file-tag ""
 key-id def0147c3bbc17ab99bf7b7a9c2de1390283f38972152418d7c2a4a7d7131a38
-sig-r 8a2fc6735ee531c609e8a42a6066082964146303014e2fb531f9ef7be4cbc7cd
-sig-s 18d2b1a76ac430bda8b45d3430084df49776ad572cc884ca041e0d8cf26276c6
+sig-r 40054b783763d5bbb8d7534e5003d7bf5b48614b4898434d6d47746ed0df331e
+sig-s 721deb874c67378e0d700f81e4a35bdb2d179c706965ca132c6647235c0ccb94

+ 3 - 2
Files/is7zxa.dll.issig

@@ -2,6 +2,7 @@ format issig-v2
 file-name "is7zxa.dll"
 file-size 256656
 file-hash 930152b344518fe0a15592269d432c4433b675bbb898213b6c13d8e526d51edd
+file-tag ""
 key-id def0147c3bbc17ab99bf7b7a9c2de1390283f38972152418d7c2a4a7d7131a38
-sig-r bbfca4a72f28d37760e75e270e6f3019dc2702e665d97584b0afcd0b76b8ad60
-sig-s a7b5be3e031dd78e3ce7f90630ebf51fb6e27e4b47ac564db9dc818827f3023d
+sig-r 206682fe23fb5427d450483a36e8c805af1f6d1cfee7cb97986613b4eddb8ad3
+sig-s 801ddcfcd1899d5be2cf1a5363a4c0e9a6eb013cec9de98721050baf671f9fe8

+ 3 - 2
Files/is7zxr.dll.issig

@@ -2,6 +2,7 @@ format issig-v2
 file-name "is7zxr.dll"
 file-size 208016
 file-hash a73acb58b85cce5cb686df5409eb18643797c44ed1820a32d092b20146ad1f6c
+file-tag ""
 key-id def0147c3bbc17ab99bf7b7a9c2de1390283f38972152418d7c2a4a7d7131a38
-sig-r 1d0a3c4b863b4290c60b4af709909e0f4c8a109096c315ce5062d050e0c254fc
-sig-s 672acfb5b9a826c50e39a1607dc0c04647aaef75e9ee93113839fd179f64d009
+sig-r f26fdaace9ccda59ab06fa4487889e495704781b82f164d80ed435d64568366d
+sig-s cd1bc85cd709c8887c3c4e537da80895b982dca2bf8ede3e30c2a4f8fc7b49c3

+ 3 - 2
Files/isbunzip.dll.issig

@@ -2,6 +2,7 @@ format issig-v2
 file-name "isbunzip.dll"
 file-size 35616
 file-hash 31d04c1e4bfdfa34704c142fa98f80c0a3076e4b312d6ada57c4be9d9c7dcf26
+file-tag ""
 key-id def0147c3bbc17ab99bf7b7a9c2de1390283f38972152418d7c2a4a7d7131a38
-sig-r 6c4817d6d038737484fb61c62f8b7c7d6aa6beeb5670c11b5f8d6ae42dd6b4cf
-sig-s c62ef533b240cdba85350f01f9369e7cebfc8b30e2d83e15d2fef9302ba4861b
+sig-r c8484eb8243dbe175bbdc8cdc24b4db1fc57d5a773447d615b715860825fd07a
+sig-s 22fb16e9f29f6060ddfe0c6356dbc0656b78c81d7f92eac943a50a09262d95aa

+ 3 - 2
Files/isbzip.dll.issig

@@ -2,6 +2,7 @@ format issig-v2
 file-name "isbzip.dll"
 file-size 39200
 file-hash 8072e83385afc4a84006271a87a11fc0a22b149cbd77322669ca56c470d28ced
+file-tag ""
 key-id def0147c3bbc17ab99bf7b7a9c2de1390283f38972152418d7c2a4a7d7131a38
-sig-r 7d093d4fce5875c77a9ce077596c26bd1a06ff15f2795c59c0ccb2403f1081f9
-sig-s b1f7738c3e21f627748185d59132e926bb1519940249bb579c316449aefbcb89
+sig-r de7a5822a1a55de4f573805afd57b1993ac58c5058c63a69ed4ab70c2c199c70
+sig-s 93655f90f7435ec0ec772cea9ac73a0dbf7e842107bb610e6107086578fc3f4c

+ 3 - 2
Files/islzma.dll.issig

@@ -2,6 +2,7 @@ format issig-v2
 file-name "islzma.dll"
 file-size 135816
 file-hash b252471e95f0853902b15ae71a90574f9b168f8d4a0c474b20537511f90220a5
+file-tag ""
 key-id def0147c3bbc17ab99bf7b7a9c2de1390283f38972152418d7c2a4a7d7131a38
-sig-r e9202d1a1e43b43b44bf6187c0709b8ca461934499941e147f24f6b123ac9b62
-sig-s baa08eede390e0c152dd1b238b74aa91e057cad50be7a2eab76721d0c658c9b0
+sig-r fb93b45c8a032554fc65903776ab7783f95fe3c3603524c61163bae253958de4
+sig-s fdf1ed2c94a64b415896d28ac6e8b41a9a0cb16cc8d372e1d7be76445b5bc600

+ 3 - 2
Files/islzma32.exe.issig

@@ -2,6 +2,7 @@ format issig-v2
 file-name "islzma32.exe"
 file-size 199304
 file-hash 5665e03297af04d4f90423b56e8b016b2924d91ba781573036b710044e843f0a
+file-tag ""
 key-id def0147c3bbc17ab99bf7b7a9c2de1390283f38972152418d7c2a4a7d7131a38
-sig-r 6c4aec258115243eacd7db49103ce1772c489cf7bc4c9931f095745203387f61
-sig-s 37e3f126dece0547de4f0cc810b5a84984fbd325a6a030e911d1c1eff6c6ed03
+sig-r a47b07dfa78c7845821a5c4122cb177d7c0e4e4ace9fe8d53564b7756ecbc598
+sig-s 0674b22927c82a6386d2eef2da7d20df12bed627dce36021ff5e6cf2933566da

+ 3 - 2
Files/islzma64.exe.issig

@@ -2,6 +2,7 @@ format issig-v2
 file-name "islzma64.exe"
 file-size 230536
 file-hash b0ad1857da7fb94b54988c7633578dc057b51cf921b94f6f2f7b57a113310712
+file-tag ""
 key-id def0147c3bbc17ab99bf7b7a9c2de1390283f38972152418d7c2a4a7d7131a38
-sig-r 6ffd0494e423b05ca1358fa9717591ce43ce4d43467d6ca0cc581fde426cef15
-sig-s 26e70aaa5db22b8d7261a837405dc61083593dfb864ccef0bd0eac3223abeb60
+sig-r 299c59b267ab06a38beb9ab28e0cfc001914bcf68495611fae73b06259981192
+sig-s 8cecbd5dcc971b603c56b937cf35859c0669883a417776c8bf5cbeacb4f70e3a

+ 3 - 2
Files/isscint.dll.issig

@@ -2,6 +2,7 @@ format issig-v2
 file-name "isscint.dll"
 file-size 809616
 file-hash 1a837b73d60a4d98060e8129a8da0b27e25445a2ee8f03b0118b0ec6213172b5
+file-tag ""
 key-id def0147c3bbc17ab99bf7b7a9c2de1390283f38972152418d7c2a4a7d7131a38
-sig-r 4f4093af223ba477bd768ba65b61017f009f1f20bf9fceccae358d5e5675ced0
-sig-s 0d5b283181342e44d49c0363706355432526400211585d69ea3b14d743b26efd
+sig-r 30a54774e3d7773970349a0e9b54a124268b07780881a6f03274017c04c32e17
+sig-s f81d47fbc2472ee2e4e70cafba078093430e7c7226d357a335ccce002cb1d6bf

+ 3 - 2
Files/isunzlib.dll.issig

@@ -2,6 +2,7 @@ format issig-v2
 file-name "isunzlib.dll"
 file-size 29472
 file-hash 8287d0e287a66ee78537c8d1d98e426562b95c50f569b92cea9ce36a9fa57e64
+file-tag ""
 key-id def0147c3bbc17ab99bf7b7a9c2de1390283f38972152418d7c2a4a7d7131a38
-sig-r bef7420079e4b440739822dcc03031489e90e017ca17763627b75a3639910610
-sig-s e835d7ea5bc6fa9b0ef55377f01d276040b78708206bf875c6f7ed69f5ca2139
+sig-r 38b503247b387939c50c45e4a84f9abcc6e1486b48a9166edd28652faced77fd
+sig-s 0eeee06d93c4bc69ecd88f9a058630007703ea285a36444a57056f3f532cb872

+ 3 - 2
Files/iszlib.dll.issig

@@ -2,6 +2,7 @@ format issig-v2
 file-name "iszlib.dll"
 file-size 34592
 file-hash 14c0d4a2a41572384f8309cdf03de5c6e7ed46bef64cce70d989b2665eff1a47
+file-tag ""
 key-id def0147c3bbc17ab99bf7b7a9c2de1390283f38972152418d7c2a4a7d7131a38
-sig-r 590d17da6ab0782ce599550c483446fdd5bae5eb16dd8bd912d4ce61ef8b4a3e
-sig-s c745f5d6cb756f02ecac092cd48bff47a79b37c2bd05de292dd592642ac76a7e
+sig-r d31c63bffb15dc179f8c589cf956a08967e312f58f268dea451ff8dcc609c108
+sig-s 63aff5169ca160ac3af6fe4b1ab6b03897cc3072dc9ab4f460592c92c106ddfa

+ 4 - 0
ISHelp/isetup.xml

@@ -3836,6 +3836,10 @@ issigtool verify "MyFile.txt"
 <td>Specifies the private key filename required for signing. This option overrides the <tt>ISSIGTOOL_KEY_FILE</tt> environment variable which can also be used.</td>
 </tr>
 <tr>
+<td>--allow-overwrite, -o</td>
+<td>Allow to overwrite existing files.</td>
+</tr>
+<tr>
 <td>--quiet, -q</td>
 <td>Suppresses status messages that are normally printed to standard output.</td>
 </tr>

+ 1 - 3
Projects/Bin/Debug.iss

@@ -15,9 +15,7 @@ AppName=ɯɐɹƃoɹd ʎɯ
 AppVerName=My Program version 1.5
 DefaultDirName={autopf}\My Program
 AppVersion=1.2.3
-; The following four lines make the output debuggable from the Setup project
-; If you put them in any example script you can debug that example as well
-UseSetupLdr=0
+UseSetupLdr=no
 OutputDir={#CompilerPath}
 OutputBaseFilename=Setup
 PrivilegesRequired=lowest

+ 1 - 1
Projects/Bin/LzmaSpeedTest.iss

@@ -5,7 +5,7 @@ AppName=My Program
 AppVerName=My Program version 1.5
 #define DefaultDirName "{autopf}\My Program"
 DefaultDirName={#DefaultDirName}
-UseSetupLdr=0
+UseSetupLdr=no
 OutputDir=.
 AppVersion=1.2.3
 OutputBaseFilename=Setup

+ 12 - 8
Projects/ISSigTool.dpr

@@ -34,7 +34,7 @@ uses
 var
   Options: record
     KeyFile: String;
-    Quiet: Boolean;
+    AllowOverwrite, Quiet: Boolean;
   end;
 
   StdOutHandle, StdErrHandle: THandle;
@@ -122,8 +122,6 @@ end;
 
 procedure CommandExportPublicKey(const AFilename: String);
 begin
-  PrintFmtUnlessQuiet('%s: ', [AFilename], False);
-
   const Key = TECDSAKey.Create;
   try
     ImportKey(Key, False);
@@ -132,14 +130,17 @@ begin
     ISSigExportPublicKeyText(Key, PublicKeyText);
 
     if NewFileExists(AFilename) then begin
-      const ExistingPublicKeyText = ISSigLoadTextFromFile(AFilename);
-      if ExistingPublicKeyText = PublicKeyText then begin
+      const ExistingText = ISSigLoadTextFromFile(AFilename);
+      if ExistingText = PublicKeyText then begin
+        PrintFmtUnlessQuiet('%s: ', [AFilename], False);
         PrintUnlessQuiet('public key unchanged');
         Exit;
-      end;
+      end else if not Options.AllowOverwrite then
+        RaiseFatalError('File already exists');
     end;
 
     ISSigSaveTextToFile(AFilename, PublicKeyText);
+    PrintFmtUnlessQuiet('%s: ', [AFilename], False);
     PrintUnlessQuiet('public key written');
   finally
     Key.Free;
@@ -148,8 +149,8 @@ end;
 
 procedure CommandGeneratePrivateKey;
 begin
-  if NewFileExists(Options.KeyFile) then
-    RaiseFatalError('Key file already exists');
+  if not Options.AllowOverwrite and NewFileExists(Options.KeyFile) then
+    RaiseFatalError('File already exists');
 
   PrintFmtUnlessQuiet('%s: ', [Options.KeyFile], False);
 
@@ -302,6 +303,7 @@ begin
   PrintErrOutput('or to generate a new private key:  issigtool [options] generate-private-key');
   PrintErrOutput('Options:');
   PrintErrOutput('  --key-file=<filename> Specifies the private key filename (overrides ISSIGTOOL_KEY_FILE environment variable)');
+  PrintErrOutput('  --allow-overwrite, -o Allow to overwrite existing files');
   PrintErrOutput('  --quiet, -q           Suppresses status messages that are normally printed to standard output');
   PrintErrOutput('  --help, -?            Prints this information');
   PrintErrOutput('');
@@ -324,6 +326,8 @@ begin
           if InitialArgListCount <> 1 then
             RaiseFatalErrorFmt('"%s" option cannot be combined with other arguments', [S]);
           Exit;
+        end else if (S = '--allow-overwrite') or (S = '-o') then begin
+          Options.AllowOverwrite := True;
         end else if (S = '--quiet') or (S = '-q') then begin
           Options.Quiet := True;
         end else if S.StartsWith('--key-file=') then begin

+ 3 - 2
Projects/Src/Compression.LZMA1SmallDecompressor/LzmaDecode/LzmaDecodeInno.obj.issig

@@ -2,6 +2,7 @@ format issig-v2
 file-name "LzmaDecodeInno.obj"
 file-size 8111
 file-hash 25a946de5cd685e1b010293665ee04eaa24ac9a345a31afaa82217e273459b2c
+file-tag ""
 key-id def0147c3bbc17ab99bf7b7a9c2de1390283f38972152418d7c2a4a7d7131a38
-sig-r f6485228a0d808247279e2a353749a009fe9fb8db1bb317d4fee446fb8c59528
-sig-s 360700779e90850e42d67d0962cc8ff6debbd532f7eec8003cb20fcf0c823b51
+sig-r 1a77103c322f9f685e91939ae2ca044dd8bff48c03d21fb5c31168f21690717b
+sig-s e31ebb23dc8ede2802fa649f634f9fe625bae2a4fb5a741b5375ed13f7cda3ca

+ 3 - 2
Projects/Src/Compression.LZMADecompressor/Lzma2Decode/ISLzmaDec.obj.issig

@@ -2,6 +2,7 @@ format issig-v2
 file-name "ISLzmaDec.obj"
 file-size 21751
 file-hash 79bb11fbe0b862b6a42af2db4664748daa54347d56b3c40998dcb860111195ac
+file-tag ""
 key-id def0147c3bbc17ab99bf7b7a9c2de1390283f38972152418d7c2a4a7d7131a38
-sig-r d183a61aaf8de0b72176e9dd613cc568371866be46683d0b47953794879c6db2
-sig-s ae48b841c532c852fc985d9fe95ae030fe4220735c53eb8d7d9374922a364636
+sig-r 5653a50fed00f5783a88a9b6bc9ada2bd9a74f0dd7ee1ccd61e58724d8d61ec8
+sig-s 8a4c67e578e990061a56abbaf03e39464c44494a136eb2899f430d944eeeb0ee

+ 7 - 7
Projects/Src/Compression.SevenZipDecoder/7zDecode/IS7zDec.c

@@ -7,7 +7,7 @@
 
 #include "../../../../Components/Lzma2/Util/7z/Precomp.h" /* Says it must be included first */
 
-/* Stop 7-Zip from directly creating files and directories. This will enable us to perform
+/* Stop 7-Zip from directly opening files and directories. This will enable us to perform
    extra checks from a cdecl implementation in Delphi. */
 
 #include "../../../../Components/Lzma2/7zWindows.h"
@@ -21,6 +21,12 @@ HANDLE _CreateFileA(LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode,
 HANDLE _CreateFileW(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile);
 #define CreateFileW _CreateFileW
 
+DWORD _GetFileAttributesW(LPCWSTR lpFileName);
+#define GetFileAttributesW _GetFileAttributesW
+
+BOOL _SetFileAttributesW(LPCWSTR lpFileName, DWORD dwFileAttributes);
+#define SetFileAttributesW _SetFileAttributesW
+
 #ifdef _MSC_VER
 
 /* MSVC only:
@@ -39,12 +45,6 @@ DWORD _GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh);
 BOOL _ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped);
 #define ReadFile _ReadFile
 
-DWORD _GetFileAttributesW(LPCWSTR lpFileName);
-#define GetFileAttributesW _GetFileAttributesW
-
-BOOL _SetFileAttributesW(LPCWSTR lpFileName, DWORD dwFileAttributes);
-#define SetFileAttributesW _SetFileAttributesW
-
 DWORD _SetFilePointer(HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod);
 #define SetFilePointer _SetFilePointer
 

+ 3 - 2
Projects/Src/Compression.SevenZipDecoder/7zDecode/IS7zDec.obj.issig

@@ -2,6 +2,7 @@ format issig-v2
 file-name "IS7zDec.obj"
 file-size 93886
 file-hash 43ef412680232ecf42556737b7ea1c341f8134e64bf0b36932458e97d569d7c5
+file-tag ""
 key-id def0147c3bbc17ab99bf7b7a9c2de1390283f38972152418d7c2a4a7d7131a38
-sig-r b3ecb3cf5bbf3c5feded032817f2821df7d845b690f67572584342f9c4f7ab95
-sig-s bd4b2d56fe4133866bc3466acd533eb6972cee09553963a0a35f2e630d389704
+sig-r 46004c60d2d7e59202b263a1798b429523898152c2b0543513efc98cb82539c7
+sig-s 41cee9e379f13152982b0d0c4a6e70751db45953c0065bca97d11c092e50c6dd

+ 3 - 2
Projects/Src/Setup.HelperEXEs.res.issig

@@ -2,6 +2,7 @@ format issig-v2
 file-name "Setup.HelperEXEs.res"
 file-size 6240
 file-hash 0c384c152e4686c6a6a1dbdb1376f9076baa13ad7d6db9891745187f8212f393
+file-tag ""
 key-id def0147c3bbc17ab99bf7b7a9c2de1390283f38972152418d7c2a4a7d7131a38
-sig-r 0c69711682123f852b3690a952743f283386d3f79f8a8131193acddb054eff14
-sig-s 425cbce2b075dc68d91b51b180fe3dfdce5d8e42d803968005b9be57cecdaa11
+sig-r 93be1ec6ebd074680006fee978f498e4f13c566b647dbbef423dbda8827b3693
+sig-s 76afb50649b52ed5ce3200c56909b3f2f905473d781fc3f3f461775f43700cad

+ 17 - 21
Projects/Src/Setup.WizardForm.pas

@@ -1823,6 +1823,17 @@ end;
 
 function TWizardForm.PrepareToInstall(const WizardComponents, WizardTasks: TStringList): String;
 
+  procedure ShowPreparing;
+  begin
+    SetCurPage(wpPreparing);
+    BackButton.Visible := False;
+    NextButton.Visible := False;
+    CancelButton.Enabled := False;
+    if InstallMode = imSilent then
+      WizardForm.Visible := True;
+    WizardForm.Update;
+  end;
+
   function GetClearedDownloadArchivesPage: TDownloadWizardPage;
   begin
     if FDownloadArchivesPage = nil then begin
@@ -1894,6 +1905,7 @@ function TWizardForm.PrepareToInstall(const WizardComponents, WizardTasks: TStri
     end;
 
     if DownloadPage <> nil then begin
+      ShowPreparing;
       DownloadPage.Show;
       try
         var Failed, LastBaseNameOrUrl: String;
@@ -1928,21 +1940,11 @@ function TWizardForm.PrepareToInstall(const WizardComponents, WizardTasks: TStri
           raise Exception.Create(Failed);
       finally
         DownloadPage.Hide;
+        UpdateCurPageButtonState;
       end;
     end;
   end;
 
-  procedure ShowPreparing;
-  begin
-    SetCurPage(wpPreparing);
-    BackButton.Visible := False;
-    NextButton.Visible := False;
-    CancelButton.Enabled := False;
-    if InstallMode = imSilent then
-      WizardForm.Visible := True;
-    WizardForm.Update;
-  end;
-
 var
   CodeNeedsRestart: Boolean;
   Y: Integer;
@@ -1956,12 +1958,7 @@ begin
   PreparingMemo.Visible := False;
 
   try
-    ShowPreparing;
-    try
-      DownloadArchivesToExtract(WizardComponents, WizardTasks);
-    finally
-      UpdateCurPageButtonState;
-    end;
+    DownloadArchivesToExtract(WizardComponents, WizardTasks);
   except
     Result := GetExceptMessage;
   end;
@@ -2319,10 +2316,9 @@ end;
 
 procedure TWizardForm.SetCurPage(const NewPageID: Integer);
 { Changes which page is currently visible }
-var
-  Page: TWizardPage;
 begin
-  Page := PageFromID(NewPageID);
+  const OldCurPageID = CurPageID;
+  const Page = PageFromID(NewPageID);
   FCurPageID := NewPageID;
 
   { Select the page in the notebooks }
@@ -2373,7 +2369,7 @@ begin
   end;
 
   try
-    if CodeRunner <> nil then
+    if (CodeRunner <> nil) and (CurPageID <> OldCurPageID) then
       CodeRunner.RunProcedures('CurPageChanged', [CurPageID], False);
   except
     Application.HandleException(Self);

+ 5 - 5
issig.bat

@@ -6,12 +6,12 @@ rem  Portions by Martijn Laan
 rem  For conditions of distribution and use, see LICENSE.TXT.
 rem
 rem  Batch file to embed the user's public key from compilesettings.bat in
-rem  TrustFunc.AllowedPublicKeys.inc and setup.allowedpublickeys.iss (before
-rem  compilation) or to sign files using it (after compilation)
-rem
-rem  If the key is missing it will be generated
+rem  TrustFunc.AllowedPublicKeys.inc and to export it as def02.ispublickey
+rem  (before compilation) or to sign files using it (after compilation)
 rem
 rem  Also used by build(-ce).bat to verify some precompiled files
+rem
+rem  If the user's private key is missing it will be generated
 
 setlocal
 
@@ -49,7 +49,7 @@ if not "%1"=="" goto failed
 
 :embed
 set publickeyfile=def02.ispublickey
-Files\ISSigTool.exe export-public-key "%publickeyfile%"
+Files\ISSigTool.exe --allow-overwrite export-public-key "%publickeyfile%"
 if errorlevel 1 goto failed
 if not exist "%publickeyfile%" goto failed
 set targetfile=Components\TrustFunc.AllowedPublicKeys.inc

+ 2 - 1
whatsnew.htm

@@ -217,10 +217,11 @@ Source: "https://jrsoftware.org/download.php/iscrypt.dll?dontcount=1"; DestName:
     <ul>
       <li>Added new <tt>LastBaseNameOrUrl</tt> property to support class <tt>TDownloadWizardPage</tt>. See updated example script <i>CodeDownloadFiles.iss</i> for an example.</li>
       <li>Added new <tt>GetSHA256OfStream</tt> support function.</li>
+      <li><i>Fix:</i> Event function <tt>CurPageChanged</tt> is now always only triggered when the current page actually changes. Before it was called twice in a row for <tt>wpPreparing</tt> when the script had a <tt>PrepareToInstall</tt> event function which returned a non empty string to instruct Setup to stop.</li>
     </ul>
   </li>
   <li>Inno Setup 6.4.3 increased the maximum width of all task dialogs by about 50%, which helps to keep long paths from being truncated with ellipses. It now only does this if the task dialog's content actually contains a path.</li>
-  <li>All translations which still had an UTF-8 BOM had their BOM removed. Using a BOM in UTF-8 encoded files is not needed and not recommended since Inno Setup 6.3.0.</li>
+  <li>All official translations which still had an UTF-8 BOM had their BOM removed. Using a BOM in UTF-8 encoded files is not needed and not recommended since Inno Setup 6.3.0.</li>
   <li>Inno Setup is now built using Delphi 12.3 Athens instead of Delphi 12.1 Athens. Thanks to Ian Barker from Embarcadero for providing us with a license!</li>
   <li>Documentation improvements.</li>
   <li>Minor tweaks.</li>