The default is 'magic', the historical behaviour of setup. --- main.cc | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+)
diff --git a/main.cc b/main.cc index b3854a8..d4ec0d2 100644 --- a/main.cc +++ b/main.cc @@ -63,6 +63,7 @@ #include "getopt++/GetOption.h" #include "getopt++/BoolOption.h" #include "getopt++/StringOption.h" +#include "mklink2.h" #include "Exception.h" #include <stdexcept> @@ -95,6 +96,8 @@ static BoolOption HelpOption (false, 'h', "help", "Print help"); static BoolOption VersionOption (false, 'V', "version", "Show version"); static StringOption SetupBaseNameOpt ("setup", 'i', "ini-basename", "Use a different basename, e.g. \"foo\", instead of \"setup\"", false); BoolOption UnsupportedOption (false, '\0', "allow-unsupported-windows", "Allow old, unsupported Windows versions"); +static StringOption SymlinkTypeOption ("magic", '\0', "symlink-type", "Symlink type (magic, shortcut, native, wsl)", false); + std::string SetupBaseName; static void inline @@ -258,6 +261,32 @@ WinMain (HINSTANCE h, exit (1); } + if (((std::string)SymlinkTypeOption).size()) + { + if (((std::string)SymlinkTypeOption).compare("wsl") == 0) + { + VersionInfo v = GetVer(); + if ((v.major() < 10) || + ((v.major() == 10) && (v.buildNumber() < 14393))) + { + fprintf (stderr, "*** --symlink-type wsl requires Windows 10 1607 or later\n"); + exit(1); + } + else + symlinkType = SymlinkTypeWsl; + } + else if (((std::string)SymlinkTypeOption).compare("magic") == 0) + symlinkType = SymlinkTypeMagic; + else + { + char buff[80 + ((std::string)SymlinkTypeOption).size()]; + sprintf (buff, "Invalid choice for --symlink-type option: \"%s\"", + ((std::string)SymlinkTypeOption).c_str()); + fprintf (stderr, "*** %s\n", buff); + exit(1); + } + } + unattended_mode = PackageManagerOption ? chooseronly : (UnattendedOption ? unattended : attended); -- 2.31.1