diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 32c9b2eede..e55af6484b 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -183,6 +183,7 @@ jobs:
         with:
           update: true
           msystem: ${{ matrix.sys }}
+          install: unzip
           pacboy: toolchain:p
 
       - name: Setup clang build
diff --git a/misc/nightly/plugins.sh b/misc/nightly/plugins.sh
index 67d53f5440..dcd69ae191 100755
--- a/misc/nightly/plugins.sh
+++ b/misc/nightly/plugins.sh
@@ -34,6 +34,14 @@ mkdir -p outfinalnewARM64/Plugins
 
 cd plugins
 
+VERSION_7Z=24.08
+curl -o arclite/7z/7z-${VERSION_7Z}.zip https://github.com/FarGroup/thirdparty/blob/master/7z-${VERSION_7Z}.zip
+unzip arclite/7z/7z-${VERSION_7Z}.zip -d arclite/7z/${VERSION_7Z}
+
+VERSION_LUASDK=20240301
+curl -o luamacro/luasdk/LuaSDK-${VERSION_LUASDK}.zip https://github.com/FarGroup/thirdparty/blob/master/LuaSDK-${VERSION_LUASDK}.zip
+unzip luamacro/luasdk/LuaSDK-${VERSION_LUASDK}.zip -d luamacro/luasdk/${VERSION_LUASDK}
+
 MASKS="*.dll *.hlf *.lng *.farconfig *.lua *.map *.pdb"
 
 ( \
diff --git a/plugins/arclite/7z/dll/32/7z.dll b/plugins/arclite/7z/dll/32/7z.dll
deleted file mode 100644
index ad2ecc37a9..0000000000
Binary files a/plugins/arclite/7z/dll/32/7z.dll and /dev/null differ
diff --git a/plugins/arclite/7z/dll/64/7z.dll b/plugins/arclite/7z/dll/64/7z.dll
deleted file mode 100644
index f79493cd4a..0000000000
Binary files a/plugins/arclite/7z/dll/64/7z.dll and /dev/null differ
diff --git a/plugins/arclite/7z/dll/ARM64/7z.dll b/plugins/arclite/7z/dll/ARM64/7z.dll
deleted file mode 100644
index b5964663f3..0000000000
Binary files a/plugins/arclite/7z/dll/ARM64/7z.dll and /dev/null differ
diff --git a/plugins/arclite/7z/sfx/7z.sfx b/plugins/arclite/7z/sfx/7z.sfx
deleted file mode 100644
index 5ffbfe51d3..0000000000
Binary files a/plugins/arclite/7z/sfx/7z.sfx and /dev/null differ
diff --git a/plugins/arclite/7z/sfx/7zCon.sfx b/plugins/arclite/7z/sfx/7zCon.sfx
deleted file mode 100644
index 23d3e94e41..0000000000
Binary files a/plugins/arclite/7z/sfx/7zCon.sfx and /dev/null differ
diff --git a/plugins/arclite/7z/sfx/7zS2.sfx b/plugins/arclite/7z/sfx/7zS2.sfx
deleted file mode 100644
index 30c4361456..0000000000
Binary files a/plugins/arclite/7z/sfx/7zS2.sfx and /dev/null differ
diff --git a/plugins/arclite/7z/sfx/7zS2con.sfx b/plugins/arclite/7z/sfx/7zS2con.sfx
deleted file mode 100644
index f2cfdf1a8b..0000000000
Binary files a/plugins/arclite/7z/sfx/7zS2con.sfx and /dev/null differ
diff --git a/plugins/arclite/7z/sfx/7zSD.sfx b/plugins/arclite/7z/sfx/7zSD.sfx
deleted file mode 100644
index 14460c753b..0000000000
Binary files a/plugins/arclite/7z/sfx/7zSD.sfx and /dev/null differ
diff --git a/plugins/arclite/arclite.vcxproj b/plugins/arclite/arclite.vcxproj
index 2c69e6e546..7ebe4d7f9a 100644
--- a/plugins/arclite/arclite.vcxproj
+++ b/plugins/arclite/arclite.vcxproj
@@ -10,7 +10,8 @@
     <DirBit Condition="'$(Platform)'=='Win32'">32</DirBit>
     <DirBit Condition="'$(Platform)'=='x64'">64</DirBit>
     <DirBit Condition="'$(Platform)'=='ARM64'">ARM64</DirBit>
-    <Release7ZDll>7z\dll\$(DirBit)\7z.dll</Release7ZDll>
+    <Version7Z>24.08</Version7Z>
+    <Release7ZDll>7z\$(Version7Z)\dll\$(DirBit)\7z.dll</Release7ZDll>
     <Debug7ZDll>7z\src\CPP\7zip\Bundles\Format7zF\Debug\$(DirBit)\7z.dll</Debug7ZDll>
     <IsDebug>0</IsDebug>
     <IsDebug Condition="'$(Configuration)'=='Debug' or '$(Configuration)'=='Debug_ASAN'">1</IsDebug>
@@ -23,6 +24,13 @@
     <CopyFileToFolders Condition="'$(IsDebug)'=='0'" Include="$(Release7ZDll)" />
     <CopyFileToFolders Condition="'$(IsDebug)'=='1' and  Exists('$(Debug7ZDll)') " Include="$(Debug7ZDll)" />
     <CopyFileToFolders Condition="'$(IsDebug)'=='1' and !Exists('$(Debug7ZDll)') " Include="$(Release7ZDll)" />
-    <CopyFileToFolders Include="7z\sfx\*.sfx" />
+    <CopyFileToFolders Include="7z\$(Version7Z)\sfx\*.sfx" />
   </ItemGroup>
+  <ItemDefinitionGroup>
+    <PreBuildEvent>
+      <Message>Downloading 7-Zip binaries</Message>
+      <Command>if not exist $(Release7ZDll) powershell -c "Invoke-WebRequest -Uri 'https://github.com/FarGroup/thirdparty/blob/master/7z-$(Version7Z).zip' -OutFile '7z\7z-$(Version7Z).zip'; Expand-Archive 7z\7z-$(Version7Z).zip -DestinationPath 7z\$(Version7Z)"
+</Command>
+    </PreBuildEvent>
+  </ItemDefinitionGroup>
 </Project>
diff --git a/plugins/arclite/makefile_gcc b/plugins/arclite/makefile_gcc
index 47a66d124e..00701e26a9 100644
--- a/plugins/arclite/makefile_gcc
+++ b/plugins/arclite/makefile_gcc
@@ -1,4 +1,5 @@
 NAME = arclite
+VERSION_7Z=24.08
 
 PRECOMPILED_HEADER=headers
 DISABLEAUTODEPS = 1
@@ -29,11 +30,11 @@ SRCS = \
 ifdef DEBUG_7Z
 7ZDLL = 7z/src/CPP/7zip/Bundles/Format7zF/Debug/$(DIRBIT)/7z.dll
 else
-7ZDLL = 7z/dll/$(DIRBIT)/7z.dll
+7ZDLL = 7z/$(VERSION_7Z)/dll/$(DIRBIT)/7z.dll
 endif
 
 DOCS = \
-	7z/sfx/*.sfx \
+	7z/$(VERSION_7Z)/sfx/*.sfx \
 	arclite.xml \
 	$(7ZDLL) \
 
@@ -42,7 +43,7 @@ include ../makefile_gcc_def_inc
 ifndef BUILD
 
 .PHONY: all
-all: depfile
+all: depfile $(7ZDLL)
 	$(MAKE) -f makefile_gcc $(MK_FLAGS) all BUILD=1 USEDEP=1
 
 .PHONY: depfile
@@ -51,6 +52,10 @@ depfile:
 	@echo Rebuilding dependencies
 	$(LS) *.cpp *.hpp *.rc | $(GAWK) -f $(FARDIR)/scripts/mkdep.awk -v compiler=gcc - > $(OBJDIR)/$(NAME).dep
 
+$(7ZDLL):
+	@echo Downloading 7-Zip binaries
+	curl -o 7z/7z-$(VERSION_7Z).zip https://github.com/FarGroup/thirdparty/blob/master/7z-$(VERSION_7Z).zip && unzip 7z/7z-$(VERSION_7Z).zip -d 7z/$(VERSION_7Z)
+
 clean:
 	$(MAKE) -f makefile_gcc $(MK_FLAGS) clean BUILD=1
 
diff --git a/plugins/arclite/makefile_vc b/plugins/arclite/makefile_vc
index 4312c0afcf..50aa4b5f84 100644
--- a/plugins/arclite/makefile_vc
+++ b/plugins/arclite/makefile_vc
@@ -1,4 +1,5 @@
 NAME = arclite
+VERSION_7Z=24.08
 
 PRECOMPILED_HEADER=headers
 
@@ -28,11 +29,11 @@ LINK_OBJS = \
 !ifdef DEBUG_7Z
 7ZDLL = 7z\src\CPP\7zip\Bundles\Format7zF\Debug\$(DIRBIT)\7z.dll
 !else
-7ZDLL = 7z\dll\$(DIRBIT)\7z.dll
+7ZDLL = 7z\$(VERSION_7Z)\dll\$(DIRBIT)\7z.dll
 !endif
 
 DOCS = \
-	7z\sfx\*.sfx \
+	7z\$(VERSION_7Z)\sfx\*.sfx \
 	arclite.xml \
 	$(7ZDLL) \
 
@@ -41,7 +42,7 @@ DOCS = \
 !ifndef BUILD
 
 .PHONY: all
-all: depfile
+all: depfile $(7ZDLL)
 	$(MAKE) -nologo -f makefile_vc -$(MAKEFLAGS) all BUILD=1 USEDEP=1
 
 .PHONY: depfile
@@ -50,6 +51,11 @@ depfile:
 	@echo Rebuilding dependencies
 	dir /b *.cpp *.hpp *.rc | "$(FARDIR)\tools\gawk" -f $(FARDIR)\scripts\mkdep.awk - > $(INTDIR)\$(NAME).dep
 
+$(7ZDLL):
+	@echo Downloading 7-Zip binaries
+	powershell -c "Invoke-WebRequest -Uri 'https://github.com/FarGroup/thirdparty/blob/master/7z-$(VERSION_7Z).zip' -OutFile '7z\7z-$(VERSION_7Z).zip'; Expand-Archive 7z\7z-$(VERSION_7Z).zip -DestinationPath 7z\$(VERSION_7Z)"
+
+
 clean:
 	$(MAKE) -nologo -f makefile_vc -$(MAKEFLAGS) clean BUILD=1
 
diff --git a/plugins/luamacro/luafar3.vcxproj b/plugins/luamacro/luafar3.vcxproj
index 8704e7cb8c..bd01a876ff 100644
--- a/plugins/luamacro/luafar3.vcxproj
+++ b/plugins/luamacro/luafar3.vcxproj
@@ -9,6 +9,7 @@
   <PropertyGroup Label="UserMacros">
     <ProjectSpecificOutDirName>Plugins\..</ProjectSpecificOutDirName>
     <ProjectSpecificIntDirName>Plugins\luamacro\$(ProjectName)</ProjectSpecificIntDirName>
+    <VersionLuaSDK>20240301</VersionLuaSDK>
     <DirBit Condition="'$(Platform)'=='Win32'">32</DirBit>
     <DirBit Condition="'$(Platform)'=='x64'">64</DirBit>
     <DirBit Condition="'$(Platform)'=='ARM64'">ARM64</DirBit>
@@ -26,7 +27,7 @@
     </ClCompile>
     <Link>
       <AdditionalDependencies>$(LuaLib).lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>luasdk/$(DirBit)</AdditionalLibraryDirectories>
+      <AdditionalLibraryDirectories>luasdk/$(VersionLuaSDK)/$(DirBit);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <ModuleDefinitionFile />
     </Link>
     <PreBuildEvent>
@@ -72,9 +73,9 @@
     <ClInclude Include="luasdk\include\lualib.h" />
   </ItemGroup>
   <ItemGroup>
-    <CopyFileToFolders Include="luasdk\$(DirBit)\$(LuaLib).dll" />
-    <CopyFileToFolders Include="luasdk\$(DirBit)\lpeg.dll" />
-    <CopyFileToFolders Include="luasdk\32\legacy\$(LuaLib).dll">
+    <CopyFileToFolders Include="luasdk\$(VersionLuaSDK)\$(DirBit)\$(LuaLib).dll" />
+    <CopyFileToFolders Include="luasdk\$(VersionLuaSDK)\$(DirBit)\lpeg.dll" />
+    <CopyFileToFolders Include="luasdk\$(VersionLuaSDK)\32\legacy\$(LuaLib).dll">
       <ExcludedFromBuild Condition="'$(Platform)'!='Win32'">true</ExcludedFromBuild>
     </CopyFileToFolders>
   </ItemGroup>
diff --git a/plugins/luamacro/luamacro.vcxproj b/plugins/luamacro/luamacro.vcxproj
index 2e20ceb490..b1c682677e 100644
--- a/plugins/luamacro/luamacro.vcxproj
+++ b/plugins/luamacro/luamacro.vcxproj
@@ -5,6 +5,13 @@
     <ProjectGuid>{06BE01E6-7DC0-4D83-877C-B7ADE32175F8}</ProjectGuid>
     <ConfigurationType>DynamicLibrary</ConfigurationType>
   </PropertyGroup>
+  <PropertyGroup Label="UserMacros">
+    <VersionLuaSDK>20240301</VersionLuaSDK>
+    <DirBit Condition="'$(Platform)'=='Win32'">32</DirBit>
+    <DirBit Condition="'$(Platform)'=='x64'">64</DirBit>
+    <DirBit Condition="'$(Platform)'=='ARM64'">ARM64</DirBit>
+    <LuaLib>lua51</LuaLib>
+  </PropertyGroup>
   <ImportGroup Label="PropertySheets">
     <Import Project="$(ProjectDir)..\..\_build\vc\config\common.plugins.main.props" />
     <Import Project="$(ProjectDir)..\..\_build\vc\config\common.plugins.rules.copy.props" />
@@ -17,10 +24,7 @@
     </ClCompile>
     <Link>
       <AdditionalDependencies>lua51.lib;luafar3.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(IntDir)luafar3;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalLibraryDirectories Condition="'$(Platform)'=='x64'">luasdk/64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalLibraryDirectories Condition="'$(Platform)'=='Win32'">luasdk/32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalLibraryDirectories Condition="'$(Platform)'=='ARM64'">luasdk/ARM64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalLibraryDirectories>$(IntDir)luafar3;luasdk/$(VersionLuaSDK)/$(DirBit);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>
diff --git a/plugins/luamacro/luasdk/32/legacy/lua51.dll b/plugins/luamacro/luasdk/32/legacy/lua51.dll
deleted file mode 100644
index c1276da654..0000000000
Binary files a/plugins/luamacro/luasdk/32/legacy/lua51.dll and /dev/null differ
diff --git a/plugins/luamacro/luasdk/32/lpeg.dll b/plugins/luamacro/luasdk/32/lpeg.dll
deleted file mode 100644
index 80e39f716a..0000000000
Binary files a/plugins/luamacro/luasdk/32/lpeg.dll and /dev/null differ
diff --git a/plugins/luamacro/luasdk/32/lua.exe b/plugins/luamacro/luasdk/32/lua.exe
deleted file mode 100644
index b0d9547ad5..0000000000
Binary files a/plugins/luamacro/luasdk/32/lua.exe and /dev/null differ
diff --git a/plugins/luamacro/luasdk/32/lua51.dll b/plugins/luamacro/luasdk/32/lua51.dll
deleted file mode 100644
index 55d7af2532..0000000000
Binary files a/plugins/luamacro/luasdk/32/lua51.dll and /dev/null differ
diff --git a/plugins/luamacro/luasdk/32/lua51.lib b/plugins/luamacro/luasdk/32/lua51.lib
deleted file mode 100644
index 983ac6f6fa..0000000000
Binary files a/plugins/luamacro/luasdk/32/lua51.lib and /dev/null differ
diff --git a/plugins/luamacro/luasdk/32/lua51.rio.dll b/plugins/luamacro/luasdk/32/lua51.rio.dll
deleted file mode 100644
index 018f79907d..0000000000
Binary files a/plugins/luamacro/luasdk/32/lua51.rio.dll and /dev/null differ
diff --git a/plugins/luamacro/luasdk/32/luajit.exe b/plugins/luamacro/luasdk/32/luajit.exe
deleted file mode 100644
index 56af2103be..0000000000
Binary files a/plugins/luamacro/luasdk/32/luajit.exe and /dev/null differ
diff --git a/plugins/luamacro/luasdk/64/lpeg.dll b/plugins/luamacro/luasdk/64/lpeg.dll
deleted file mode 100644
index ae50d01dc7..0000000000
Binary files a/plugins/luamacro/luasdk/64/lpeg.dll and /dev/null differ
diff --git a/plugins/luamacro/luasdk/64/lua.exe b/plugins/luamacro/luasdk/64/lua.exe
deleted file mode 100644
index 757709d98a..0000000000
Binary files a/plugins/luamacro/luasdk/64/lua.exe and /dev/null differ
diff --git a/plugins/luamacro/luasdk/64/lua51.dll b/plugins/luamacro/luasdk/64/lua51.dll
deleted file mode 100644
index 37e050d616..0000000000
Binary files a/plugins/luamacro/luasdk/64/lua51.dll and /dev/null differ
diff --git a/plugins/luamacro/luasdk/64/lua51.lib b/plugins/luamacro/luasdk/64/lua51.lib
deleted file mode 100644
index b01634f3e9..0000000000
Binary files a/plugins/luamacro/luasdk/64/lua51.lib and /dev/null differ
diff --git a/plugins/luamacro/luasdk/64/lua51.rio.dll b/plugins/luamacro/luasdk/64/lua51.rio.dll
deleted file mode 100644
index 428caf2cb4..0000000000
Binary files a/plugins/luamacro/luasdk/64/lua51.rio.dll and /dev/null differ
diff --git a/plugins/luamacro/luasdk/64/luajit.exe b/plugins/luamacro/luasdk/64/luajit.exe
deleted file mode 100644
index 789ea901c0..0000000000
Binary files a/plugins/luamacro/luasdk/64/luajit.exe and /dev/null differ
diff --git a/plugins/luamacro/luasdk/ARM32/lpeg.dll b/plugins/luamacro/luasdk/ARM32/lpeg.dll
deleted file mode 100644
index 8010ea2e16..0000000000
Binary files a/plugins/luamacro/luasdk/ARM32/lpeg.dll and /dev/null differ
diff --git a/plugins/luamacro/luasdk/ARM32/lua51.dll b/plugins/luamacro/luasdk/ARM32/lua51.dll
deleted file mode 100644
index 36e181c000..0000000000
Binary files a/plugins/luamacro/luasdk/ARM32/lua51.dll and /dev/null differ
diff --git a/plugins/luamacro/luasdk/ARM32/lua51.lib b/plugins/luamacro/luasdk/ARM32/lua51.lib
deleted file mode 100644
index 098d28d5c9..0000000000
Binary files a/plugins/luamacro/luasdk/ARM32/lua51.lib and /dev/null differ
diff --git a/plugins/luamacro/luasdk/ARM64/lpeg.dll b/plugins/luamacro/luasdk/ARM64/lpeg.dll
deleted file mode 100644
index c668898918..0000000000
Binary files a/plugins/luamacro/luasdk/ARM64/lpeg.dll and /dev/null differ
diff --git a/plugins/luamacro/luasdk/ARM64/lua51.dll b/plugins/luamacro/luasdk/ARM64/lua51.dll
deleted file mode 100644
index 7d7f275167..0000000000
Binary files a/plugins/luamacro/luasdk/ARM64/lua51.dll and /dev/null differ
diff --git a/plugins/luamacro/luasdk/ARM64/lua51.lib b/plugins/luamacro/luasdk/ARM64/lua51.lib
deleted file mode 100644
index b2da4d7702..0000000000
Binary files a/plugins/luamacro/luasdk/ARM64/lua51.lib and /dev/null differ
diff --git a/plugins/luamacro/luasdk/build_moonscript.zip b/plugins/luamacro/luasdk/build_moonscript.zip
deleted file mode 100644
index 936ff26fbb..0000000000
Binary files a/plugins/luamacro/luasdk/build_moonscript.zip and /dev/null differ
diff --git a/plugins/luamacro/makefile_gcc b/plugins/luamacro/makefile_gcc
index 7ac62f8153..91e343f814 100644
--- a/plugins/luamacro/makefile_gcc
+++ b/plugins/luamacro/makefile_gcc
@@ -1,4 +1,5 @@
 NAME = luamacro
+VERSION_LUASDK = 20240301
 
 SRCS = \
 	luafar/luaplug.c \
@@ -47,7 +48,7 @@ endif
 
 USERLIBS = \
 	$(OBJDIR)/luafar3.lib \
-	luasdk/$(BITPREFIX)$(DIRBIT)/lua51.lib \
+	luasdk/$(VERSION_LUASDK)/$(BITPREFIX)$(DIRBIT)/lua51.lib \
 
 USERTARGETS = \
 	lualib \
@@ -76,7 +77,7 @@ lualegacy:
 ifndef ARM
 ifeq ($(DIRBIT),32)
 	@$(MKDIR) $(FAR_WORKDIR)/Legacy
-	@$(CP) luasdk/32/legacy/lua51.dll $(FAR_WORKDIR)/Legacy
+	@$(CP) luasdk/$(VERSION_LUASDK)/32/legacy/lua51.dll $(FAR_WORKDIR)/Legacy
 endif
 endif
 
diff --git a/plugins/luamacro/makefile_lib_gcc b/plugins/luamacro/makefile_lib_gcc
index 2a3ed4a508..5584bf461f 100644
--- a/plugins/luamacro/makefile_lib_gcc
+++ b/plugins/luamacro/makefile_lib_gcc
@@ -1,9 +1,10 @@
 NAME=luafar3
+VERSION_LUASDK=20240301
 
 ifdef SYS_LUA
 LUA=lua
 else
-LUA=$(WINE_CMD)$(strip $(call os_name, luasdk/32/lua.exe))
+LUA=$(WINE_CMD)$(strip $(call os_name, luasdk/$(VERSION_LUASDK)/32/lua.exe))
 endif
 
 SRCS = \
@@ -27,7 +28,7 @@ SRCS = \
 	luafar/win.c \
 
 USERLIBS = \
-	luasdk/$(BITPREFIX)$(DIRBIT)/lua51.lib \
+	luasdk/$(VERSION_LUASDK)/$(BITPREFIX)$(DIRBIT)/lua51.lib \
 	-Wl,--out-implib,$(OBJDIR)/luafar3.lib \
 
 USERC = \
@@ -58,24 +59,33 @@ USERC += \
 
 endif
 
+USERTARGETS = luasdk/$(VERSION_LUASDK)/$(BITPREFIX)$(DIRBIT)/lua51.dll
+
 RC_NAME = luafar/$(NAME)
 DEF_NAME = -
 
 include ../makefile_gcc_def_inc
 
 DOCS = \
-	luasdk/$(BITPREFIX)$(DIRBIT)/lua51.dll \
-	luasdk/$(BITPREFIX)$(DIRBIT)/lpeg.dll \
+	luasdk/$(VERSION_LUASDK)/$(BITPREFIX)$(DIRBIT)/lua51.dll \
+	luasdk/$(VERSION_LUASDK)/$(BITPREFIX)$(DIRBIT)/lpeg.dll \
 
 include ../makefile_gcc_target_inc
 
-luafar/flags.c: $(COMINC)/plugin.hpp luafar/makeflags.lua
+luafar/flags.c: $(COMINC)/plugin.hpp luafar/makeflags.lua luasdk/$(VERSION_LUASDK)/$(BITPREFIX)$(DIRBIT)/lua51.dll
 	@echo generating $@
 	@$(LUA) luafar/makeflags.lua $(COMINC)/plugin.hpp > $@
 
-luafar/keysandcolors.c: luafar/makefarkeys.lua $(COMINC)/farcolor.hpp $(FARDIR)/uuids.far.dialogs.hpp
+luafar/keysandcolors.c: luafar/makefarkeys.lua $(COMINC)/farcolor.hpp $(FARDIR)/uuids.far.dialogs.hpp luasdk/$(VERSION_LUASDK)/$(BITPREFIX)$(DIRBIT)/lua51.dll
 	@echo generating $@
 	@$(LUA) luafar/makefarkeys.lua $(COMINC)/farcolor.hpp $(FARDIR)/uuids.far.dialogs.hpp $@
 
+$(LUA): luasdk/$(VERSION_LUASDK)/$(BITPREFIX)$(DIRBIT)/lua51.dll
+luasdk/$(VERSION_LUASDK)/$(BITPREFIX)$(DIRBIT)/lua51.lib: luasdk/$(VERSION_LUASDK)/$(BITPREFIX)$(DIRBIT)/lua51.dll
+luasdk/$(VERSION_LUASDK)/$(BITPREFIX)$(DIRBIT)/lpeg.dll: luasdk/$(VERSION_LUASDK)/$(BITPREFIX)$(DIRBIT)/lua51.dll
+luasdk/$(VERSION_LUASDK)/$(BITPREFIX)$(DIRBIT)/lua51.dll:
+	@echo Downloading 7-Zip binaries
+	curl -o luasdk/LuaSDK-$(VERSION_LUASDK).zip https://github.com/FarGroup/thirdparty/blob/master/LuaSDK-$(VERSION_LUASDK).zip && unzip luasdk/LuaSDK-$(VERSION_LUASDK).zip -d luasdk/$(VERSION_LUASDK)
+
 clean::
 	@$(RM) $(DLLDIR)/lua*.* $(OBJS) $(DEPS)
diff --git a/plugins/luamacro/makefile_lib_vc b/plugins/luamacro/makefile_lib_vc
index b015ecc8ce..037f314db8 100644
--- a/plugins/luamacro/makefile_lib_vc
+++ b/plugins/luamacro/makefile_lib_vc
@@ -1,7 +1,8 @@
 NAME=luafar3
+VERSION_LUASDK=20240301
 USERCPP=/Iluasdk/include /DBUILD_DLL /DWINVER=0x500 /DLUADLL=\"lua51.dll\"
 !ifndef LUA
-LUA=luasdk\32\lua.exe
+LUA=luasdk\$(VERSION_LUASDK)\32\lua.exe
 !endif
 
 GEN_IMPLIB=1
@@ -12,8 +13,8 @@ DEF_NAME=
 !include ..\makefile_vc_def_inc
 
 DOCS = \
-	luasdk\$(BITPREFIX)$(DIRBIT)\lua51.dll \
-	luasdk\$(BITPREFIX)$(DIRBIT)\lpeg.dll \
+	luasdk\$(VERSION_LUASDK)\$(BITPREFIX)$(DIRBIT)\lua51.dll \
+	luasdk\$(VERSION_LUASDK)\$(BITPREFIX)$(DIRBIT)\lpeg.dll \
 
 LINK_OBJS = \
 $(INTDIR)\bit64.obj \
@@ -35,7 +36,7 @@ $(INTDIR)\ustring.obj \
 $(INTDIR)\util.obj \
 $(INTDIR)\win.obj \
 
-LINK_LIBS=$(LINK_LIBS) luasdk\$(BITPREFIX)$(DIRBIT)\lua51.lib
+LINK_LIBS=$(LINK_LIBS) luasdk\$(VERSION_LUASDK)\$(BITPREFIX)$(DIRBIT)\lua51.lib
 
 !include ..\makefile_vc_target_inc
 
@@ -51,10 +52,17 @@ $(LINK_OBJS): luafar\flags.c luafar\keysandcolors.c
 	@$(CC) $(CPPFLAGS) { $< }
 !endif
 
-luafar\flags.c: $(COMINC)\plugin.hpp luafar\makeflags.lua
+luafar\flags.c: $(COMINC)\plugin.hpp luafar\makeflags.lua luasdk\$(VERSION_LUASDK)\$(BITPREFIX)$(DIRBIT)\lua51.dll
 	@echo generating flags.c
 	@$(LUA) luafar\makeflags.lua $(COMINC)\plugin.hpp > luafar\flags.c
 
-luafar\keysandcolors.c: luafar\makefarkeys.lua $(COMINC)\farcolor.hpp $(FARDIR)\uuids.far.dialogs.hpp
+luafar\keysandcolors.c: luafar\makefarkeys.lua $(COMINC)\farcolor.hpp $(FARDIR)\uuids.far.dialogs.hpp luasdk\$(VERSION_LUASDK)\$(BITPREFIX)$(DIRBIT)\lua51.dll
 	@echo generating keysandcolors.c
 	@$(LUA) luafar\makefarkeys.lua $(COMINC)\farcolor.hpp $(FARDIR)\uuids.far.dialogs.hpp $@
+
+$(LUA): luasdk\$(VERSION_LUASDK)\$(BITPREFIX)$(DIRBIT)\lua51.dll
+luasdk\$(VERSION_LUASDK)\$(BITPREFIX)$(DIRBIT)\lua51.lib: luasdk\$(VERSION_LUASDK)\$(BITPREFIX)$(DIRBIT)\lua51.dll
+luasdk\$(VERSION_LUASDK)\$(BITPREFIX)$(DIRBIT)\lpeg.dll: luasdk\$(VERSION_LUASDK)\$(BITPREFIX)$(DIRBIT)\lua51.dll
+luasdk\$(VERSION_LUASDK)\$(BITPREFIX)$(DIRBIT)\lua51.dll:
+	@echo Downloading Lua binaries
+	powershell -c "Invoke-WebRequest -Uri 'https://github.com/FarGroup/thirdparty/blob/master/LuaSDK-$(VERSION_LUASDK).zip' -OutFile 'luasdk\LuaSDK-$(VERSION_LUASDK).zip'; Expand-Archive luasdk\LuaSDK-$(VERSION_LUASDK).zip -DestinationPath luasdk\$(VERSION_LUASDK)
diff --git a/plugins/luamacro/makefile_vc b/plugins/luamacro/makefile_vc
index b8eba06aff..43f8dd81ac 100644
--- a/plugins/luamacro/makefile_vc
+++ b/plugins/luamacro/makefile_vc
@@ -1,4 +1,5 @@
 NAME=LuaMacro
+VERSION_LUASDK=20240301
 USERCPP=/Iluasdk/include /DEXPORT_OPEN /DEXPORT_CONFIGURE \
         /DEXPORT_PROCESSEDITOREVENT /DEXPORT_PROCESSVIEWEREVENT \
         /DEXPORT_PROCESSDIALOGEVENT /DEXPORT_PROCESSEDITORINPUT /DEXPORT_PROCESSCONSOLEINPUT \
@@ -27,7 +28,7 @@ ALL: lualib lualegacy
 
 LINK_OBJS = $(INTDIR)\luaplug.obj
 
-LINK_LIBS=$(LINK_LIBS) luasdk\$(DIRBIT)\lua51.lib $(LUALIB)
+LINK_LIBS=$(LINK_LIBS) luasdk\$(VERSION_LUASDK)\$(DIRBIT)\lua51.lib $(LUALIB)
 
 !include ..\makefile_vc_target_inc
 
@@ -51,7 +52,7 @@ lualib:
 lualegacy:
 !if "$(DIRBIT)" == "32"
 	@if not exist $(FAR_WORKDIR)\Legacy\$(NULL) mkdir $(FAR_WORKDIR)\Legacy
-	@copy /y luasdk\32\legacy\lua51.dll $(FAR_WORKDIR)\Legacy 1>nul
+	@copy /y luasdk\$(VERSION_LUASDK)\32\legacy\lua51.dll $(FAR_WORKDIR)\Legacy 1>nul
 !else
 	@echo >nul
 !endif