From e4b448d9b79d35e1a759a7b6088101e90d668169 Mon Sep 17 00:00:00 2001 From: Daniel Scharrer Date: Thu, 30 May 2019 22:58:14 +0200 Subject: [PATCH] Add experimental support for Inno Setup <1.2.10 This is based entirely on the Inno Setup 1.2 changelog: http://www.jrsoftware.org/files/is1.2-whatsnew.htm No versions were tested due to lack of available installers. --- src/setup/file.cpp | 8 ++++++-- src/setup/header.cpp | 8 ++++++-- src/setup/registry.cpp | 4 +++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/setup/file.cpp b/src/setup/file.cpp index 604bc98..4bee001 100644 --- a/src/setup/file.cpp +++ b/src/setup/file.cpp @@ -130,8 +130,12 @@ void file_entry::load(std::istream & is, const version & version) { } flagreader.add(CompareTimeStamp); flagreader.add(FontIsNotTrueType); - flagreader.add(SkipIfSourceDoesntExist); - flagreader.add(OverwriteReadOnly); + if(version >= INNO_VERSION(1, 2, 5)) { + flagreader.add(SkipIfSourceDoesntExist); + } + if(version >= INNO_VERSION(1, 2, 6)) { + flagreader.add(OverwriteReadOnly); + } if(version >= INNO_VERSION(1, 3, 21)) { flagreader.add(OverwriteSameVersion); flagreader.add(CustomDestName); diff --git a/src/setup/header.cpp b/src/setup/header.cpp index d3606e4..1c5bf8c 100644 --- a/src/setup/header.cpp +++ b/src/setup/header.cpp @@ -525,8 +525,12 @@ void header::load(std::istream & is, const version & version) { flagreader.add(DisableAppendDir); } flagreader.add(Password); - flagreader.add(AllowRootDirectory); - flagreader.add(DisableFinishedPage); + if(version >= INNO_VERSION(1, 2, 6)) { + flagreader.add(AllowRootDirectory); + } + if(version >= INNO_VERSION(1, 2, 14)) { + flagreader.add(DisableFinishedPage); + } if(version.bits() != 16) { if(version < INNO_VERSION(3, 0, 4)) { flagreader.add(AdminPrivilegesRequired); diff --git a/src/setup/registry.cpp b/src/setup/registry.cpp index c89e644..7d1f88e 100644 --- a/src/setup/registry.cpp +++ b/src/setup/registry.cpp @@ -111,7 +111,9 @@ void registry_entry::load(std::istream & is, const version & version) { flagreader.add(UninsClearValue); flagreader.add(UninsDeleteEntireKey); flagreader.add(UninsDeleteEntireKeyIfEmpty); - flagreader.add(PreserveStringType); + if(version >= INNO_VERSION(1, 2, 6)) { + flagreader.add(PreserveStringType); + } if(version >= INNO_VERSION(1, 3, 9)) { flagreader.add(DeleteKey); flagreader.add(DeleteValue);