From 8968d0fd0c5f5cc4d5afae50991bad69372f3b4e Mon Sep 17 00:00:00 2001 From: Simone Date: Sun, 3 May 2026 01:38:45 +0200 Subject: [PATCH] feat(25.01): add bundle wrapper directory with NSIS sources and vendor symlinks Mirror the 26.00-bundle / 26.01-bundle approach for 25.01: - versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/: project-owned NSIS plugin wrapper sources (api.h, nsis7z.cpp, pluginapi.*, resource.*, StdAfx*, Nsis7z.sln, Nsis7z.vcxproj, Nsis7z.vcxproj.filters, Nsis7z_vs2026.vcxproj). - versions/25.01-bundle/CPP/7zip/UI/NSIS/: NSIS UI sources; StdAfx.h patched to use relative include path and MinGW-compatible Windows.h guard (the upstream 25.01 file used an absolute path incompatible with the bundle layout). - versions/25.01-bundle/CPP/7zip/LzmaDec_gcc.mak: forwarding stub. - versions/25.01-bundle/{C,Asm} and CPP sub-trees: symlinks into versions/25.01/. - tools/linux/setup_25_01_bundle_symlinks.py: idempotent symlink-recreation script. --- tools/linux/setup_25_01_bundle_symlinks.py | 48 + versions/25.01-bundle/Asm | 1 + versions/25.01-bundle/C | 1 + versions/25.01-bundle/CPP/7zip/7zip.mak | 1 + versions/25.01-bundle/CPP/7zip/7zip_gcc.mak | 1 + versions/25.01-bundle/CPP/7zip/Aes.mak | 1 + versions/25.01-bundle/CPP/7zip/Archive | 1 + versions/25.01-bundle/CPP/7zip/Asm.mak | 1 + .../CPP/7zip/Bundles/Nsis7z/Nsis7z.sln | 44 + .../CPP/7zip/Bundles/Nsis7z/Nsis7z.vcxproj | 929 +++++++++++++ .../Bundles/Nsis7z/Nsis7z.vcxproj.filters | 1155 +++++++++++++++++ .../7zip/Bundles/Nsis7z/Nsis7z_vs2026.vcxproj | 929 +++++++++++++ .../CPP/7zip/Bundles/Nsis7z/StdAfx.h | 13 + .../CPP/7zip/Bundles/Nsis7z/StdAfx2.cpp | 3 + .../CPP/7zip/Bundles/Nsis7z/afxres.h | 1 + .../CPP/7zip/Bundles/Nsis7z/api.h | 83 ++ .../CPP/7zip/Bundles/Nsis7z/nsis7z.cpp | 190 +++ .../CPP/7zip/Bundles/Nsis7z/nsis_tchar.h | 229 ++++ .../CPP/7zip/Bundles/Nsis7z/pluginapi.cpp | 292 +++++ .../CPP/7zip/Bundles/Nsis7z/pluginapi.h | 115 ++ .../CPP/7zip/Bundles/Nsis7z/resource.h | 19 + .../CPP/7zip/Bundles/Nsis7z/resource.rc | 99 ++ versions/25.01-bundle/CPP/7zip/Common | 1 + versions/25.01-bundle/CPP/7zip/Compress | 1 + versions/25.01-bundle/CPP/7zip/Crc.mak | 1 + versions/25.01-bundle/CPP/7zip/Crc64.mak | 1 + versions/25.01-bundle/CPP/7zip/Crypto | 1 + versions/25.01-bundle/CPP/7zip/GuiCommon.rc | 1 + versions/25.01-bundle/CPP/7zip/Guid.txt | 1 + versions/25.01-bundle/CPP/7zip/ICoder.h | 1 + versions/25.01-bundle/CPP/7zip/IDecl.h | 1 + versions/25.01-bundle/CPP/7zip/IPassword.h | 1 + versions/25.01-bundle/CPP/7zip/IProgress.h | 1 + versions/25.01-bundle/CPP/7zip/IStream.h | 1 + versions/25.01-bundle/CPP/7zip/LzFindOpt.mak | 1 + versions/25.01-bundle/CPP/7zip/LzmaDec.mak | 1 + .../25.01-bundle/CPP/7zip/LzmaDec_gcc.mak | 4 + versions/25.01-bundle/CPP/7zip/MyVersion.h | 1 + .../25.01-bundle/CPP/7zip/MyVersionInfo.rc | 1 + versions/25.01-bundle/CPP/7zip/PropID.h | 1 + versions/25.01-bundle/CPP/7zip/Sha1.mak | 1 + versions/25.01-bundle/CPP/7zip/Sha256.mak | 1 + versions/25.01-bundle/CPP/7zip/Sort.mak | 1 + versions/25.01-bundle/CPP/7zip/SubBuild.mak | 1 + versions/25.01-bundle/CPP/7zip/UI/Agent | 1 + versions/25.01-bundle/CPP/7zip/UI/Client7z | 1 + versions/25.01-bundle/CPP/7zip/UI/Common | 1 + versions/25.01-bundle/CPP/7zip/UI/Console | 1 + versions/25.01-bundle/CPP/7zip/UI/Explorer | 1 + versions/25.01-bundle/CPP/7zip/UI/Far | 1 + versions/25.01-bundle/CPP/7zip/UI/FileManager | 1 + versions/25.01-bundle/CPP/7zip/UI/GUI | 1 + .../7zip/UI/NSIS/ExtractCallbackConsole.cpp | 163 +++ .../CPP/7zip/UI/NSIS/ExtractCallbackConsole.h | 98 ++ .../25.01-bundle/CPP/7zip/UI/NSIS/Main.cpp | 313 +++++ .../25.01-bundle/CPP/7zip/UI/NSIS/MainAr.cpp | 109 ++ .../CPP/7zip/UI/NSIS/NSISBreak.cpp | 31 + .../25.01-bundle/CPP/7zip/UI/NSIS/NSISBreak.h | 16 + .../25.01-bundle/CPP/7zip/UI/NSIS/StdAfx.h | 15 + .../CPP/7zip/UI/NSIS/UserInputUtils2.cpp | 60 + .../CPP/7zip/UI/NSIS/UserInputUtils2.h | 24 + versions/25.01-bundle/CPP/7zip/UI/makefile | 1 + versions/25.01-bundle/CPP/7zip/cmpl_clang.mak | 1 + .../CPP/7zip/cmpl_clang_arm64.mak | 1 + .../25.01-bundle/CPP/7zip/cmpl_clang_x64.mak | 1 + .../25.01-bundle/CPP/7zip/cmpl_clang_x86.mak | 1 + versions/25.01-bundle/CPP/7zip/cmpl_gcc.mak | 1 + .../25.01-bundle/CPP/7zip/cmpl_gcc_arm.mak | 1 + .../25.01-bundle/CPP/7zip/cmpl_gcc_arm64.mak | 1 + .../25.01-bundle/CPP/7zip/cmpl_gcc_x64.mak | 1 + .../25.01-bundle/CPP/7zip/cmpl_gcc_x86.mak | 1 + .../25.01-bundle/CPP/7zip/cmpl_mac_arm64.mak | 1 + .../25.01-bundle/CPP/7zip/cmpl_mac_x64.mak | 1 + versions/25.01-bundle/CPP/7zip/makefile | 1 + versions/25.01-bundle/CPP/7zip/var_clang.mak | 1 + .../25.01-bundle/CPP/7zip/var_clang_arm64.mak | 1 + .../25.01-bundle/CPP/7zip/var_clang_x64.mak | 1 + .../25.01-bundle/CPP/7zip/var_clang_x86.mak | 1 + versions/25.01-bundle/CPP/7zip/var_gcc.mak | 1 + .../25.01-bundle/CPP/7zip/var_gcc_arm.mak | 1 + .../25.01-bundle/CPP/7zip/var_gcc_arm64.mak | 1 + .../25.01-bundle/CPP/7zip/var_gcc_x64.mak | 1 + .../25.01-bundle/CPP/7zip/var_gcc_x86.mak | 1 + .../25.01-bundle/CPP/7zip/var_mac_arm64.mak | 1 + .../25.01-bundle/CPP/7zip/var_mac_x64.mak | 1 + versions/25.01-bundle/CPP/7zip/warn_clang.mak | 1 + .../25.01-bundle/CPP/7zip/warn_clang_mac.mak | 1 + versions/25.01-bundle/CPP/7zip/warn_gcc.mak | 1 + versions/25.01-bundle/CPP/Build.mak | 1 + versions/25.01-bundle/CPP/Common | 1 + versions/25.01-bundle/CPP/Windows | 1 + 91 files changed, 5048 insertions(+) create mode 100644 tools/linux/setup_25_01_bundle_symlinks.py create mode 120000 versions/25.01-bundle/Asm create mode 120000 versions/25.01-bundle/C create mode 120000 versions/25.01-bundle/CPP/7zip/7zip.mak create mode 120000 versions/25.01-bundle/CPP/7zip/7zip_gcc.mak create mode 120000 versions/25.01-bundle/CPP/7zip/Aes.mak create mode 120000 versions/25.01-bundle/CPP/7zip/Archive create mode 120000 versions/25.01-bundle/CPP/7zip/Asm.mak create mode 100644 versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/Nsis7z.sln create mode 100644 versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/Nsis7z.vcxproj create mode 100644 versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/Nsis7z.vcxproj.filters create mode 100644 versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/Nsis7z_vs2026.vcxproj create mode 100644 versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/StdAfx.h create mode 100644 versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/StdAfx2.cpp create mode 100644 versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/afxres.h create mode 100644 versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/api.h create mode 100644 versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/nsis7z.cpp create mode 100644 versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/nsis_tchar.h create mode 100644 versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/pluginapi.cpp create mode 100644 versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/pluginapi.h create mode 100644 versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/resource.h create mode 100644 versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/resource.rc create mode 120000 versions/25.01-bundle/CPP/7zip/Common create mode 120000 versions/25.01-bundle/CPP/7zip/Compress create mode 120000 versions/25.01-bundle/CPP/7zip/Crc.mak create mode 120000 versions/25.01-bundle/CPP/7zip/Crc64.mak create mode 120000 versions/25.01-bundle/CPP/7zip/Crypto create mode 120000 versions/25.01-bundle/CPP/7zip/GuiCommon.rc create mode 120000 versions/25.01-bundle/CPP/7zip/Guid.txt create mode 120000 versions/25.01-bundle/CPP/7zip/ICoder.h create mode 120000 versions/25.01-bundle/CPP/7zip/IDecl.h create mode 120000 versions/25.01-bundle/CPP/7zip/IPassword.h create mode 120000 versions/25.01-bundle/CPP/7zip/IProgress.h create mode 120000 versions/25.01-bundle/CPP/7zip/IStream.h create mode 120000 versions/25.01-bundle/CPP/7zip/LzFindOpt.mak create mode 120000 versions/25.01-bundle/CPP/7zip/LzmaDec.mak create mode 100644 versions/25.01-bundle/CPP/7zip/LzmaDec_gcc.mak create mode 120000 versions/25.01-bundle/CPP/7zip/MyVersion.h create mode 120000 versions/25.01-bundle/CPP/7zip/MyVersionInfo.rc create mode 120000 versions/25.01-bundle/CPP/7zip/PropID.h create mode 120000 versions/25.01-bundle/CPP/7zip/Sha1.mak create mode 120000 versions/25.01-bundle/CPP/7zip/Sha256.mak create mode 120000 versions/25.01-bundle/CPP/7zip/Sort.mak create mode 120000 versions/25.01-bundle/CPP/7zip/SubBuild.mak create mode 120000 versions/25.01-bundle/CPP/7zip/UI/Agent create mode 120000 versions/25.01-bundle/CPP/7zip/UI/Client7z create mode 120000 versions/25.01-bundle/CPP/7zip/UI/Common create mode 120000 versions/25.01-bundle/CPP/7zip/UI/Console create mode 120000 versions/25.01-bundle/CPP/7zip/UI/Explorer create mode 120000 versions/25.01-bundle/CPP/7zip/UI/Far create mode 120000 versions/25.01-bundle/CPP/7zip/UI/FileManager create mode 120000 versions/25.01-bundle/CPP/7zip/UI/GUI create mode 100644 versions/25.01-bundle/CPP/7zip/UI/NSIS/ExtractCallbackConsole.cpp create mode 100644 versions/25.01-bundle/CPP/7zip/UI/NSIS/ExtractCallbackConsole.h create mode 100644 versions/25.01-bundle/CPP/7zip/UI/NSIS/Main.cpp create mode 100644 versions/25.01-bundle/CPP/7zip/UI/NSIS/MainAr.cpp create mode 100644 versions/25.01-bundle/CPP/7zip/UI/NSIS/NSISBreak.cpp create mode 100644 versions/25.01-bundle/CPP/7zip/UI/NSIS/NSISBreak.h create mode 100644 versions/25.01-bundle/CPP/7zip/UI/NSIS/StdAfx.h create mode 100644 versions/25.01-bundle/CPP/7zip/UI/NSIS/UserInputUtils2.cpp create mode 100644 versions/25.01-bundle/CPP/7zip/UI/NSIS/UserInputUtils2.h create mode 120000 versions/25.01-bundle/CPP/7zip/UI/makefile create mode 120000 versions/25.01-bundle/CPP/7zip/cmpl_clang.mak create mode 120000 versions/25.01-bundle/CPP/7zip/cmpl_clang_arm64.mak create mode 120000 versions/25.01-bundle/CPP/7zip/cmpl_clang_x64.mak create mode 120000 versions/25.01-bundle/CPP/7zip/cmpl_clang_x86.mak create mode 120000 versions/25.01-bundle/CPP/7zip/cmpl_gcc.mak create mode 120000 versions/25.01-bundle/CPP/7zip/cmpl_gcc_arm.mak create mode 120000 versions/25.01-bundle/CPP/7zip/cmpl_gcc_arm64.mak create mode 120000 versions/25.01-bundle/CPP/7zip/cmpl_gcc_x64.mak create mode 120000 versions/25.01-bundle/CPP/7zip/cmpl_gcc_x86.mak create mode 120000 versions/25.01-bundle/CPP/7zip/cmpl_mac_arm64.mak create mode 120000 versions/25.01-bundle/CPP/7zip/cmpl_mac_x64.mak create mode 120000 versions/25.01-bundle/CPP/7zip/makefile create mode 120000 versions/25.01-bundle/CPP/7zip/var_clang.mak create mode 120000 versions/25.01-bundle/CPP/7zip/var_clang_arm64.mak create mode 120000 versions/25.01-bundle/CPP/7zip/var_clang_x64.mak create mode 120000 versions/25.01-bundle/CPP/7zip/var_clang_x86.mak create mode 120000 versions/25.01-bundle/CPP/7zip/var_gcc.mak create mode 120000 versions/25.01-bundle/CPP/7zip/var_gcc_arm.mak create mode 120000 versions/25.01-bundle/CPP/7zip/var_gcc_arm64.mak create mode 120000 versions/25.01-bundle/CPP/7zip/var_gcc_x64.mak create mode 120000 versions/25.01-bundle/CPP/7zip/var_gcc_x86.mak create mode 120000 versions/25.01-bundle/CPP/7zip/var_mac_arm64.mak create mode 120000 versions/25.01-bundle/CPP/7zip/var_mac_x64.mak create mode 120000 versions/25.01-bundle/CPP/7zip/warn_clang.mak create mode 120000 versions/25.01-bundle/CPP/7zip/warn_clang_mac.mak create mode 120000 versions/25.01-bundle/CPP/7zip/warn_gcc.mak create mode 120000 versions/25.01-bundle/CPP/Build.mak create mode 120000 versions/25.01-bundle/CPP/Common create mode 120000 versions/25.01-bundle/CPP/Windows diff --git a/tools/linux/setup_25_01_bundle_symlinks.py b/tools/linux/setup_25_01_bundle_symlinks.py new file mode 100644 index 0000000..2973bd6 --- /dev/null +++ b/tools/linux/setup_25_01_bundle_symlinks.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python3 +"""Creates symlinks in versions/25.01-bundle to mirror vendor directory structure.""" +import os +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[2] +bundle_root = ROOT / "versions/25.01-bundle" +vendor_root = ROOT / "versions/25.01" +bundle_7zip = bundle_root / "CPP/7zip" +vendor_7zip = vendor_root / "CPP/7zip" +bundle_cpp = bundle_root / "CPP" +vendor_cpp = vendor_root / "CPP" + +# Root-level symlinks: C and Asm +for name in ("C", "Asm"): + target = bundle_root / name + if not target.exists() and not target.is_symlink(): + rel = os.path.relpath(vendor_root / name, bundle_root) + os.symlink(rel, target) + print(f" symlink: {target.relative_to(ROOT)} -> {rel}") + +for item in vendor_7zip.iterdir(): + target = bundle_7zip / item.name + if not target.exists() and not target.is_symlink(): + rel = os.path.relpath(item, bundle_7zip) + os.symlink(rel, target) + print(f" symlink: {target.relative_to(ROOT)} -> {rel}") + +bundle_ui = bundle_7zip / "UI" +vendor_ui = vendor_7zip / "UI" +bundle_ui.mkdir(exist_ok=True) +for item in vendor_ui.iterdir(): + target = bundle_ui / item.name + if not target.exists() and not target.is_symlink(): + rel = os.path.relpath(item, bundle_ui) + os.symlink(rel, target) + print(f" symlink: {target.relative_to(ROOT)} -> {rel}") + +for item in vendor_cpp.iterdir(): + if item.name == "7zip": + continue + target = bundle_cpp / item.name + if not target.exists() and not target.is_symlink(): + rel = os.path.relpath(item, bundle_cpp) + os.symlink(rel, target) + print(f" symlink: {target.relative_to(ROOT)} -> {rel}") + +print("Done") diff --git a/versions/25.01-bundle/Asm b/versions/25.01-bundle/Asm new file mode 120000 index 0000000..cd991c2 --- /dev/null +++ b/versions/25.01-bundle/Asm @@ -0,0 +1 @@ +../25.01/Asm \ No newline at end of file diff --git a/versions/25.01-bundle/C b/versions/25.01-bundle/C new file mode 120000 index 0000000..c06c712 --- /dev/null +++ b/versions/25.01-bundle/C @@ -0,0 +1 @@ +../25.01/C \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/7zip.mak b/versions/25.01-bundle/CPP/7zip/7zip.mak new file mode 120000 index 0000000..725b6d7 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/7zip.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/7zip.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/7zip_gcc.mak b/versions/25.01-bundle/CPP/7zip/7zip_gcc.mak new file mode 120000 index 0000000..35fa626 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/7zip_gcc.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/7zip_gcc.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/Aes.mak b/versions/25.01-bundle/CPP/7zip/Aes.mak new file mode 120000 index 0000000..9e6f9d2 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Aes.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/Aes.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/Archive b/versions/25.01-bundle/CPP/7zip/Archive new file mode 120000 index 0000000..0564127 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Archive @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/Archive \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/Asm.mak b/versions/25.01-bundle/CPP/7zip/Asm.mak new file mode 120000 index 0000000..decea34 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Asm.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/Asm.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/Nsis7z.sln b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/Nsis7z.sln new file mode 100644 index 0000000..f754b72 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/Nsis7z.sln @@ -0,0 +1,44 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.24720.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Nsis7z", "Nsis7z.vcxproj", "{A284C1EF-6CA9-4984-A25F-83B22C85A5EC}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug Unicode|Win32 = Debug Unicode|Win32 + Debug Unicode|x64 = Debug Unicode|x64 + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release Unicode|Win32 = Release Unicode|Win32 + Release Unicode|x64 = Release Unicode|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A284C1EF-6CA9-4984-A25F-83B22C85A5EC}.Debug Unicode|Win32.ActiveCfg = Debug Unicode|Win32 + {A284C1EF-6CA9-4984-A25F-83B22C85A5EC}.Debug Unicode|Win32.Build.0 = Debug Unicode|Win32 + {A284C1EF-6CA9-4984-A25F-83B22C85A5EC}.Debug Unicode|Win32.Deploy.0 = Debug Unicode|Win32 + {A284C1EF-6CA9-4984-A25F-83B22C85A5EC}.Debug Unicode|x64.ActiveCfg = Debug Unicode|x64 + {A284C1EF-6CA9-4984-A25F-83B22C85A5EC}.Debug Unicode|x64.Build.0 = Debug Unicode|x64 + {A284C1EF-6CA9-4984-A25F-83B22C85A5EC}.Debug|Win32.ActiveCfg = Debug|Win32 + {A284C1EF-6CA9-4984-A25F-83B22C85A5EC}.Debug|Win32.Build.0 = Debug|Win32 + {A284C1EF-6CA9-4984-A25F-83B22C85A5EC}.Debug|Win32.Deploy.0 = Debug|Win32 + {A284C1EF-6CA9-4984-A25F-83B22C85A5EC}.Debug|x64.ActiveCfg = Debug|x64 + {A284C1EF-6CA9-4984-A25F-83B22C85A5EC}.Debug|x64.Build.0 = Debug|x64 + {A284C1EF-6CA9-4984-A25F-83B22C85A5EC}.Release Unicode|Win32.ActiveCfg = Release Unicode|Win32 + {A284C1EF-6CA9-4984-A25F-83B22C85A5EC}.Release Unicode|Win32.Build.0 = Release Unicode|Win32 + {A284C1EF-6CA9-4984-A25F-83B22C85A5EC}.Release Unicode|Win32.Deploy.0 = Release Unicode|Win32 + {A284C1EF-6CA9-4984-A25F-83B22C85A5EC}.Release Unicode|x64.ActiveCfg = Release Unicode|x64 + {A284C1EF-6CA9-4984-A25F-83B22C85A5EC}.Release Unicode|x64.Build.0 = Release Unicode|x64 + {A284C1EF-6CA9-4984-A25F-83B22C85A5EC}.Release|Win32.ActiveCfg = Release|Win32 + {A284C1EF-6CA9-4984-A25F-83B22C85A5EC}.Release|Win32.Build.0 = Release|Win32 + {A284C1EF-6CA9-4984-A25F-83B22C85A5EC}.Release|Win32.Deploy.0 = Release|Win32 + {A284C1EF-6CA9-4984-A25F-83B22C85A5EC}.Release|x64.ActiveCfg = Release|x64 + {A284C1EF-6CA9-4984-A25F-83B22C85A5EC}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/Nsis7z.vcxproj b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/Nsis7z.vcxproj new file mode 100644 index 0000000..05e06d2 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/Nsis7z.vcxproj @@ -0,0 +1,929 @@ + + + + + Debug Unicode + Win32 + + + Debug Unicode + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release Unicode + Win32 + + + Release Unicode + x64 + + + Release + Win32 + + + Release + x64 + + + + + + {A284C1EF-6CA9-4984-A25F-83B22C85A5EC} + 10.0.26100.0 + + + + DynamicLibrary + v143 + false + MultiByte + + + DynamicLibrary + v143 + false + MultiByte + + + DynamicLibrary + v143 + false + Unicode + + + DynamicLibrary + v143 + false + Unicode + + + DynamicLibrary + v143 + false + Unicode + + + DynamicLibrary + v143 + false + Unicode + + + DynamicLibrary + v143 + false + MultiByte + + + DynamicLibrary + v143 + false + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + false + nsis7z + $(Configuration)\ + $(Configuration)\ + + + false + false + nsis7z + + + true + false + + + true + false + nsis7z + + + false + false + nsis7z + $(Configuration)\ + $(Configuration)\ + + + false + false + nsis7z + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + true + false + + + true + false + nsis7z + + + + MultiThreaded + Default + true + true + MinSpace + true + false + true + Level3 + ..\..\..\;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;%(PreprocessorDefinitions) + AssemblyAndMachineCode + FastCall + None + 4100 + + + .\Release\Alone.tlb + + + 0x0419 + NDEBUG;%(PreprocessorDefinitions) + + + true + .\Release\Alone.bsc + + + true + + + No + UseLinkTimeCodeGeneration + true + true + + + + + MultiThreaded + Default + true + true + MinSpace + true + false + true + Level3 + ..\..\..\;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;%(PreprocessorDefinitions) + AssemblyAndMachineCode + FastCall + + + .\Release\Alone.tlb + + + 0x0419 + NDEBUG;%(PreprocessorDefinitions) + + + true + .\Release\Alone.bsc + + + true + + + UseLinkTimeCodeGeneration + true + true + + + + + MultiThreadedDebugDLL + Default + false + Disabled + true + Level4 + true + EditAndContinue + ..\..\..\;%(AdditionalIncludeDirectories) + _DEBUG;UNICODE;WIN32;_CONSOLE;%(PreprocessorDefinitions) + NotUsing + FastCall + EnableFastChecks + + + .\DebugU\Alone.tlb + + + 0x0419 + _DEBUG;%(PreprocessorDefinitions) + + + true + .\DebugU\Alone.bsc + + + true + true + odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + MultiThreadedDebugDLL + Default + false + Disabled + true + Level4 + ProgramDatabase + ..\..\..\;%(AdditionalIncludeDirectories) + _DEBUG;UNICODE;WIN32;_CONSOLE;%(PreprocessorDefinitions) + NotUsing + FastCall + EnableFastChecks + + + .\DebugU\Alone.tlb + + + 0x0419 + _DEBUG;%(PreprocessorDefinitions) + + + true + .\DebugU\Alone.bsc + + + true + true + odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + MultiThreaded + Default + true + true + MinSpace + true + false + true + Level4 + ..\..\..\ ;%(AdditionalIncludeDirectories) + NDEBUG;UNICODE;WIN32;%(PreprocessorDefinitions) + NotUsing + FastCall + None + 4100 + + + .\ReleaseU\Alone.tlb + + + 0x0419 + NDEBUG;%(PreprocessorDefinitions) + + + true + .\ReleaseU\Alone.bsc + + + true + + + No + UseLinkTimeCodeGeneration + true + true + + + + + MultiThreaded + Default + true + true + MinSpace + true + false + true + Level4 + ..\..\..\;%(AdditionalIncludeDirectories) + NDEBUG;UNICODE;WIN32;%(PreprocessorDefinitions) + NotUsing + FastCall + None + 4100 + + + .\ReleaseU\Alone.tlb + + + 0x0419 + NDEBUG;%(PreprocessorDefinitions) + + + true + .\ReleaseU\Alone.bsc + + + true + + + No + UseLinkTimeCodeGeneration + true + true + + + + + MultiThreadedDebugDLL + Default + Disabled + true + Level3 + true + EditAndContinue + ..\..\..\;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;%(PreprocessorDefinitions) + FastCall + EnableFastChecks + + + .\Debug\Alone.tlb + + + 0x0419 + _DEBUG;%(PreprocessorDefinitions) + + + true + .\Debug\Alone.bsc + + + true + true + odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + MultiThreadedDebugDLL + Default + false + Disabled + true + Level3 + ProgramDatabase + ..\..\..\;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;%(PreprocessorDefinitions) + FastCall + EnableFastChecks + + + .\Debug\Alone.tlb + + + 0x0419 + _DEBUG;%(PreprocessorDefinitions) + + + true + .\Debug\Alone.bsc + + + true + true + odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create + Create + StdAfx.h + StdAfx.h + Create + Create + + StdAfx.h + + StdAfx.h + Create + Create + + StdAfx.h + + StdAfx.h + Create + Create + StdAfx.h + StdAfx.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/Nsis7z.vcxproj.filters b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/Nsis7z.vcxproj.filters new file mode 100644 index 0000000..8e9ca30 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/Nsis7z.vcxproj.filters @@ -0,0 +1,1155 @@ + + + + + {62cceb8b-6d67-4e60-b5f8-1bff2e6abaeb} + + + {c0595cf3-369c-4f7c-b349-7a7c0ca70db6} + + + {8cc0c169-1304-4e2e-a5ea-6e49ed56f9c9} + + + {76f7df9d-36c1-42ed-8f64-e8be8e6d7991} + + + {d838ce49-592c-4c6c-926a-d9365faa29f8} + + + {5aae54fa-9887-4d32-873d-e3b44e7f9804} + + + {25220cad-9f5f-4dfc-a2ee-f4986fbd3f8a} + + + {8082796b-61b9-41f0-9455-90e869371edf} + + + {a1b2c3d4-e5f6-7890-abcd-ef1234567890} + + + {89ec73e5-f75b-499a-8ea0-a7c2e4edf6d1} + + + {0931aadf-3bb0-404e-a490-43d991b43132} + + + {c2c4a6e9-9bbe-4fee-ad86-7355cdf4167b} + + + {b78a9329-56be-4b22-9f6e-3f5bb3b90d63} + + + {f5ab86b6-3344-43d0-a7a5-81895454946f} + + + {b4084f19-d7e7-4f0d-95b8-d129e35c00c5} + + + {2478ad0f-8ecc-4574-be58-1d9ab3dbdd30} + + + {4de9ac9d-716d-4ce4-b4dd-910324d51f2f} + + + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\7zip + + + CPP\7zip + + + CPP\7zip + + + CPP\7zip + + + CPP\7zip + + + CPP\7zip + + + NSIS + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Console + + + CPP\7zip\UI\Console + + + CPP\7zip\UI\Console + + + NSIS\UI + + + NSIS\UI + + + NSIS\API + + + NSIS\API + + + NSIS\API + + + CPP\7zip\Compress + + + CPP\7zip\Compress + + + CPP\7zip\Compress + + + CPP\7zip\Compress + + + CPP\7zip\Compress + + + CPP\7zip\Compress + + + CPP\7zip\Compress + + + CPP\7zip\Compress + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\Common + + + CPP\7zip\Archive\Common + + + CPP\7zip\Archive\Common + + + CPP\7zip\Archive\Common + + + CPP\7zip\Archive\Common + + + CPP\7zip\Archive\Common + + + CPP\7zip\Archive\Common + + + CPP\7zip\Archive\Common + + + CPP\Common + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + + NSIS\UI + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\Common + + + CPP\Common + + + CPP\Common + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + C + + + C + + + CPP\7zip\Compress + + + CPP\7zip\Compress + + + CPP\7zip\UI\Console + + + NSIS\UI + + + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\7zip\Archive + + + CPP\7zip\Archive + + + CPP\7zip\Archive + + + CPP\7zip\Archive\Nsis + + + CPP\7zip\Archive\Nsis + + + CPP\7zip\Archive\Nsis + + + CPP\7zip\Archive\Nsis + + + NSIS + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Console + + + CPP\7zip\UI\Console + + + CPP\7zip\UI\Console + + + NSIS\UI + + + NSIS\UI + + + NSIS\UI + + + NSIS\UI + + + NSIS\API + + + CPP\7zip\Compress + + + CPP\7zip\Compress + + + CPP\7zip\Compress + + + CPP\7zip\Compress + + + CPP\7zip\Compress + + + CPP\7zip\Compress + + + CPP\7zip\Compress + + + CPP\7zip\Compress + + + CPP\7zip\Compress + + + CPP\7zip\Compress + + + CPP\7zip\Compress + + + CPP\7zip\Compress + + + CPP\7zip\Compress + + + CPP\7zip\Compress + + + CPP\7zip\Compress + + + CPP\7zip\Compress + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Common + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\7z + + + CPP\7zip\Archive\Common + + + CPP\7zip\Archive\Common + + + CPP\7zip\Archive\Common + + + CPP\7zip\Archive\Common + + + CPP\7zip\Archive\Common + + + CPP\7zip\Archive\Common + + + CPP\7zip\Archive\Common + + + CPP\7zip\Archive\Common + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\7zip\Archive\7z + + + CPP\Common + + + CPP\Common + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + CPP\Windows + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + C + + + CPP\7zip\UI\Common + + + CPP\7zip\UI\Common + + + C + + + C + + + CPP\7zip\Compress + + + CPP\7zip\Compress + + + CPP\7zip\UI\Console + + + NSIS\UI + + + NSIS + + + + + NSIS + + + C + + + \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/Nsis7z_vs2026.vcxproj b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/Nsis7z_vs2026.vcxproj new file mode 100644 index 0000000..c0cf616 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/Nsis7z_vs2026.vcxproj @@ -0,0 +1,929 @@ + + + + + Debug Unicode + Win32 + + + Debug Unicode + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release Unicode + Win32 + + + Release Unicode + x64 + + + Release + Win32 + + + Release + x64 + + + + + + {A284C1EF-6CA9-4984-A25F-83B22C85A5EC} + 10.0.26100.0 + + + + DynamicLibrary + v145 + false + MultiByte + + + DynamicLibrary + v145 + false + MultiByte + + + DynamicLibrary + v145 + false + Unicode + + + DynamicLibrary + v145 + false + Unicode + + + DynamicLibrary + v145 + false + Unicode + + + DynamicLibrary + v145 + false + Unicode + + + DynamicLibrary + v145 + false + MultiByte + + + DynamicLibrary + v145 + false + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + false + nsis7z + $(Configuration)\ + $(Configuration)\ + + + false + false + nsis7z + + + true + false + + + true + false + nsis7z + + + false + false + nsis7z + $(Configuration)\ + $(Configuration)\ + + + false + false + nsis7z + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + true + false + + + true + false + nsis7z + + + + MultiThreaded + Default + true + true + MinSpace + true + false + true + Level3 + ..\..\..\;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;%(PreprocessorDefinitions) + AssemblyAndMachineCode + FastCall + None + 4100 + + + .\Release\Alone.tlb + + + 0x0419 + NDEBUG;%(PreprocessorDefinitions) + + + true + .\Release\Alone.bsc + + + true + + + No + UseLinkTimeCodeGeneration + true + true + + + + + MultiThreaded + Default + true + true + MinSpace + true + false + true + Level3 + ..\..\..\;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;%(PreprocessorDefinitions) + AssemblyAndMachineCode + FastCall + + + .\Release\Alone.tlb + + + 0x0419 + NDEBUG;%(PreprocessorDefinitions) + + + true + .\Release\Alone.bsc + + + true + + + UseLinkTimeCodeGeneration + true + true + + + + + MultiThreadedDebugDLL + Default + false + Disabled + true + Level4 + true + EditAndContinue + ..\..\..\;%(AdditionalIncludeDirectories) + _DEBUG;UNICODE;WIN32;_CONSOLE;%(PreprocessorDefinitions) + NotUsing + FastCall + EnableFastChecks + + + .\DebugU\Alone.tlb + + + 0x0419 + _DEBUG;%(PreprocessorDefinitions) + + + true + .\DebugU\Alone.bsc + + + true + true + odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + MultiThreadedDebugDLL + Default + false + Disabled + true + Level4 + ProgramDatabase + ..\..\..\;%(AdditionalIncludeDirectories) + _DEBUG;UNICODE;WIN32;_CONSOLE;%(PreprocessorDefinitions) + NotUsing + FastCall + EnableFastChecks + + + .\DebugU\Alone.tlb + + + 0x0419 + _DEBUG;%(PreprocessorDefinitions) + + + true + .\DebugU\Alone.bsc + + + true + true + odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + MultiThreaded + Default + true + true + MinSpace + true + false + true + Level4 + ..\..\..\ ;%(AdditionalIncludeDirectories) + NDEBUG;UNICODE;WIN32;%(PreprocessorDefinitions) + NotUsing + FastCall + None + 4100 + + + .\ReleaseU\Alone.tlb + + + 0x0419 + NDEBUG;%(PreprocessorDefinitions) + + + true + .\ReleaseU\Alone.bsc + + + true + + + No + UseLinkTimeCodeGeneration + true + true + + + + + MultiThreaded + Default + true + true + MinSpace + true + false + true + Level4 + ..\..\..\;%(AdditionalIncludeDirectories) + NDEBUG;UNICODE;WIN32;%(PreprocessorDefinitions) + NotUsing + FastCall + None + 4100 + + + .\ReleaseU\Alone.tlb + + + 0x0419 + NDEBUG;%(PreprocessorDefinitions) + + + true + .\ReleaseU\Alone.bsc + + + true + + + No + UseLinkTimeCodeGeneration + true + true + + + + + MultiThreadedDebugDLL + Default + Disabled + true + Level3 + true + EditAndContinue + ..\..\..\;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;%(PreprocessorDefinitions) + FastCall + EnableFastChecks + + + .\Debug\Alone.tlb + + + 0x0419 + _DEBUG;%(PreprocessorDefinitions) + + + true + .\Debug\Alone.bsc + + + true + true + odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + MultiThreadedDebugDLL + Default + false + Disabled + true + Level3 + ProgramDatabase + ..\..\..\;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_CONSOLE;%(PreprocessorDefinitions) + FastCall + EnableFastChecks + + + .\Debug\Alone.tlb + + + 0x0419 + _DEBUG;%(PreprocessorDefinitions) + + + true + .\Debug\Alone.bsc + + + true + true + odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create + Create + StdAfx.h + StdAfx.h + Create + Create + + StdAfx.h + + StdAfx.h + Create + Create + + StdAfx.h + + StdAfx.h + Create + Create + StdAfx.h + StdAfx.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/StdAfx.h b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/StdAfx.h new file mode 100644 index 0000000..8607cf9 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/StdAfx.h @@ -0,0 +1,13 @@ +// StdAfx.h + +#ifndef __STDAFX_H +#define __STDAFX_H + +#include "../../../Common/Common.h" +#include +#include +#include "../../../Common/MyWindows.h" +#include "../../../Common/NewHandler.h" +#include "pluginapi.h" + +#endif diff --git a/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/StdAfx2.cpp b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/StdAfx2.cpp new file mode 100644 index 0000000..d0feea8 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/StdAfx2.cpp @@ -0,0 +1,3 @@ +// StdAfx.cpp + +#include "StdAfx.h" diff --git a/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/afxres.h b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/afxres.h new file mode 100644 index 0000000..c2fadd4 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/afxres.h @@ -0,0 +1 @@ +#include diff --git a/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/api.h b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/api.h new file mode 100644 index 0000000..85d41c4 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/api.h @@ -0,0 +1,83 @@ +/* + * apih + * + * This file is a part of NSIS. + * + * Copyright (C) 1999-2013 Nullsoft and Contributors + * + * Licensed under the zlib/libpng license (the "License"); + * you may not use this file except in compliance with the License. + * + * Licence details can be found in the file COPYING. + * + * This software is provided 'as-is', without any express or implied + * warranty. + */ + +#ifndef _NSIS_EXEHEAD_API_H_ +#define _NSIS_EXEHEAD_API_H_ + +// Starting with NSIS 2.42, you can check the version of the plugin API in exec_flags->plugin_api_version +// The format is 0xXXXXYYYY where X is the major version and Y is the minor version (MAKELONG(y,x)) +// When doing version checks, always remember to use >=, ex: if (pX->exec_flags->plugin_api_version >= NSISPIAPIVER_1_0) {} + +#define NSISPIAPIVER_1_0 0x00010000 +#define NSISPIAPIVER_CURR NSISPIAPIVER_1_0 + +// NSIS Plug-In Callback Messages +enum NSPIM +{ + NSPIM_UNLOAD, // This is the last message a plugin gets, do final cleanup + NSPIM_GUIUNLOAD, // Called after .onGUIEnd +}; + +// Prototype for callbacks registered with extra_parameters->RegisterPluginCallback() +// Return NULL for unknown messages +// Should always be __cdecl for future expansion possibilities +typedef UINT_PTR (*NSISPLUGINCALLBACK)(enum NSPIM); + +// extra_parameters data structures containing other interesting stuff +// but the stack, variables and HWND passed on to plug-ins. +typedef struct +{ + int autoclose; + int all_user_var; + int exec_error; + int abort; + int exec_reboot; // NSIS_SUPPORT_REBOOT + int reboot_called; // NSIS_SUPPORT_REBOOT + int XXX_cur_insttype; // depreacted + int plugin_api_version; // see NSISPIAPIVER_CURR + // used to be XXX_insttype_changed + int silent; // NSIS_CONFIG_SILENT_SUPPORT + int instdir_error; + int rtl; + int errlvl; + int alter_reg_view; + int status_update; +} exec_flags_t; + +#ifndef NSISCALL +# define NSISCALL __stdcall +#endif + +typedef struct { + exec_flags_t *exec_flags; + int (NSISCALL *ExecuteCodeSegment)(int, HWND); + void (NSISCALL *validate_filename)(TCHAR *); + int (NSISCALL *RegisterPluginCallback)(HMODULE, NSISPLUGINCALLBACK); // returns 0 on success, 1 if already registered and < 0 on errors +} extra_parameters; + +// Definitions for page showing plug-ins +// See Ui.c to understand better how they're used + +// sent to the outer window to tell it to go to the next inner window +#define WM_NOTIFY_OUTER_NEXT (WM_USER+0x8) + +// custom pages should send this message to let NSIS know they're ready +#define WM_NOTIFY_CUSTOM_READY (WM_USER+0xd) + +// sent as wParam with WM_NOTIFY_OUTER_NEXT when user cancels - heed its warning +#define NOTIFY_BYE_BYE 'x' + +#endif /* _PLUGIN_H_ */ diff --git a/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/nsis7z.cpp b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/nsis7z.cpp new file mode 100644 index 0000000..8f8daaa --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/nsis7z.cpp @@ -0,0 +1,190 @@ +#include "StdAfx.h" + +#include "../../UI/NSIS/ExtractCallbackConsole.h" +#include "Common/StringConvert.h" + +#pragma warning(disable: 4100) + +#define IDC_PROGRESS 1004 +#define IDC_INTROTEXT 1006 + +#define EXTRACTFUNC(funcname) extern "C" { \ +void __declspec(dllexport) __cdecl funcname(HWND hwndParent, int string_size, \ + TCHAR *variables, stack_t **stacktop, \ + extra_parameters *extra) \ +{ \ + EXDLL_INIT();\ + g_lastVal = -1; \ + g_hwndParent=hwndParent; \ + HWND hwndDlg = FindWindowEx(g_hwndParent, NULL, TEXT("#32770"), NULL); \ + g_hwndProgress = GetDlgItem(hwndDlg, IDC_PROGRESS); \ + g_hwndText = GetDlgItem(hwndDlg, IDC_INTROTEXT); \ + TCHAR sArchive[1024], *outDir = getuservariable(INST_OUTDIR); \ + popstring(sArchive); \ + g_pluginExtra = extra; \ + +#define EXTRACTFUNCEND } } + +HINSTANCE g_hInstance2; +HWND g_hwndParent; +HWND g_hwndProgress; +HWND g_hwndText; +extra_parameters *g_pluginExtra; + +void DoInitialize(); +int DoExtract(LPTSTR archive, LPTSTR dir, bool overwrite, bool expath, ExtractProgressHandler epc, const UStringVector& skipPatterns); +int DoExtractWithFile(LPTSTR archive, LPTSTR dir, bool overwrite, bool expath, ExtractProgressWithFileHandler epc, const UStringVector& skipPatterns); + +int g_progressCallback = -1; +int g_lastVal = -1; +TCHAR* g_sDetails; + +static void PopSkipPatterns(UStringVector& skipPatterns) +{ + TCHAR *buf = new TCHAR[g_stringsize]; + while (popstring(buf) == 0 && lstrlen(buf) > 0) + { +#ifdef UNICODE + skipPatterns.Add(UString(buf)); +#else + skipPatterns.Add(MultiByteToUnicodeString(AString(buf))); +#endif + } + delete[] buf; +} + +int GetPercentComplete(UInt64 completedSize, UInt64 totalSize) +{ + if (totalSize == 0) return 0; + const int nsisProgressMax = 30000; + int val = (int)((completedSize*nsisProgressMax)/totalSize); + if (val < 0) return 0; + if (val > nsisProgressMax) return nsisProgressMax; + return val; +} + +void SimpleProgressHandler(UInt64 completedSize, UInt64 totalSize) +{ + int val = GetPercentComplete(completedSize, totalSize); + if (g_lastVal != val) + SendMessage(g_hwndProgress, PBM_SETPOS, g_lastVal = val, 0); +} + +void CallbackProgressHandler(UInt64 completedSize, UInt64 totalSize) +{ + int val = 0; + + if (totalSize > 0) + { + val = GetPercentComplete(completedSize, totalSize); + + static TCHAR buf[32]; + wsprintf(buf, TEXT("%lu"), totalSize); + pushstring(buf); + wsprintf(buf, TEXT("%lu"), completedSize); + pushstring(buf); + g_pluginExtra->ExecuteCodeSegment(g_progressCallback-1, 0); + } + + if (g_lastVal != val) + SendMessage(g_hwndProgress, PBM_SETPOS, g_lastVal = val, 0); +} + +void CallbackFileProgressHandler(UInt64 completedSize, UInt64 totalSize, const wchar_t *fileName) +{ + int val = 0; + + if (totalSize > 0) + val = GetPercentComplete(completedSize, totalSize); + + // Notify NSIS only when a new file starts (filename changes) + if (fileName && fileName[0]) + { + static TCHAR fileNameBuf[MAX_PATH]; + static TCHAR prevFileNameBuf[MAX_PATH]; + static TCHAR buf[32]; + + lstrcpyn(fileNameBuf, (const TCHAR*)fileName, MAX_PATH); + if (lstrcmp(fileNameBuf, prevFileNameBuf) != 0) + { + lstrcpy(prevFileNameBuf, fileNameBuf); + pushstring(fileNameBuf); + wsprintf(buf, TEXT("%lu"), (DWORD)totalSize); + pushstring(buf); + wsprintf(buf, TEXT("%lu"), (DWORD)completedSize); + pushstring(buf); + g_pluginExtra->ExecuteCodeSegment(g_progressCallback-1, 0); + } + } + + if (g_lastVal != val) + SendMessage(g_hwndProgress, PBM_SETPOS, g_lastVal = val, 0); +} + +void DetailsProgressHandler(UInt64 completedSize, UInt64 totalSize) +{ + int val = 0; + + if (totalSize > 0) + { + val = GetPercentComplete(completedSize, totalSize); + + TCHAR* buf = new TCHAR[g_stringsize]; + TCHAR* buf2 = new TCHAR[g_stringsize]; + wsprintf(buf, TEXT("%d%% (%d / %d MB)"), (int)(val?val/300:0), (int)(completedSize?completedSize/(1024*1024):0), (int)(totalSize/(1024*1024))); + wsprintf(buf2, g_sDetails, buf); + SetWindowText(g_hwndText, buf2); + delete[] buf; + delete[] buf2; + } + + if (g_lastVal != val) + SendMessage(g_hwndProgress, PBM_SETPOS, g_lastVal = val, 0); +} + +EXTRACTFUNC(Extract) +{ + UStringVector skipPatterns; + PopSkipPatterns(skipPatterns); + DoExtract(sArchive, outDir, true, true, (ExtractProgressHandler)SimpleProgressHandler, skipPatterns); +} +EXTRACTFUNCEND + +EXTRACTFUNC(ExtractWithDetails) +{ + g_sDetails = new TCHAR[string_size]; + popstring(g_sDetails); + UStringVector skipPatterns; + PopSkipPatterns(skipPatterns); + DoExtract(sArchive, outDir, true, true, (ExtractProgressHandler)DetailsProgressHandler, skipPatterns); + delete[] g_sDetails; +} +EXTRACTFUNCEND + +EXTRACTFUNC(ExtractWithCallback) +{ + g_progressCallback = popint(); + UStringVector skipPatterns; + PopSkipPatterns(skipPatterns); + DoExtract(sArchive, outDir, true, true, (ExtractProgressHandler)CallbackProgressHandler, skipPatterns); +} +EXTRACTFUNCEND + +EXTRACTFUNC(ExtractWithFileCallback) +{ + g_progressCallback = popint(); + UStringVector skipPatterns; + PopSkipPatterns(skipPatterns); + DoExtractWithFile(sArchive, outDir, true, true, CallbackFileProgressHandler, skipPatterns); +} +EXTRACTFUNCEND + +extern "C" BOOL WINAPI DllMain(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved) +{ + g_hInstance2=(HINSTANCE)hInst; + if (ul_reason_for_call == DLL_PROCESS_ATTACH) + { + DoInitialize(); + } + return TRUE; +} diff --git a/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/nsis_tchar.h b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/nsis_tchar.h new file mode 100644 index 0000000..210bab1 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/nsis_tchar.h @@ -0,0 +1,229 @@ +/* + * nsis_tchar.h + * + * This file is a part of NSIS. + * + * Copyright (C) 1999-2013 Nullsoft and Contributors + * + * This software is provided 'as-is', without any express or implied + * warranty. + * + * For Unicode support by Jim Park -- 08/30/2007 + */ + +// Jim Park: Only those we use are listed here. + +#pragma once + +#ifdef _UNICODE + +#ifndef _T +#define __T(x) L ## x +#define _T(x) __T(x) +#define _TEXT(x) __T(x) +#endif + +#ifndef _TCHAR_DEFINED +#define _TCHAR_DEFINED +#if !defined(_NATIVE_WCHAR_T_DEFINED) && !defined(_WCHAR_T_DEFINED) +typedef unsigned short TCHAR; +#else +typedef wchar_t TCHAR; +#endif +#endif + + +// program +#define _tenviron _wenviron +#define __targv __wargv + +// printfs +#define _ftprintf fwprintf +#define _sntprintf _snwprintf +#if (defined(_MSC_VER) && (_MSC_VER<=1310)) || defined(__MINGW32__) +# define _stprintf swprintf +#else +# define _stprintf _swprintf +#endif +#define _tprintf wprintf +#define _vftprintf vfwprintf +#define _vsntprintf _vsnwprintf +#if defined(_MSC_VER) && (_MSC_VER<=1310) +# define _vstprintf vswprintf +#else +# define _vstprintf _vswprintf +#endif + +// scanfs +#define _tscanf wscanf +#define _stscanf swscanf + +// string manipulations +#define _tcscat wcscat +#define _tcschr wcschr +#define _tcsclen wcslen +#define _tcscpy wcscpy +#define _tcsdup _wcsdup +#define _tcslen wcslen +#define _tcsnccpy wcsncpy +#define _tcsncpy wcsncpy +#define _tcsrchr wcsrchr +#define _tcsstr wcsstr +#define _tcstok wcstok + +// string comparisons +#define _tcscmp wcscmp +#define _tcsicmp _wcsicmp +#define _tcsncicmp _wcsnicmp +#define _tcsncmp wcsncmp +#define _tcsnicmp _wcsnicmp + +// upper / lower +#define _tcslwr _wcslwr +#define _tcsupr _wcsupr +#define _totlower towlower +#define _totupper towupper + +// conversions to numbers +#define _tcstoi64 _wcstoi64 +#define _tcstol wcstol +#define _tcstoul wcstoul +#define _tstof _wtof +#define _tstoi _wtoi +#define _tstoi64 _wtoi64 +#define _ttoi _wtoi +#define _ttoi64 _wtoi64 +#define _ttol _wtol + +// conversion from numbers to strings +#define _itot _itow +#define _ltot _ltow +#define _i64tot _i64tow +#define _ui64tot _ui64tow + +// file manipulations +#define _tfopen _wfopen +#define _topen _wopen +#define _tremove _wremove +#define _tunlink _wunlink + +// reading and writing to i/o +#define _fgettc fgetwc +#define _fgetts fgetws +#define _fputts fputws +#define _gettchar getwchar + +// directory +#define _tchdir _wchdir + +// environment +#define _tgetenv _wgetenv +#define _tsystem _wsystem + +// time +#define _tcsftime wcsftime + +#else // ANSI + +#ifndef _T +#define _T(x) x +#define _TEXT(x) x +#endif + +#ifndef _TCHAR_DEFINED +#define _TCHAR_DEFINED +typedef char TCHAR; +#endif + +// program +#define _tenviron environ +#define __targv __argv + +// printfs +#define _ftprintf fprintf +#define _sntprintf _snprintf +#define _stprintf sprintf +#define _tprintf printf +#define _vftprintf vfprintf +#define _vsntprintf _vsnprintf +#define _vstprintf vsprintf + +// scanfs +#define _tscanf scanf +#define _stscanf sscanf + +// string manipulations +#define _tcscat strcat +#define _tcschr strchr +#define _tcsclen strlen +#define _tcscnlen strnlen +#define _tcscpy strcpy +#define _tcsdup _strdup +#define _tcslen strlen +#define _tcsnccpy strncpy +#define _tcsrchr strrchr +#define _tcsstr strstr +#define _tcstok strtok + +// string comparisons +#define _tcscmp strcmp +#define _tcsicmp _stricmp +#define _tcsncmp strncmp +#define _tcsncicmp _strnicmp +#define _tcsnicmp _strnicmp + +// upper / lower +#define _tcslwr _strlwr +#define _tcsupr _strupr + +#define _totupper toupper +#define _totlower tolower + +// conversions to numbers +#define _tcstol strtol +#define _tcstoul strtoul +#define _tstof atof +#define _tstoi atoi +#define _tstoi64 _atoi64 +#define _tstoi64 _atoi64 +#define _ttoi atoi +#define _ttoi64 _atoi64 +#define _ttol atol + +// conversion from numbers to strings +#define _i64tot _i64toa +#define _itot _itoa +#define _ltot _ltoa +#define _ui64tot _ui64toa + +// file manipulations +#define _tfopen fopen +#define _topen _open +#define _tremove remove +#define _tunlink _unlink + +// reading and writing to i/o +#define _fgettc fgetc +#define _fgetts fgets +#define _fputts fputs +#define _gettchar getchar + +// directory +#define _tchdir _chdir + +// environment +#define _tgetenv getenv +#define _tsystem system + +// time +#define _tcsftime strftime + +#endif + +// is functions (the same in Unicode / ANSI) +#define _istgraph isgraph +#define _istascii __isascii + +#define __TFILE__ _T(__FILE__) +#define __TDATE__ _T(__DATE__) +#define __TTIME__ _T(__TIME__) diff --git a/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/pluginapi.cpp b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/pluginapi.cpp new file mode 100644 index 0000000..69406a8 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/pluginapi.cpp @@ -0,0 +1,292 @@ +#include "StdAfx.h" + +#ifdef _countof +#define COUNTOF _countof +#else +#define COUNTOF(a) (sizeof(a)/sizeof(a[0])) +#endif + +unsigned int g_stringsize; +stack_t **g_stacktop; +TCHAR *g_variables; + +// utility functions (not required but often useful) + +int NSISCALL popstring(TCHAR *str) +{ + stack_t *th; + if (!g_stacktop || !*g_stacktop) return 1; + th=(*g_stacktop); + if (str) lstrcpy(str,th->text); + *g_stacktop = th->next; + GlobalFree((HGLOBAL)th); + return 0; +} + +int NSISCALL popstringn(TCHAR *str, int maxlen) +{ + stack_t *th; + if (!g_stacktop || !*g_stacktop) return 1; + th=(*g_stacktop); + if (str) lstrcpyn(str,th->text,maxlen?maxlen:g_stringsize); + *g_stacktop = th->next; + GlobalFree((HGLOBAL)th); + return 0; +} + +void NSISCALL pushstring(const TCHAR *str) +{ + stack_t *th; + if (!g_stacktop) return; + th=(stack_t*)GlobalAlloc(GPTR,(sizeof(stack_t)+(g_stringsize)*sizeof(TCHAR))); + lstrcpyn(th->text,str,g_stringsize); + th->next=*g_stacktop; + *g_stacktop=th; +} + +TCHAR* NSISCALL getuservariable(const int varnum) +{ + if (varnum < 0 || varnum >= __INST_LAST) return NULL; + return g_variables+varnum*g_stringsize; +} + +void NSISCALL setuservariable(const int varnum, const TCHAR *var) +{ + if (var != NULL && varnum >= 0 && varnum < __INST_LAST) + lstrcpy(g_variables + varnum*g_stringsize, var); +} + +#ifdef _UNICODE +int NSISCALL PopStringA(char* ansiStr) +{ + wchar_t* wideStr = (wchar_t*) GlobalAlloc(GPTR, g_stringsize*sizeof(wchar_t)); + int rval = popstring(wideStr); + WideCharToMultiByte(CP_ACP, 0, wideStr, -1, ansiStr, g_stringsize, NULL, NULL); + GlobalFree((HGLOBAL)wideStr); + return rval; +} + +int NSISCALL PopStringNA(char* ansiStr, int maxlen) +{ + int realLen = maxlen ? maxlen : g_stringsize; + wchar_t* wideStr = (wchar_t*) GlobalAlloc(GPTR, realLen*sizeof(wchar_t)); + int rval = popstringn(wideStr, realLen); + WideCharToMultiByte(CP_ACP, 0, wideStr, -1, ansiStr, realLen, NULL, NULL); + GlobalFree((HGLOBAL)wideStr); + return rval; +} + +void NSISCALL PushStringA(const char* ansiStr) +{ + wchar_t* wideStr = (wchar_t*) GlobalAlloc(GPTR, g_stringsize*sizeof(wchar_t)); + MultiByteToWideChar(CP_ACP, 0, ansiStr, -1, wideStr, g_stringsize); + pushstring(wideStr); + GlobalFree((HGLOBAL)wideStr); + return; +} + +void NSISCALL GetUserVariableW(const int varnum, wchar_t* wideStr) +{ + lstrcpyW(wideStr, getuservariable(varnum)); +} + +void NSISCALL GetUserVariableA(const int varnum, char* ansiStr) +{ + wchar_t* wideStr = getuservariable(varnum); + WideCharToMultiByte(CP_ACP, 0, wideStr, -1, ansiStr, g_stringsize, NULL, NULL); +} + +void NSISCALL SetUserVariableA(const int varnum, const char* ansiStr) +{ + if (ansiStr != NULL && varnum >= 0 && varnum < __INST_LAST) + { + wchar_t* wideStr = g_variables + varnum * g_stringsize; + MultiByteToWideChar(CP_ACP, 0, ansiStr, -1, wideStr, g_stringsize); + } +} + +#else +// ANSI defs +int NSISCALL PopStringW(wchar_t* wideStr) +{ + char* ansiStr = (char*) GlobalAlloc(GPTR, g_stringsize); + int rval = popstring(ansiStr); + MultiByteToWideChar(CP_ACP, 0, ansiStr, -1, wideStr, g_stringsize); + GlobalFree((HGLOBAL)ansiStr); + return rval; +} + +int NSISCALL PopStringNW(wchar_t* wideStr, int maxlen) +{ + int realLen = maxlen ? maxlen : g_stringsize; + char* ansiStr = (char*) GlobalAlloc(GPTR, realLen); + int rval = popstringn(ansiStr, realLen); + MultiByteToWideChar(CP_ACP, 0, ansiStr, -1, wideStr, realLen); + GlobalFree((HGLOBAL)ansiStr); + return rval; +} + +void NSISCALL PushStringW(wchar_t* wideStr) +{ + char* ansiStr = (char*) GlobalAlloc(GPTR, g_stringsize); + WideCharToMultiByte(CP_ACP, 0, wideStr, -1, ansiStr, g_stringsize, NULL, NULL); + pushstring(ansiStr); + GlobalFree((HGLOBAL)ansiStr); +} + +void NSISCALL GetUserVariableW(const int varnum, wchar_t* wideStr) +{ + char* ansiStr = getuservariable(varnum); + MultiByteToWideChar(CP_ACP, 0, ansiStr, -1, wideStr, g_stringsize); +} + +void NSISCALL GetUserVariableA(const int varnum, char* ansiStr) +{ + lstrcpyA(ansiStr, getuservariable(varnum)); +} + +void NSISCALL SetUserVariableW(const int varnum, const wchar_t* wideStr) +{ + if (wideStr != NULL && varnum >= 0 && varnum < __INST_LAST) + { + char* ansiStr = g_variables + varnum * g_stringsize; + WideCharToMultiByte(CP_ACP, 0, wideStr, -1, ansiStr, g_stringsize, NULL, NULL); + } +} +#endif + +// playing with integers + +INT_PTR NSISCALL nsishelper_str_to_ptr(const TCHAR *s) +{ + INT_PTR v=0; + if (*s == _T('0') && (s[1] == _T('x') || s[1] == _T('X'))) + { + s++; + for (;;) + { + int c=*(++s); + if (c >= _T('0') && c <= _T('9')) c-=_T('0'); + else if (c >= _T('a') && c <= _T('f')) c-=_T('a')-10; + else if (c >= _T('A') && c <= _T('F')) c-=_T('A')-10; + else break; + v<<=4; + v+=c; + } + } + else if (*s == _T('0') && s[1] <= _T('7') && s[1] >= _T('0')) + { + for (;;) + { + int c=*(++s); + if (c >= _T('0') && c <= _T('7')) c-=_T('0'); + else break; + v<<=3; + v+=c; + } + } + else + { + int sign=0; + if (*s == _T('-')) sign++; else s--; + for (;;) + { + int c=*(++s) - _T('0'); + if (c < 0 || c > 9) break; + v*=10; + v+=c; + } + if (sign) v = -v; + } + + return v; +} + +unsigned int NSISCALL myatou(const TCHAR *s) +{ + unsigned int v=0; + + for (;;) + { + unsigned int c=*s++; + if (c >= _T('0') && c <= _T('9')) c-=_T('0'); + else break; + v*=10; + v+=c; + } + return v; +} + +int NSISCALL myatoi_or(const TCHAR *s) +{ + int v=0; + if (*s == _T('0') && (s[1] == _T('x') || s[1] == _T('X'))) + { + s++; + for (;;) + { + int c=*(++s); + if (c >= _T('0') && c <= _T('9')) c-=_T('0'); + else if (c >= _T('a') && c <= _T('f')) c-=_T('a')-10; + else if (c >= _T('A') && c <= _T('F')) c-=_T('A')-10; + else break; + v<<=4; + v+=c; + } + } + else if (*s == _T('0') && s[1] <= _T('7') && s[1] >= _T('0')) + { + for (;;) + { + int c=*(++s); + if (c >= _T('0') && c <= _T('7')) c-=_T('0'); + else break; + v<<=3; + v+=c; + } + } + else + { + int sign=0; + if (*s == _T('-')) sign++; else s--; + for (;;) + { + int c=*(++s) - _T('0'); + if (c < 0 || c > 9) break; + v*=10; + v+=c; + } + if (sign) v = -v; + } + + // Support for simple ORed expressions + if (*s == _T('|')) + { + v |= myatoi_or(s+1); + } + + return v; +} + +INT_PTR NSISCALL popintptr() +{ + TCHAR buf[128]; + if (popstringn(buf,COUNTOF(buf))) + return 0; + return nsishelper_str_to_ptr(buf); +} + +int NSISCALL popint_or() +{ + TCHAR buf[128]; + if (popstringn(buf,COUNTOF(buf))) + return 0; + return myatoi_or(buf); +} + +void NSISCALL pushintptr(INT_PTR value) +{ + TCHAR buffer[30]; + wsprintf(buffer, sizeof(void*) > 4 ? _T("%Id") : _T("%d"), value); + pushstring(buffer); +} diff --git a/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/pluginapi.h b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/pluginapi.h new file mode 100644 index 0000000..f607b11 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/pluginapi.h @@ -0,0 +1,115 @@ +#ifndef ___NSIS_PLUGIN__H___ +#define ___NSIS_PLUGIN__H___ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "api.h" +#ifdef _UNICODE +#ifndef _T +#define __T(x) L ## x +#define _T(x) __T(x) +#define _TEXT(x) __T(x) +#endif +#else +#ifndef _T +#define _T(x) x +#define _TEXT(x) x +#endif +#endif + +#ifndef NSISCALL +# define NSISCALL __stdcall +#endif + +#define EXDLL_INIT() { \ + g_stringsize=string_size; \ + g_stacktop=stacktop; \ + g_variables=variables; } + +typedef struct _stack_t { + struct _stack_t *next; + TCHAR text[1]; // this should be the length of string_size +} stack_t; + +enum +{ +INST_0, // $0 +INST_1, // $1 +INST_2, // $2 +INST_3, // $3 +INST_4, // $4 +INST_5, // $5 +INST_6, // $6 +INST_7, // $7 +INST_8, // $8 +INST_9, // $9 +INST_R0, // $R0 +INST_R1, // $R1 +INST_R2, // $R2 +INST_R3, // $R3 +INST_R4, // $R4 +INST_R5, // $R5 +INST_R6, // $R6 +INST_R7, // $R7 +INST_R8, // $R8 +INST_R9, // $R9 +INST_CMDLINE, // $CMDLINE +INST_INSTDIR, // $INSTDIR +INST_OUTDIR, // $OUTDIR +INST_EXEDIR, // $EXEDIR +INST_LANG, // $LANGUAGE +__INST_LAST +}; + +extern unsigned int g_stringsize; +extern stack_t **g_stacktop; +extern TCHAR *g_variables; + +void NSISCALL pushstring(const TCHAR *str); +void NSISCALL pushintptr(INT_PTR value); +#define pushint(v) pushintptr((INT_PTR)(v)) +int NSISCALL popstring(TCHAR *str); // 0 on success, 1 on empty stack +int NSISCALL popstringn(TCHAR *str, int maxlen); // with length limit, pass 0 for g_stringsize +INT_PTR NSISCALL popintptr(); +#define popint() ( (int) popintptr() ) +int NSISCALL popint_or(); // with support for or'ing (2|4|8) +INT_PTR NSISCALL nsishelper_str_to_ptr(const TCHAR *s); +#define myatoi(s) ( (int) nsishelper_str_to_ptr(s) ) // converts a string to an integer +unsigned int NSISCALL myatou(const TCHAR *s); // converts a string to an unsigned integer, decimal only +int NSISCALL myatoi_or(const TCHAR *s); // with support for or'ing (2|4|8) +TCHAR* NSISCALL getuservariable(const int varnum); +void NSISCALL setuservariable(const int varnum, const TCHAR *var); + +#ifdef _UNICODE +#define PopStringW(x) popstring(x) +#define PushStringW(x) pushstring(x) +#define SetUserVariableW(x,y) setuservariable(x,y) + +int NSISCALL PopStringA(char* ansiStr); +void NSISCALL PushStringA(const char* ansiStr); +void NSISCALL GetUserVariableW(const int varnum, wchar_t* wideStr); +void NSISCALL GetUserVariableA(const int varnum, char* ansiStr); +void NSISCALL SetUserVariableA(const int varnum, const char* ansiStr); + +#else +// ANSI defs + +#define PopStringA(x) popstring(x) +#define PushStringA(x) pushstring(x) +#define SetUserVariableA(x,y) setuservariable(x,y) + +int NSISCALL PopStringW(wchar_t* wideStr); +void NSISCALL PushStringW(wchar_t* wideStr); +void NSISCALL GetUserVariableW(const int varnum, wchar_t* wideStr); +void NSISCALL GetUserVariableA(const int varnum, char* ansiStr); +void NSISCALL SetUserVariableW(const int varnum, const wchar_t* wideStr); + +#endif + +#ifdef __cplusplus +} +#endif + +#endif//!___NSIS_PLUGIN__H___ diff --git a/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/resource.h b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/resource.h new file mode 100644 index 0000000..08340b3 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/resource.h @@ -0,0 +1,19 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by resource.rc +// +#define MY_VER_BUILD 0 +#define DBG_FL 0 +#define MY_VER_MAJOR 9 +#define MY_VER_MINOR 20 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/resource.rc b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/resource.rc new file mode 100644 index 0000000..18da943 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z/resource.rc @@ -0,0 +1,99 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 25,01,0,0 + PRODUCTVERSION 25,01,0,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "Igor Pavlov" + VALUE "FileDescription", "7-Zip NSIS Plug-in" + VALUE "FileVersion", "25.01.0.0" + VALUE "InternalName", "nsis7z" + VALUE "LegalCopyright", "Copyright (c) 1999-2025 Igor Pavlov, Nik Medved, Marek Mizanin, Stuart Welch" + VALUE "OriginalFilename", "nsis7z.dll" + VALUE "ProductName", "7-Zip" + VALUE "ProductVersion", "25.01.0.0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/versions/25.01-bundle/CPP/7zip/Common b/versions/25.01-bundle/CPP/7zip/Common new file mode 120000 index 0000000..6bd28d7 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Common @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/Common \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/Compress b/versions/25.01-bundle/CPP/7zip/Compress new file mode 120000 index 0000000..e13ce51 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Compress @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/Compress \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/Crc.mak b/versions/25.01-bundle/CPP/7zip/Crc.mak new file mode 120000 index 0000000..ebfb87d --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Crc.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/Crc.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/Crc64.mak b/versions/25.01-bundle/CPP/7zip/Crc64.mak new file mode 120000 index 0000000..b72f50d --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Crc64.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/Crc64.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/Crypto b/versions/25.01-bundle/CPP/7zip/Crypto new file mode 120000 index 0000000..8b2d039 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Crypto @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/Crypto \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/GuiCommon.rc b/versions/25.01-bundle/CPP/7zip/GuiCommon.rc new file mode 120000 index 0000000..4fed453 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/GuiCommon.rc @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/GuiCommon.rc \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/Guid.txt b/versions/25.01-bundle/CPP/7zip/Guid.txt new file mode 120000 index 0000000..bd662e8 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Guid.txt @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/Guid.txt \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/ICoder.h b/versions/25.01-bundle/CPP/7zip/ICoder.h new file mode 120000 index 0000000..f054ce9 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/ICoder.h @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/ICoder.h \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/IDecl.h b/versions/25.01-bundle/CPP/7zip/IDecl.h new file mode 120000 index 0000000..7326ba5 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/IDecl.h @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/IDecl.h \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/IPassword.h b/versions/25.01-bundle/CPP/7zip/IPassword.h new file mode 120000 index 0000000..9f50230 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/IPassword.h @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/IPassword.h \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/IProgress.h b/versions/25.01-bundle/CPP/7zip/IProgress.h new file mode 120000 index 0000000..16ad60b --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/IProgress.h @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/IProgress.h \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/IStream.h b/versions/25.01-bundle/CPP/7zip/IStream.h new file mode 120000 index 0000000..b52992b --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/IStream.h @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/IStream.h \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/LzFindOpt.mak b/versions/25.01-bundle/CPP/7zip/LzFindOpt.mak new file mode 120000 index 0000000..a2637f3 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/LzFindOpt.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/LzFindOpt.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/LzmaDec.mak b/versions/25.01-bundle/CPP/7zip/LzmaDec.mak new file mode 120000 index 0000000..c357f7f --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/LzmaDec.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/LzmaDec.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/LzmaDec_gcc.mak b/versions/25.01-bundle/CPP/7zip/LzmaDec_gcc.mak new file mode 100644 index 0000000..3277340 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/LzmaDec_gcc.mak @@ -0,0 +1,4 @@ +# Forwarding stub: Arc_gcc.mak includes ../../LzmaDec_gcc.mak relative to make's CWD. +# When building from versions/25.01-bundle/CPP/7zip/Bundles/Nsis7z, the CWD-relative +# ../../LzmaDec_gcc.mak resolves here. Forward to the real file in the vendor tree. +include $(VENDOR_7ZIP)/LzmaDec_gcc.mak diff --git a/versions/25.01-bundle/CPP/7zip/MyVersion.h b/versions/25.01-bundle/CPP/7zip/MyVersion.h new file mode 120000 index 0000000..bb52fbf --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/MyVersion.h @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/MyVersion.h \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/MyVersionInfo.rc b/versions/25.01-bundle/CPP/7zip/MyVersionInfo.rc new file mode 120000 index 0000000..24a23cb --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/MyVersionInfo.rc @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/MyVersionInfo.rc \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/PropID.h b/versions/25.01-bundle/CPP/7zip/PropID.h new file mode 120000 index 0000000..43ef0d1 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/PropID.h @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/PropID.h \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/Sha1.mak b/versions/25.01-bundle/CPP/7zip/Sha1.mak new file mode 120000 index 0000000..b434b35 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Sha1.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/Sha1.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/Sha256.mak b/versions/25.01-bundle/CPP/7zip/Sha256.mak new file mode 120000 index 0000000..8984ead --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Sha256.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/Sha256.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/Sort.mak b/versions/25.01-bundle/CPP/7zip/Sort.mak new file mode 120000 index 0000000..b8c64d8 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/Sort.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/Sort.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/SubBuild.mak b/versions/25.01-bundle/CPP/7zip/SubBuild.mak new file mode 120000 index 0000000..c451da3 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/SubBuild.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/SubBuild.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/UI/Agent b/versions/25.01-bundle/CPP/7zip/UI/Agent new file mode 120000 index 0000000..8e6bb58 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/UI/Agent @@ -0,0 +1 @@ +../../../../25.01/CPP/7zip/UI/Agent \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/UI/Client7z b/versions/25.01-bundle/CPP/7zip/UI/Client7z new file mode 120000 index 0000000..3941b1c --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/UI/Client7z @@ -0,0 +1 @@ +../../../../25.01/CPP/7zip/UI/Client7z \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/UI/Common b/versions/25.01-bundle/CPP/7zip/UI/Common new file mode 120000 index 0000000..29ff171 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/UI/Common @@ -0,0 +1 @@ +../../../../25.01/CPP/7zip/UI/Common \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/UI/Console b/versions/25.01-bundle/CPP/7zip/UI/Console new file mode 120000 index 0000000..9441176 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/UI/Console @@ -0,0 +1 @@ +../../../../25.01/CPP/7zip/UI/Console \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/UI/Explorer b/versions/25.01-bundle/CPP/7zip/UI/Explorer new file mode 120000 index 0000000..4dcefa8 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/UI/Explorer @@ -0,0 +1 @@ +../../../../25.01/CPP/7zip/UI/Explorer \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/UI/Far b/versions/25.01-bundle/CPP/7zip/UI/Far new file mode 120000 index 0000000..7cae21a --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/UI/Far @@ -0,0 +1 @@ +../../../../25.01/CPP/7zip/UI/Far \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/UI/FileManager b/versions/25.01-bundle/CPP/7zip/UI/FileManager new file mode 120000 index 0000000..d06a2eb --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/UI/FileManager @@ -0,0 +1 @@ +../../../../25.01/CPP/7zip/UI/FileManager \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/UI/GUI b/versions/25.01-bundle/CPP/7zip/UI/GUI new file mode 120000 index 0000000..b7d556e --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/UI/GUI @@ -0,0 +1 @@ +../../../../25.01/CPP/7zip/UI/GUI \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/UI/NSIS/ExtractCallbackConsole.cpp b/versions/25.01-bundle/CPP/7zip/UI/NSIS/ExtractCallbackConsole.cpp new file mode 100644 index 0000000..33ce1af --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/UI/NSIS/ExtractCallbackConsole.cpp @@ -0,0 +1,163 @@ +// ExtractCallbackConsole.h + +#include "StdAfx.h" + +#include "../../../Common/Common.h" +#include "ExtractCallbackConsole.h" +#include "UserInputUtils2.h" +#include "NSISBreak.h" + +#include "Common/Wildcard.h" + +#include "Windows/FileDir.h" +#include "Windows/FileFind.h" +#include "Windows/TimeUtils.h" +#include "Windows/Defs.h" +#include "Windows/PropVariant.h" +#include "Windows/ErrorMsg.h" +#include "Windows/PropVariantConv.h" + +#include "../../Common/FilePathAutoRename.h" + +#include "../Common/ExtractingFilePath.h" + +using namespace NWindows; +using namespace NFile; +using namespace NDir; + +extern HWND g_hwndProgress; + +void CExtractCallbackConsole::UpdateProgress() +{ + // Prima controlla se c'è il callback con filename (nuova funzione) + if (ProgressWithFileHandler != NULL) + { + if (completedSize != -1 || totalSize > 0) + ProgressWithFileHandler(completedSize, totalSize, CurrentFileName.Ptr()); + else + ProgressWithFileHandler(0, 0, CurrentFileName.Ptr()); + } + // Altrimenti usa il callback originale (per compatibilità) + else if (ProgressHandler != NULL) + { + if (completedSize != -1 || totalSize > 0) + ProgressHandler(completedSize, totalSize); + else + ProgressHandler(0, 0); + } +} + +STDMETHODIMP CExtractCallbackConsole::SetTotal(UInt64 val) +{ + totalSize = val; + UpdateProgress(); + if (NNSISBreak::TestBreakSignal()) + return E_ABORT; + return S_OK; +} + +STDMETHODIMP CExtractCallbackConsole::SetCompleted(const UInt64 *val) +{ + completedSize = *val; + UpdateProgress(); + if (NNSISBreak::TestBreakSignal()) + return E_ABORT; + return S_OK; +} + +STDMETHODIMP CExtractCallbackConsole::AskOverwrite( + const wchar_t *existName, const FILETIME *, const UInt64 *, + const wchar_t *newName, const FILETIME *, const UInt64 *, + Int32 *answer) +{ + *answer = NOverwriteAnswer::kYesToAll; + return S_OK; +} + +STDMETHODIMP CExtractCallbackConsole::PrepareOperation(const wchar_t *name, Int32 isFolder, Int32 askExtractMode, const UInt64 *position) +{ + // Memorizza il nome del file corrente per passarlo al callback + CurrentFileName = name; + return S_OK; +} + +STDMETHODIMP CExtractCallbackConsole::MessageError(const wchar_t *message) +{ + NumFileErrorsInCurrentArchive++; + NumFileErrors++; + return S_OK; +} + +STDMETHODIMP CExtractCallbackConsole::SetOperationResult(Int32 opRes, Int32 encrypted) +{ + switch(opRes) + { + case NArchive::NExtract::NOperationResult::kOK: + break; + default: + { + NumFileErrorsInCurrentArchive++; + NumFileErrors++; + + } + } + return S_OK; +} + +#ifndef Z7_NO_CRYPTO + +HRESULT CExtractCallbackConsole::SetPassword(const UString &password) +{ + PasswordIsDefined = true; + Password = password; + return S_OK; +} + +STDMETHODIMP CExtractCallbackConsole::CryptoGetTextPassword(BSTR *password) +{ + if (!PasswordIsDefined) + { + Password = GetPassword(OutStream); + PasswordIsDefined = true; + } + return StringToBstr(Password, password); +} + +#endif + +HRESULT CExtractCallbackConsole::BeforeOpen(const wchar_t *name, bool testMode) +{ + NumArchives++; + NumFileErrorsInCurrentArchive = 0; + return S_OK; +} + +HRESULT CExtractCallbackConsole::OpenResult(const CCodecs *codecs, const CArchiveLink &arcLink, const wchar_t *name, HRESULT result) +{ + if (result != S_OK) + { + NumArchiveErrors++; + } + return S_OK; +} + +HRESULT CExtractCallbackConsole::ThereAreNoFiles() +{ + return S_OK; +} + +HRESULT CExtractCallbackConsole::ExtractResult(HRESULT result) +{ + if (result == S_OK) + { + if (NumFileErrorsInCurrentArchive != 0) + { + NumArchiveErrors++; + } + return result; + } + NumArchiveErrors++; + if (result == E_ABORT || result == ERROR_DISK_FULL) + return result; + return S_OK; +} diff --git a/versions/25.01-bundle/CPP/7zip/UI/NSIS/ExtractCallbackConsole.h b/versions/25.01-bundle/CPP/7zip/UI/NSIS/ExtractCallbackConsole.h new file mode 100644 index 0000000..e217cff --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/UI/NSIS/ExtractCallbackConsole.h @@ -0,0 +1,98 @@ +// ExtractCallbackConsole.h +// NSIS version adapted for 7-Zip 25.01 API + +#ifndef __EXTRACTCALLBACKCONSOLE_H +#define __EXTRACTCALLBACKCONSOLE_H + +#include "Common/MyCom.h" +#include "Common/MyString.h" +#include "Common/StdOutStream.h" +#include "../../Common/FileStreams.h" +#include "../../IPassword.h" +#include "../../Archive/IArchive.h" +#include "../Common/ArchiveExtractCallback.h" +#include "../Console/OpenCallbackConsole.h" + +typedef void (*ExtractProgressHandler)(UInt64 completedSize, UInt64 totalSize); +typedef void (*ExtractProgressWithFileHandler)(UInt64 completedSize, UInt64 totalSize, const wchar_t *fileName); + +class CExtractCallbackConsole Z7_final: + public IFolderArchiveExtractCallback, + public IExtractCallbackUI, +#ifndef Z7_NO_CRYPTO + public ICryptoGetTextPassword, +#endif + public COpenCallbackConsole, + public CMyUnknownImp +{ + Z7_COM_QI_BEGIN2(IFolderArchiveExtractCallback) +#ifndef Z7_NO_CRYPTO + Z7_COM_QI_ENTRY(ICryptoGetTextPassword) +#endif + Z7_COM_QI_END + Z7_COM_ADDREF_RELEASE + + // IProgress + Z7_IFACE_COM7_IMP(IProgress) + + // IFolderArchiveExtractCallback + Z7_IFACE_COM7_IMP(IFolderArchiveExtractCallback) + + // IExtractCallbackUI (non-COM interface) + Z7_IFACE_IMP(IExtractCallbackUI) + +#ifndef Z7_NO_CRYPTO + Z7_IFACE_COM7_IMP(ICryptoGetTextPassword) +#endif + +public: +#ifndef Z7_NO_CRYPTO + bool PasswordIsDefined; + UString Password; +#endif + + UInt64 NumArchives; + UInt64 NumArchiveErrors; + UInt64 NumFileErrors; + UInt64 NumFileErrorsInCurrentArchive; + + CStdOutStream *OutStream; + + UInt64 totalSize, completedSize, lastVal; + + ExtractProgressHandler ProgressHandler; + ExtractProgressWithFileHandler ProgressWithFileHandler; + UString CurrentFileName; + + CExtractCallbackConsole(): + PasswordIsDefined(false), + NumArchives(0), + NumArchiveErrors(0), + NumFileErrors(0), + NumFileErrorsInCurrentArchive(0), + OutStream(NULL), + totalSize((UInt64)(Int64)-1), + completedSize(0), + lastVal(0), + ProgressHandler(NULL), + ProgressWithFileHandler(NULL) + {} + + void Init() + { + NumArchives = 0; + NumArchiveErrors = 0; + NumFileErrors = 0; + NumFileErrorsInCurrentArchive = 0; + + totalSize = (UInt64)(Int64)-1; + completedSize = 0; + lastVal = 0; + ProgressHandler = NULL; + ProgressWithFileHandler = NULL; + } + + void UpdateProgress(); +}; + +#endif diff --git a/versions/25.01-bundle/CPP/7zip/UI/NSIS/Main.cpp b/versions/25.01-bundle/CPP/7zip/UI/NSIS/Main.cpp new file mode 100644 index 0000000..5db7482 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/UI/NSIS/Main.cpp @@ -0,0 +1,313 @@ +// Main.cpp + +#include "StdAfx.h" + +#include "../../../Common/Common.h" +#include "Common/MyInitGuid.h" + +#include "Common/CommandLineParser.h" +#include "Common/MyException.h" +#include "Common/IntToString.h" +#include "Common/StdOutStream.h" +#include "Common/StringConvert.h" +#include "Common/StringToInt.h" + +#include "Windows/FileDir.h" +#include "Windows/FileName.h" +#include "Windows/Defs.h" +#include "Windows/ErrorMsg.h" +#ifdef _WIN32 +#include "Windows/MemoryLock.h" +#endif + +#include "../../IPassword.h" +#include "../../ICoder.h" +#include "../Common/UpdateAction.h" +#include "../Common/Update.h" +#include "../Common/Extract.h" +#include "../Common/ArchiveCommandLine.h" +#include "../Common/ExitCode.h" +#ifdef EXTERNAL_CODECS +#include "../Common/LoadCodecs.h" +#endif + +//#include "../../Compress/LZMA_Alone/LzmaBenchCon.h" + +#include "../Console/OpenCallbackConsole.h" +#include "ExtractCallbackConsole.h" + +#include "../../MyVersion.h" + +#if defined( _WIN32) && defined( _7ZIP_LARGE_PAGES) +extern "C" +{ +#include "../../../../C/Alloc.h" +} +#endif + +using namespace NWindows; +using namespace NFile; +using namespace NCommandLineParser; + +HINSTANCE g_hInstance = 0; + +// --------------------------- +// exception messages + +#ifndef _WIN32 +static void GetArguments(int numArguments, const char *arguments[], UStringVector &parts) +{ + parts.Clear(); + for(int i = 0; i < numArguments; i++) + { + UString s = MultiByteToUnicodeString(arguments[i]); + parts.Add(s); + } +} +#endif + +#ifdef EXTERNAL_CODECS +static void PrintString(CStdOutStream &stdStream, const AString &s, int size) +{ + int len = s.Length(); + stdStream << s; + for (int i = len; i < size; i++) + stdStream << ' '; +} +#endif + +static inline char GetHex(Byte value) +{ + return (char)((value < 10) ? ('0' + value) : ('A' + (value - 10))); +} + +#ifdef _WIN32 +void SwitchFileAPIEncoding(BOOL ansi) +{ + if (ansi) + { + SetFileApisToOEM(); + } + else + { + SetFileApisToANSI(); + } +} +#endif + +int DoExtractArchive(UString archive, UString targetDir, bool overwrite, bool extractPaths, ExtractProgressHandler epc, const UStringVector& skipPatterns) +{ + CCodecs *codecs = new CCodecs; + CMyComPtr compressCodecsInfo = codecs; + HRESULT result = codecs->Load(); + + if (result != S_OK) + throw CSystemException(result); + + if (codecs->Formats.Size() == 0) throw -1; + + CIntVector formatIndices; + + if (!codecs->FindFormatForArchiveType(L"7z", formatIndices)) + { + throw -1; + } + + BOOL bApisAreAnsi = AreFileApisANSI(); + +#ifdef _WIN32 + if (bApisAreAnsi) + SwitchFileAPIEncoding(bApisAreAnsi); +#endif + + CExtractCallbackConsole *ecs = new CExtractCallbackConsole(); + CMyComPtr extractCallback = ecs; + ecs->Init(); + ecs->ProgressHandler = epc; // Imposta DOPO Init() + + COpenCallbackConsole openCallback; + + CExtractOptions eo; + eo.StdOutMode = false; + eo.PathMode = extractPaths?NExtract::NPathMode::kCurPaths:NExtract::NPathMode::kNoPaths; + eo.TestMode = false; + eo.OverwriteMode = overwrite?NExtract::NOverwriteMode::kOverwrite:NExtract::NOverwriteMode::kSkip; + eo.OutputDir = targetDir; + eo.YesToAll = true; +#ifdef COMPRESS_MT + CObjectVector prp; + eo.Properties = prp; +#endif + UString errorMessage; + CDecompressStat stat; + NWildcard::CCensor wildcardCensor; + NWildcard::CCensorPathProps props; + props.Recursive = true; + props.WildcardMatching = true; + wildcardCensor.AddItem(NWildcard::ECensorPathMode::k_FullPath, true, L"*", props); + for (unsigned i = 0; i < skipPatterns.Size(); i++) + { + const UString &p = skipPatterns[i]; + if (p.IsEmpty()) continue; + // Keep only single-name patterns: multi-segment ones land in a separate Pair + // and would be silently ignored by Pairs.Front().Head below. + if (p.Find(L'\\') >= 0 || p.Find(L'/') >= 0) continue; + wildcardCensor.AddItem(NWildcard::ECensorPathMode::k_FullPath, false, p, props); + } + UStringVector ArchivePathsSorted; + UStringVector ArchivePathsFullSorted; + ArchivePathsSorted.Add(archive); + UString fullPath; + NFile::NDir::MyGetFullPathName(archive, fullPath); + ArchivePathsFullSorted.Add(fullPath); + + UStringVector v1, v2; + v1.Add(fs2us(archive)); + v2.Add(fs2us(archive)); + const NWildcard::CCensorNode &wildcardCensorHead = + wildcardCensor.Pairs.Front().Head; + + result = Extract( + codecs, CObjectVector(), CIntVector(), + v1, v2, + wildcardCensorHead, + eo, ecs, ecs, ecs, +#ifndef Z7_SFX + NULL, // hash +#endif + errorMessage, stat); + +#ifdef _WIN32 + if (bApisAreAnsi) + SwitchFileAPIEncoding(!bApisAreAnsi); +#endif + + + if (!errorMessage.IsEmpty()) + { + if (result == S_OK) + result = E_FAIL; + } + + if (ecs->NumArchiveErrors != 0 || ecs->NumFileErrors != 0) + { + if (result != S_OK) + throw CSystemException(result); + + return NExitCode::kFatalError; + } + + if (result != S_OK) + throw CSystemException(result); + + return 0; +} + +int DoExtractArchiveWithFile(UString archive, UString targetDir, bool overwrite, bool extractPaths, ExtractProgressWithFileHandler epc, const UStringVector& skipPatterns) +{ + CCodecs *codecs = new CCodecs; + CMyComPtr compressCodecsInfo = codecs; + HRESULT result = codecs->Load(); + + if (result != S_OK) + throw CSystemException(result); + + if (codecs->Formats.Size() == 0) throw -1; + + CIntVector formatIndices; + + if (!codecs->FindFormatForArchiveType(L"7z", formatIndices)) + { + throw -1; + } + + BOOL bApisAreAnsi = AreFileApisANSI(); + +#ifdef _WIN32 + if (bApisAreAnsi) + SwitchFileAPIEncoding(bApisAreAnsi); +#endif + + CExtractCallbackConsole *ecs = new CExtractCallbackConsole(); + CMyComPtr extractCallback = ecs; + ecs->Init(); + ecs->ProgressWithFileHandler = epc; // Imposta DOPO Init() per evitare che venga resettato + + COpenCallbackConsole openCallback; + + CExtractOptions eo; + eo.StdOutMode = false; + eo.PathMode = extractPaths?NExtract::NPathMode::kCurPaths:NExtract::NPathMode::kNoPaths; + eo.TestMode = false; + eo.OverwriteMode = overwrite?NExtract::NOverwriteMode::kOverwrite:NExtract::NOverwriteMode::kSkip; + eo.OutputDir = targetDir; + eo.YesToAll = true; +#ifdef COMPRESS_MT + CObjectVector prp; + eo.Properties = prp; +#endif + UString errorMessage; + CDecompressStat stat; + NWildcard::CCensor wildcardCensor; + NWildcard::CCensorPathProps props; + props.Recursive = true; + props.WildcardMatching = true; + wildcardCensor.AddItem(NWildcard::ECensorPathMode::k_FullPath, true, L"*", props); + for (unsigned i = 0; i < skipPatterns.Size(); i++) + { + const UString &p = skipPatterns[i]; + if (p.IsEmpty()) continue; + // Keep only single-name patterns: multi-segment ones land in a separate Pair + // and would be silently ignored by Pairs.Front().Head below. + if (p.Find(L'\\') >= 0 || p.Find(L'/') >= 0) continue; + wildcardCensor.AddItem(NWildcard::ECensorPathMode::k_FullPath, false, p, props); + } + UStringVector ArchivePathsSorted; + UStringVector ArchivePathsFullSorted; + ArchivePathsSorted.Add(archive); + UString fullPath; + NFile::NDir::MyGetFullPathName(archive, fullPath); + ArchivePathsFullSorted.Add(fullPath); + + UStringVector v1, v2; + v1.Add(fs2us(archive)); + v2.Add(fs2us(archive)); + const NWildcard::CCensorNode &wildcardCensorHead = + wildcardCensor.Pairs.Front().Head; + + result = Extract( + codecs, CObjectVector(), CIntVector(), + v1, v2, + wildcardCensorHead, + eo, ecs, ecs, ecs, +#ifndef Z7_SFX + NULL, // hash +#endif + errorMessage, stat); + +#ifdef _WIN32 + if (bApisAreAnsi) + SwitchFileAPIEncoding(!bApisAreAnsi); +#endif + + + if (!errorMessage.IsEmpty()) + { + if (result == S_OK) + result = E_FAIL; + } + + if (ecs->NumArchiveErrors != 0 || ecs->NumFileErrors != 0) + { + if (result != S_OK) + throw CSystemException(result); + + return NExitCode::kFatalError; + } + + if (result != S_OK) + throw CSystemException(result); + + return 0; +} + diff --git a/versions/25.01-bundle/CPP/7zip/UI/NSIS/MainAr.cpp b/versions/25.01-bundle/CPP/7zip/UI/NSIS/MainAr.cpp new file mode 100644 index 0000000..ba15c26 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/UI/NSIS/MainAr.cpp @@ -0,0 +1,109 @@ +// MainAr.cpp + +#include "StdAfx.h" + +// #include + +#include "../../../Common/Common.h" + +#include "Windows/ErrorMsg.h" + +#include "Common/StdOutStream.h" +#include "Common/NewHandler.h" +#include "Common/MyException.h" +#include "Common/StringConvert.h" + +#include "../Common/ExitCode.h" +#include "../Common/ArchiveCommandLine.h" +#include "ExtractCallbackConsole.h" +#include "NSISBreak.h" + +using namespace NWindows; + +#ifdef _WIN32 + +#pragma warning(disable : 4996) + +#ifndef _UNICODE +bool g_IsNT = false; +#endif +#if !defined(_UNICODE) || !defined(_WIN64) +static inline bool IsItWindowsNT() +{ + OSVERSIONINFO versionInfo; + versionInfo.dwOSVersionInfoSize = sizeof(versionInfo); + if (!::GetVersionEx(&versionInfo)) + return false; + return (versionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT); +} +#endif +#endif + +void DoInitialize() +{ + #ifdef _WIN32 + + #ifdef _UNICODE + #ifndef _WIN64 + if (!IsItWindowsNT()) + { + //(*g_StdStream) << "This program requires Windows NT/2000/2003/2008/XP/Vista"; + // return NExitCode::kFatalError; + return; + } + #endif + #else + g_IsNT = IsItWindowsNT(); + #endif + + #endif +} + + +extern int DoExtractArchive(UString archive, UString targetDir, bool overwrite, bool extractPathes, ExtractProgressHandler epc, const UStringVector& skipPatterns); +extern int DoExtractArchiveWithFile(UString archive, UString targetDir, bool overwrite, bool extractPathes, ExtractProgressWithFileHandler epc, const UStringVector& skipPatterns); + +int DoExtract(LPTSTR archive, LPTSTR dir, bool overwrite, bool expath, ExtractProgressHandler epc, const UStringVector& skipPatterns) +{ + if (!archive || !dir) return -1; + int res = 0; + try + { +#ifdef UNICODE + UString uarchive(archive); + UString udir(dir); +#else + UString uarchive = MultiByteToUnicodeString(AString(archive)); + UString udir = MultiByteToUnicodeString(AString(dir)); +#endif + res = DoExtractArchive(uarchive, udir, overwrite, expath, epc, skipPatterns); + } + catch(...) + { + return -1; + } + return res; +} + +int DoExtractWithFile(LPTSTR archive, LPTSTR dir, bool overwrite, bool expath, ExtractProgressWithFileHandler epc, const UStringVector& skipPatterns) +{ + if (!archive || !dir) return -1; + int res = 0; + try + { +#ifdef UNICODE + UString uarchive(archive); + UString udir(dir); +#else + UString uarchive = MultiByteToUnicodeString(AString(archive)); + UString udir = MultiByteToUnicodeString(AString(dir)); +#endif + res = DoExtractArchiveWithFile(uarchive, udir, overwrite, expath, epc, skipPatterns); + } + catch(...) + { + return -1; + } + return res; +} + diff --git a/versions/25.01-bundle/CPP/7zip/UI/NSIS/NSISBreak.cpp b/versions/25.01-bundle/CPP/7zip/UI/NSIS/NSISBreak.cpp new file mode 100644 index 0000000..93ac0d5 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/UI/NSIS/NSISBreak.cpp @@ -0,0 +1,31 @@ +// ConsoleClose.cpp + +#include "StdAfx.h" + +#include "NSISBreak.h" + +static int g_BreakCounter = 0; + +namespace NNSISBreak { + +void SendBreakSignal() +{ + g_BreakCounter++; +} + +bool TestBreakSignal() +{ + /* + if (g_BreakCounter > 0) + return true; + */ + return (g_BreakCounter > 0); +} + +void CheckCtrlBreak() +{ + if (TestBreakSignal()) + throw CCtrlBreakException(); +} + +} diff --git a/versions/25.01-bundle/CPP/7zip/UI/NSIS/NSISBreak.h b/versions/25.01-bundle/CPP/7zip/UI/NSIS/NSISBreak.h new file mode 100644 index 0000000..ca43f20 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/UI/NSIS/NSISBreak.h @@ -0,0 +1,16 @@ +#ifndef __NSISBREAKUTILS_H +#define __NSISBREAKUTILS_H + +namespace NNSISBreak { + +bool TestBreakSignal(); +void SendBreakSignal(); + +class CCtrlBreakException +{}; + +void CheckCtrlBreak(); + +} + +#endif diff --git a/versions/25.01-bundle/CPP/7zip/UI/NSIS/StdAfx.h b/versions/25.01-bundle/CPP/7zip/UI/NSIS/StdAfx.h new file mode 100644 index 0000000..9f06ac9 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/UI/NSIS/StdAfx.h @@ -0,0 +1,15 @@ +// StdAfx.h + +#ifndef __STDAFX_H +#define __STDAFX_H + +#ifdef _WIN32 + #if defined(__MINGW32__) || defined(__MINGW64__) + #include + #else + #include + #endif +#endif +#include "../../Bundles/Nsis7z/pluginapi.h" + +#endif diff --git a/versions/25.01-bundle/CPP/7zip/UI/NSIS/UserInputUtils2.cpp b/versions/25.01-bundle/CPP/7zip/UI/NSIS/UserInputUtils2.cpp new file mode 100644 index 0000000..85d6d4f --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/UI/NSIS/UserInputUtils2.cpp @@ -0,0 +1,60 @@ +// UserInputUtils.cpp + +#include "StdAfx.h" + +#include "Common/StdInStream.h" +#include "Common/StringConvert.h" + +#include "UserInputUtils2.h" + +static const char kYes = 'Y'; +static const char kNo = 'N'; +static const char kYesAll = 'A'; +static const char kNoAll = 'S'; +static const char kAutoRename = 'U'; +static const char kQuit = 'Q'; + +static const char *kFirstQuestionMessage = "?\n"; +static const char *kHelpQuestionMessage = + "(Y)es / (N)o / (A)lways / (S)kip all / A(u)to rename / (Q)uit? "; + +// return true if pressed Quite; +// in: anAll +// out: anAll, anYes; + +NUserAnswerMode::EEnum ScanUserYesNoAllQuit2(CStdOutStream *outStream) +{ + (*outStream) << kFirstQuestionMessage; + for(;;) + { + (*outStream) << kHelpQuestionMessage; + AString scannedString; + g_StdIn.ScanAStringUntilNewLine(scannedString); + scannedString.Trim(); + if(!scannedString.IsEmpty()) + switch(::MyCharUpper(scannedString[0])) + { + case kYes: + return NUserAnswerMode::kYes; + case kNo: + return NUserAnswerMode::kNo; + case kYesAll: + return NUserAnswerMode::kYesAll; + case kNoAll: + return NUserAnswerMode::kNoAll; + case kAutoRename: + return NUserAnswerMode::kAutoRename; + case kQuit: + return NUserAnswerMode::kQuit; + } + } +} + +UString GetPassword(CStdOutStream *outStream) +{ + (*outStream) << "\nEnter password:"; + outStream->Flush(); + AString oemPassword; + g_StdIn.ScanAStringUntilNewLine(oemPassword); + return MultiByteToUnicodeString(oemPassword, CP_OEMCP); +} diff --git a/versions/25.01-bundle/CPP/7zip/UI/NSIS/UserInputUtils2.h b/versions/25.01-bundle/CPP/7zip/UI/NSIS/UserInputUtils2.h new file mode 100644 index 0000000..d8c3de0 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/UI/NSIS/UserInputUtils2.h @@ -0,0 +1,24 @@ +// UserInputUtils.h + +#ifndef __USERINPUTUTILS_H +#define __USERINPUTUTILS_H + +#include "Common/StdOutStream.h" + +namespace NUserAnswerMode { + +enum EEnum +{ + kYes, + kNo, + kYesAll, + kNoAll, + kAutoRename, + kQuit +}; +} + +NUserAnswerMode::EEnum ScanUserYesNoAllQuit2(CStdOutStream *outStream); +UString GetPassword(CStdOutStream *outStream); + +#endif diff --git a/versions/25.01-bundle/CPP/7zip/UI/makefile b/versions/25.01-bundle/CPP/7zip/UI/makefile new file mode 120000 index 0000000..b67ccc8 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/UI/makefile @@ -0,0 +1 @@ +../../../../25.01/CPP/7zip/UI/makefile \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/cmpl_clang.mak b/versions/25.01-bundle/CPP/7zip/cmpl_clang.mak new file mode 120000 index 0000000..9becbdb --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/cmpl_clang.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/cmpl_clang.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/cmpl_clang_arm64.mak b/versions/25.01-bundle/CPP/7zip/cmpl_clang_arm64.mak new file mode 120000 index 0000000..fe2982a --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/cmpl_clang_arm64.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/cmpl_clang_arm64.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/cmpl_clang_x64.mak b/versions/25.01-bundle/CPP/7zip/cmpl_clang_x64.mak new file mode 120000 index 0000000..d5e59d6 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/cmpl_clang_x64.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/cmpl_clang_x64.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/cmpl_clang_x86.mak b/versions/25.01-bundle/CPP/7zip/cmpl_clang_x86.mak new file mode 120000 index 0000000..737193f --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/cmpl_clang_x86.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/cmpl_clang_x86.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/cmpl_gcc.mak b/versions/25.01-bundle/CPP/7zip/cmpl_gcc.mak new file mode 120000 index 0000000..7961a4b --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/cmpl_gcc.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/cmpl_gcc.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/cmpl_gcc_arm.mak b/versions/25.01-bundle/CPP/7zip/cmpl_gcc_arm.mak new file mode 120000 index 0000000..63882bc --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/cmpl_gcc_arm.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/cmpl_gcc_arm.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/cmpl_gcc_arm64.mak b/versions/25.01-bundle/CPP/7zip/cmpl_gcc_arm64.mak new file mode 120000 index 0000000..493f31c --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/cmpl_gcc_arm64.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/cmpl_gcc_arm64.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/cmpl_gcc_x64.mak b/versions/25.01-bundle/CPP/7zip/cmpl_gcc_x64.mak new file mode 120000 index 0000000..33a3711 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/cmpl_gcc_x64.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/cmpl_gcc_x64.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/cmpl_gcc_x86.mak b/versions/25.01-bundle/CPP/7zip/cmpl_gcc_x86.mak new file mode 120000 index 0000000..7ce68af --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/cmpl_gcc_x86.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/cmpl_gcc_x86.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/cmpl_mac_arm64.mak b/versions/25.01-bundle/CPP/7zip/cmpl_mac_arm64.mak new file mode 120000 index 0000000..b4142dd --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/cmpl_mac_arm64.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/cmpl_mac_arm64.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/cmpl_mac_x64.mak b/versions/25.01-bundle/CPP/7zip/cmpl_mac_x64.mak new file mode 120000 index 0000000..3cc6556 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/cmpl_mac_x64.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/cmpl_mac_x64.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/makefile b/versions/25.01-bundle/CPP/7zip/makefile new file mode 120000 index 0000000..65313f5 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/makefile @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/makefile \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/var_clang.mak b/versions/25.01-bundle/CPP/7zip/var_clang.mak new file mode 120000 index 0000000..cf97b1d --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/var_clang.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/var_clang.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/var_clang_arm64.mak b/versions/25.01-bundle/CPP/7zip/var_clang_arm64.mak new file mode 120000 index 0000000..e99053a --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/var_clang_arm64.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/var_clang_arm64.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/var_clang_x64.mak b/versions/25.01-bundle/CPP/7zip/var_clang_x64.mak new file mode 120000 index 0000000..ab3ad2f --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/var_clang_x64.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/var_clang_x64.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/var_clang_x86.mak b/versions/25.01-bundle/CPP/7zip/var_clang_x86.mak new file mode 120000 index 0000000..c251055 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/var_clang_x86.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/var_clang_x86.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/var_gcc.mak b/versions/25.01-bundle/CPP/7zip/var_gcc.mak new file mode 120000 index 0000000..def7ad3 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/var_gcc.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/var_gcc.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/var_gcc_arm.mak b/versions/25.01-bundle/CPP/7zip/var_gcc_arm.mak new file mode 120000 index 0000000..7b999b4 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/var_gcc_arm.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/var_gcc_arm.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/var_gcc_arm64.mak b/versions/25.01-bundle/CPP/7zip/var_gcc_arm64.mak new file mode 120000 index 0000000..cd699ef --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/var_gcc_arm64.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/var_gcc_arm64.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/var_gcc_x64.mak b/versions/25.01-bundle/CPP/7zip/var_gcc_x64.mak new file mode 120000 index 0000000..ccc76ef --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/var_gcc_x64.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/var_gcc_x64.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/var_gcc_x86.mak b/versions/25.01-bundle/CPP/7zip/var_gcc_x86.mak new file mode 120000 index 0000000..37079c1 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/var_gcc_x86.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/var_gcc_x86.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/var_mac_arm64.mak b/versions/25.01-bundle/CPP/7zip/var_mac_arm64.mak new file mode 120000 index 0000000..a298d2e --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/var_mac_arm64.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/var_mac_arm64.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/var_mac_x64.mak b/versions/25.01-bundle/CPP/7zip/var_mac_x64.mak new file mode 120000 index 0000000..126cc28 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/var_mac_x64.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/var_mac_x64.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/warn_clang.mak b/versions/25.01-bundle/CPP/7zip/warn_clang.mak new file mode 120000 index 0000000..91fcbd9 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/warn_clang.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/warn_clang.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/warn_clang_mac.mak b/versions/25.01-bundle/CPP/7zip/warn_clang_mac.mak new file mode 120000 index 0000000..fb15e0a --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/warn_clang_mac.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/warn_clang_mac.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/7zip/warn_gcc.mak b/versions/25.01-bundle/CPP/7zip/warn_gcc.mak new file mode 120000 index 0000000..8259503 --- /dev/null +++ b/versions/25.01-bundle/CPP/7zip/warn_gcc.mak @@ -0,0 +1 @@ +../../../25.01/CPP/7zip/warn_gcc.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/Build.mak b/versions/25.01-bundle/CPP/Build.mak new file mode 120000 index 0000000..c2883e7 --- /dev/null +++ b/versions/25.01-bundle/CPP/Build.mak @@ -0,0 +1 @@ +../../25.01/CPP/Build.mak \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/Common b/versions/25.01-bundle/CPP/Common new file mode 120000 index 0000000..78213eb --- /dev/null +++ b/versions/25.01-bundle/CPP/Common @@ -0,0 +1 @@ +../../25.01/CPP/Common \ No newline at end of file diff --git a/versions/25.01-bundle/CPP/Windows b/versions/25.01-bundle/CPP/Windows new file mode 120000 index 0000000..4715b73 --- /dev/null +++ b/versions/25.01-bundle/CPP/Windows @@ -0,0 +1 @@ +../../25.01/CPP/Windows \ No newline at end of file