diff --git a/.github/workflows/build-installer.yml b/.github/workflows/build-installer.yml index 12e67ad9..b473b731 100644 --- a/.github/workflows/build-installer.yml +++ b/.github/workflows/build-installer.yml @@ -38,6 +38,13 @@ jobs: # remove.vcxproj also respects OPENSAL_BUILD_DIR msbuild $env:REMOVE_PROJ_PATH /m /t:Build /p:Configuration=$env:BUILD_CONFIGURATION /p:Platform=x64 /p:PreferredToolArchitecture=x64 + - name: Download OpenSSL Libraries + run: | + $opensslZip = "openssl.zip" + Invoke-WebRequest -Uri "https://github.com/IndySockets/OpenSSL-Binaries/raw/master/Archive/openssl-1.0.2u-x64_86-win64.zip" -OutFile $opensslZip + Expand-Archive -Path $opensslZip -DestinationPath "utils" -Force + Remove-Item $opensslZip + - name: Prepare and Create Installer run: | # Our script is already robust and searches for files within OPENSAL_BUILD_DIR diff --git a/src/vcxproj/salamand.sln b/src/vcxproj/salamand.sln index f4501009..83a0065a 100644 --- a/src/vcxproj/salamand.sln +++ b/src/vcxproj/salamand.sln @@ -1,4 +1,3 @@ - Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.9.34310.174 @@ -867,7 +866,8 @@ Global {161BE79F-F035-486F-B36D-950799F0E110}.Release|x64.ActiveCfg = Release|x64 {161BE79F-F035-486F-B36D-950799F0E110}.Release|x64.Build.0 = Release|x64 {161BE79F-F035-486F-B36D-950799F0E110}.Utils (Release)|Win32.ActiveCfg = Release|Win32 - {161BE79F-F035-486F-B36D-950799F0E110}.Utils (Release)|x64.ActiveCfg = Release|x64 + {161BE79F-F035-486F-B36D-950799F0E110}.Utils (Release)|x64.ActiveCfg = Release|Win32 + {161BE79F-F035-486F-B36D-950799F0E110}.Utils (Release)|x64.Build.0 = Release|Win32 {85478010-C90E-4C07-ADBE-D2276E435749}.Debug|Win32.ActiveCfg = Debug|Win32 {85478010-C90E-4C07-ADBE-D2276E435749}.Debug|Win32.Build.0 = Debug|Win32 {85478010-C90E-4C07-ADBE-D2276E435749}.Debug|x64.ActiveCfg = Debug|x64 @@ -919,41 +919,61 @@ Global {61BC1DA8-A452-4FB1-B8C6-533D351A66E2}.Utils (Release)|Win32.ActiveCfg = Release|Win32 {61BC1DA8-A452-4FB1-B8C6-533D351A66E2}.Utils (Release)|x64.ActiveCfg = Release|x64 {2817FDA4-F692-47A1-8373-B4DF20DEF383}.Debug|Win32.ActiveCfg = Debug|Win32 + {2817FDA4-F692-47A1-8373-B4DF20DEF383}.Debug|Win32.Build.0 = Debug|Win32 {2817FDA4-F692-47A1-8373-B4DF20DEF383}.Debug|x64.ActiveCfg = Debug|Win32 + {2817FDA4-F692-47A1-8373-B4DF20DEF383}.Debug|x64.Build.0 = Debug|Win32 {2817FDA4-F692-47A1-8373-B4DF20DEF383}.Release|Win32.ActiveCfg = Release|Win32 + {2817FDA4-F692-47A1-8373-B4DF20DEF383}.Release|Win32.Build.0 = Release|Win32 {2817FDA4-F692-47A1-8373-B4DF20DEF383}.Release|x64.ActiveCfg = Release|Win32 + {2817FDA4-F692-47A1-8373-B4DF20DEF383}.Release|x64.Build.0 = Release|Win32 {2817FDA4-F692-47A1-8373-B4DF20DEF383}.Utils (Release)|Win32.ActiveCfg = Release|Win32 {2817FDA4-F692-47A1-8373-B4DF20DEF383}.Utils (Release)|Win32.Build.0 = Release|Win32 {2817FDA4-F692-47A1-8373-B4DF20DEF383}.Utils (Release)|x64.ActiveCfg = Release|Win32 {2817FDA4-F692-47A1-8373-B4DF20DEF383}.Utils (Release)|x64.Build.0 = Release|Win32 {2817FDA5-F692-47A1-8373-B4DF20DEF383}.Debug|Win32.ActiveCfg = Debug|x64 + {2817FDA5-F692-47A1-8373-B4DF20DEF383}.Debug|Win32.Build.0 = Debug|x64 {2817FDA5-F692-47A1-8373-B4DF20DEF383}.Debug|x64.ActiveCfg = Debug|x64 + {2817FDA5-F692-47A1-8373-B4DF20DEF383}.Debug|x64.Build.0 = Debug|x64 {2817FDA5-F692-47A1-8373-B4DF20DEF383}.Release|Win32.ActiveCfg = Release|x64 + {2817FDA5-F692-47A1-8373-B4DF20DEF383}.Release|Win32.Build.0 = Release|x64 {2817FDA5-F692-47A1-8373-B4DF20DEF383}.Release|x64.ActiveCfg = Release|x64 + {2817FDA5-F692-47A1-8373-B4DF20DEF383}.Release|x64.Build.0 = Release|x64 {2817FDA5-F692-47A1-8373-B4DF20DEF383}.Utils (Release)|Win32.ActiveCfg = Release|x64 {2817FDA5-F692-47A1-8373-B4DF20DEF383}.Utils (Release)|Win32.Build.0 = Release|x64 {2817FDA5-F692-47A1-8373-B4DF20DEF383}.Utils (Release)|x64.ActiveCfg = Release|x64 {2817FDA5-F692-47A1-8373-B4DF20DEF383}.Utils (Release)|x64.Build.0 = Release|x64 {0606C52C-9DA4-468B-B7A6-5C53A360EA91}.Debug|Win32.ActiveCfg = Debug|Win32 + {0606C52C-9DA4-468B-B7A6-5C53A360EA91}.Debug|Win32.Build.0 = Debug|Win32 {0606C52C-9DA4-468B-B7A6-5C53A360EA91}.Debug|x64.ActiveCfg = Debug|x64 + {0606C52C-9DA4-468B-B7A6-5C53A360EA91}.Debug|x64.Build.0 = Debug|x64 {0606C52C-9DA4-468B-B7A6-5C53A360EA91}.Release|Win32.ActiveCfg = Release|Win32 + {0606C52C-9DA4-468B-B7A6-5C53A360EA91}.Release|Win32.Build.0 = Release|Win32 {0606C52C-9DA4-468B-B7A6-5C53A360EA91}.Release|x64.ActiveCfg = Release|x64 + {0606C52C-9DA4-468B-B7A6-5C53A360EA91}.Release|x64.Build.0 = Release|x64 {0606C52C-9DA4-468B-B7A6-5C53A360EA91}.Utils (Release)|Win32.ActiveCfg = Release|Win32 {0606C52C-9DA4-468B-B7A6-5C53A360EA91}.Utils (Release)|Win32.Build.0 = Release|Win32 {0606C52C-9DA4-468B-B7A6-5C53A360EA91}.Utils (Release)|x64.ActiveCfg = Release|x64 {0606C52C-9DA4-468B-B7A6-5C53A360EA91}.Utils (Release)|x64.Build.0 = Release|x64 {C610C287-BC1E-4FAE-9BF4-A1CB68986746}.Debug|Win32.ActiveCfg = Debug|Win32 + {C610C287-BC1E-4FAE-9BF4-A1CB68986746}.Debug|Win32.Build.0 = Debug|Win32 {C610C287-BC1E-4FAE-9BF4-A1CB68986746}.Debug|x64.ActiveCfg = Debug|x64 + {C610C287-BC1E-4FAE-9BF4-A1CB68986746}.Debug|x64.Build.0 = Debug|x64 {C610C287-BC1E-4FAE-9BF4-A1CB68986746}.Release|Win32.ActiveCfg = Release|Win32 + {C610C287-BC1E-4FAE-9BF4-A1CB68986746}.Release|Win32.Build.0 = Release|Win32 {C610C287-BC1E-4FAE-9BF4-A1CB68986746}.Release|x64.ActiveCfg = Release|x64 + {C610C287-BC1E-4FAE-9BF4-A1CB68986746}.Release|x64.Build.0 = Release|x64 {C610C287-BC1E-4FAE-9BF4-A1CB68986746}.Utils (Release)|Win32.ActiveCfg = Release|Win32 {C610C287-BC1E-4FAE-9BF4-A1CB68986746}.Utils (Release)|Win32.Build.0 = Release|Win32 {C610C287-BC1E-4FAE-9BF4-A1CB68986746}.Utils (Release)|x64.ActiveCfg = Release|x64 {C610C287-BC1E-4FAE-9BF4-A1CB68986746}.Utils (Release)|x64.Build.0 = Release|x64 {53D8DB2B-C867-4B87-AB47-68E0ACEB691B}.Debug|Win32.ActiveCfg = Debug|Win32 + {53D8DB2B-C867-4B87-AB47-68E0ACEB691B}.Debug|Win32.Build.0 = Debug|Win32 {53D8DB2B-C867-4B87-AB47-68E0ACEB691B}.Debug|x64.ActiveCfg = Debug|Win32 + {53D8DB2B-C867-4B87-AB47-68E0ACEB691B}.Debug|x64.Build.0 = Debug|Win32 {53D8DB2B-C867-4B87-AB47-68E0ACEB691B}.Release|Win32.ActiveCfg = Release|Win32 + {53D8DB2B-C867-4B87-AB47-68E0ACEB691B}.Release|Win32.Build.0 = Release|Win32 {53D8DB2B-C867-4B87-AB47-68E0ACEB691B}.Release|x64.ActiveCfg = Release|Win32 + {53D8DB2B-C867-4B87-AB47-68E0ACEB691B}.Release|x64.Build.0 = Release|Win32 {53D8DB2B-C867-4B87-AB47-68E0ACEB691B}.Utils (Release)|Win32.ActiveCfg = Release|Win32 {53D8DB2B-C867-4B87-AB47-68E0ACEB691B}.Utils (Release)|Win32.Build.0 = Release|Win32 {53D8DB2B-C867-4B87-AB47-68E0ACEB691B}.Utils (Release)|x64.ActiveCfg = Release|Win32 @@ -989,9 +1009,13 @@ Global {89CD2440-2844-4C0B-9CDE-1045334E9EC0}.Utils (Release)|Win32.ActiveCfg = Release|Win32 {89CD2440-2844-4C0B-9CDE-1045334E9EC0}.Utils (Release)|x64.ActiveCfg = Release|x64 {17CF5E05-F29C-4E5D-BA41-83254E342E0B}.Debug|Win32.ActiveCfg = Debug|Win32 + {17CF5E05-F29C-4E5D-BA41-83254E342E0B}.Debug|Win32.Build.0 = Debug|Win32 {17CF5E05-F29C-4E5D-BA41-83254E342E0B}.Debug|x64.ActiveCfg = Debug|Win32 + {17CF5E05-F29C-4E5D-BA41-83254E342E0B}.Debug|x64.Build.0 = Debug|Win32 {17CF5E05-F29C-4E5D-BA41-83254E342E0B}.Release|Win32.ActiveCfg = Release|Win32 + {17CF5E05-F29C-4E5D-BA41-83254E342E0B}.Release|Win32.Build.0 = Release|Win32 {17CF5E05-F29C-4E5D-BA41-83254E342E0B}.Release|x64.ActiveCfg = Release|Win32 + {17CF5E05-F29C-4E5D-BA41-83254E342E0B}.Release|x64.Build.0 = Release|Win32 {17CF5E05-F29C-4E5D-BA41-83254E342E0B}.Utils (Release)|Win32.ActiveCfg = Release|Win32 {17CF5E05-F29C-4E5D-BA41-83254E342E0B}.Utils (Release)|x64.ActiveCfg = Release|Win32 {49D6CEED-804F-4EA6-BD12-2D825E13DAE3}.Debug|Win32.ActiveCfg = Debug|Win32 @@ -1025,41 +1049,61 @@ Global {21EC6980-0206-421C-BE36-FD169EC2D654}.Utils (Release)|Win32.ActiveCfg = Release|Win32 {21EC6980-0206-421C-BE36-FD169EC2D654}.Utils (Release)|x64.ActiveCfg = Release|x64 {ACD179AE-9891-4B2D-82CF-F3A797661126}.Debug|Win32.ActiveCfg = Debug|Win32 + {ACD179AE-9891-4B2D-82CF-F3A797661126}.Debug|Win32.Build.0 = Debug|Win32 {ACD179AE-9891-4B2D-82CF-F3A797661126}.Debug|x64.ActiveCfg = Debug|Win32 + {ACD179AE-9891-4B2D-82CF-F3A797661126}.Debug|x64.Build.0 = Debug|Win32 {ACD179AE-9891-4B2D-82CF-F3A797661126}.Release|Win32.ActiveCfg = Release|Win32 + {ACD179AE-9891-4B2D-82CF-F3A797661126}.Release|Win32.Build.0 = Release|Win32 {ACD179AE-9891-4B2D-82CF-F3A797661126}.Release|x64.ActiveCfg = Release|Win32 + {ACD179AE-9891-4B2D-82CF-F3A797661126}.Release|x64.Build.0 = Release|Win32 {ACD179AE-9891-4B2D-82CF-F3A797661126}.Utils (Release)|Win32.ActiveCfg = Release|Win32 {ACD179AE-9891-4B2D-82CF-F3A797661126}.Utils (Release)|Win32.Build.0 = Release|Win32 {ACD179AE-9891-4B2D-82CF-F3A797661126}.Utils (Release)|x64.ActiveCfg = Release|Win32 {ACD179AE-9891-4B2D-82CF-F3A797661126}.Utils (Release)|x64.Build.0 = Release|Win32 {997B557B-4FB5-49FF-85AC-1FE66B9EBCFF}.Debug|Win32.ActiveCfg = Debug|Win32 + {997B557B-4FB5-49FF-85AC-1FE66B9EBCFF}.Debug|Win32.Build.0 = Debug|Win32 {997B557B-4FB5-49FF-85AC-1FE66B9EBCFF}.Debug|x64.ActiveCfg = Debug|Win32 + {997B557B-4FB5-49FF-85AC-1FE66B9EBCFF}.Debug|x64.Build.0 = Debug|Win32 {997B557B-4FB5-49FF-85AC-1FE66B9EBCFF}.Release|Win32.ActiveCfg = Release|Win32 + {997B557B-4FB5-49FF-85AC-1FE66B9EBCFF}.Release|Win32.Build.0 = Release|Win32 {997B557B-4FB5-49FF-85AC-1FE66B9EBCFF}.Release|x64.ActiveCfg = Release|Win32 + {997B557B-4FB5-49FF-85AC-1FE66B9EBCFF}.Release|x64.Build.0 = Release|Win32 {997B557B-4FB5-49FF-85AC-1FE66B9EBCFF}.Utils (Release)|Win32.ActiveCfg = Release|Win32 {997B557B-4FB5-49FF-85AC-1FE66B9EBCFF}.Utils (Release)|Win32.Build.0 = Release|Win32 {997B557B-4FB5-49FF-85AC-1FE66B9EBCFF}.Utils (Release)|x64.ActiveCfg = Release|Win32 {997B557B-4FB5-49FF-85AC-1FE66B9EBCFF}.Utils (Release)|x64.Build.0 = Release|Win32 {473B82C6-D658-4D5D-B0EB-8A449B3DCDA9}.Debug|Win32.ActiveCfg = Debug|Win32 + {473B82C6-D658-4D5D-B0EB-8A449B3DCDA9}.Debug|Win32.Build.0 = Debug|Win32 {473B82C6-D658-4D5D-B0EB-8A449B3DCDA9}.Debug|x64.ActiveCfg = Debug|x64 + {473B82C6-D658-4D5D-B0EB-8A449B3DCDA9}.Debug|x64.Build.0 = Debug|x64 {473B82C6-D658-4D5D-B0EB-8A449B3DCDA9}.Release|Win32.ActiveCfg = Release|Win32 + {473B82C6-D658-4D5D-B0EB-8A449B3DCDA9}.Release|Win32.Build.0 = Release|Win32 {473B82C6-D658-4D5D-B0EB-8A449B3DCDA9}.Release|x64.ActiveCfg = Release|x64 + {473B82C6-D658-4D5D-B0EB-8A449B3DCDA9}.Release|x64.Build.0 = Release|x64 {473B82C6-D658-4D5D-B0EB-8A449B3DCDA9}.Utils (Release)|Win32.ActiveCfg = Release|Win32 {473B82C6-D658-4D5D-B0EB-8A449B3DCDA9}.Utils (Release)|Win32.Build.0 = Release|Win32 {473B82C6-D658-4D5D-B0EB-8A449B3DCDA9}.Utils (Release)|x64.ActiveCfg = Release|x64 {473B82C6-D658-4D5D-B0EB-8A449B3DCDA9}.Utils (Release)|x64.Build.0 = Release|x64 {C5833A09-5056-4C59-9E53-721A4D011936}.Debug|Win32.ActiveCfg = Debug|Win32 + {C5833A09-5056-4C59-9E53-721A4D011936}.Debug|Win32.Build.0 = Debug|Win32 {C5833A09-5056-4C59-9E53-721A4D011936}.Debug|x64.ActiveCfg = Debug|Win32 + {C5833A09-5056-4C59-9E53-721A4D011936}.Debug|x64.Build.0 = Debug|Win32 {C5833A09-5056-4C59-9E53-721A4D011936}.Release|Win32.ActiveCfg = Release|Win32 + {C5833A09-5056-4C59-9E53-721A4D011936}.Release|Win32.Build.0 = Release|Win32 {C5833A09-5056-4C59-9E53-721A4D011936}.Release|x64.ActiveCfg = Release|Win32 + {C5833A09-5056-4C59-9E53-721A4D011936}.Release|x64.Build.0 = Release|Win32 {C5833A09-5056-4C59-9E53-721A4D011936}.Utils (Release)|Win32.ActiveCfg = Release|Win32 {C5833A09-5056-4C59-9E53-721A4D011936}.Utils (Release)|Win32.Build.0 = Release|Win32 {C5833A09-5056-4C59-9E53-721A4D011936}.Utils (Release)|x64.ActiveCfg = Release|Win32 {C5833A09-5056-4C59-9E53-721A4D011936}.Utils (Release)|x64.Build.0 = Release|Win32 {D75FF963-62AA-4B33-ACFD-51616CB4FA65}.Debug|Win32.ActiveCfg = Debug|Win32 + {D75FF963-62AA-4B33-ACFD-51616CB4FA65}.Debug|Win32.Build.0 = Debug|Win32 {D75FF963-62AA-4B33-ACFD-51616CB4FA65}.Debug|x64.ActiveCfg = Debug|x64 + {D75FF963-62AA-4B33-ACFD-51616CB4FA65}.Debug|x64.Build.0 = Debug|x64 {D75FF963-62AA-4B33-ACFD-51616CB4FA65}.Release|Win32.ActiveCfg = Release|Win32 + {D75FF963-62AA-4B33-ACFD-51616CB4FA65}.Release|Win32.Build.0 = Release|Win32 {D75FF963-62AA-4B33-ACFD-51616CB4FA65}.Release|x64.ActiveCfg = Release|x64 + {D75FF963-62AA-4B33-ACFD-51616CB4FA65}.Release|x64.Build.0 = Release|x64 {D75FF963-62AA-4B33-ACFD-51616CB4FA65}.Utils (Release)|Win32.ActiveCfg = Release|Win32 {D75FF963-62AA-4B33-ACFD-51616CB4FA65}.Utils (Release)|Win32.Build.0 = Release|Win32 {D75FF963-62AA-4B33-ACFD-51616CB4FA65}.Utils (Release)|x64.ActiveCfg = Release|x64 diff --git a/tools/prepare_installer.ps1 b/tools/prepare_installer.ps1 index 8a5ea1a7..1cc50058 100644 --- a/tools/prepare_installer.ps1 +++ b/tools/prepare_installer.ps1 @@ -1,4 +1,3 @@ - param( [string]$BuildDir = "build_stage", [string]$StagingDir = "Installer_Staging", @@ -11,72 +10,91 @@ New-Item -ItemType Directory -Path "$StagingDir\plugins" New-Item -ItemType Directory -Path "$StagingDir\lang" New-Item -ItemType Directory -Path "$StagingDir\convert" New-Item -ItemType Directory -Path "$StagingDir\toolbars" +New-Item -ItemType Directory -Path "$StagingDir\utils" # 1. Copy base installer files -Copy-Item "Installer\setup.exe" "$StagingDir\" -Copy-Item "Installer\LICENSE" "$StagingDir\" -Copy-Item "Installer\x64" "$StagingDir\" +Copy-Item "Installer\setup.exe" "$StagingDir\" -ErrorAction SilentlyContinue +Copy-Item "Installer\LICENSE" "$StagingDir\" -ErrorAction SilentlyContinue +Copy-Item "Installer\x64" "$StagingDir\" -ErrorAction SilentlyContinue -# 2. Copy main executables -function Copy-Exe($srcPatterns, $dest) { +# 2. Copy main executables and DLLs +function Copy-Exe($srcPatterns, $fileName, $dest) { foreach ($pattern in $srcPatterns) { $found = Get-ChildItem -Path $pattern -ErrorAction SilentlyContinue | Select-Object -First 1 if ($found) { Copy-Item $found.FullName $dest + Write-Host "Found $fileName at: $($found.FullName)" return $true } } + # Fallback: search recursively in BuildDir and src + $found = Get-ChildItem -Path $BuildDir, "src" -Filter $fileName -Recurse -ErrorAction SilentlyContinue | Select-Object -First 1 + if ($found) { + Copy-Item $found.FullName $dest + Write-Host "Found $fileName (recursive) at: $($found.FullName)" + return $true + } + Write-Warning "$fileName not found in primary locations or recursively." return $false } -$salamandCopied = Copy-Exe @( - "$BuildDir\salamander\Release_x64\salamand.exe", - "$BuildDir\Release_x64\salamand.exe", - "$BuildDir\salamand.exe", - "src\vcxproj\salamander\Release_x64\salamand.exe" -) "$StagingDir\" - -$salmonCopied = Copy-Exe @( - "$BuildDir\salmon\Release_x64\utils\salmon.exe", - "$BuildDir\Release_x64\salmon.exe", - "$BuildDir\salmon.exe", - "src\vcxproj\salmon\salamander\Release_x64\utils\salmon.exe" -) "$StagingDir\" - -$removeCopied = Copy-Exe @( - "$BuildDir\remove\Release_x64\remove.exe", - "$BuildDir\Release_x64\remove.exe", - "$BuildDir\remove.exe" -) "$StagingDir\" +# Main exes +$salamandCopied = Copy-Exe @("$BuildDir\Release_x64\salamand.exe", "src\vcxproj\salamander\Release_x64\salamand.exe") "salamand.exe" "$StagingDir\" +$salmonCopied = Copy-Exe @("$BuildDir\Release_x64\salmon.exe", "src\vcxproj\salmon\salamander\Release_x64\utils\salmon.exe") "salmon.exe" "$StagingDir\" +$removeCopied = Copy-Exe @("$BuildDir\Release_x64\remove.exe", "src\vcxproj\setup\remove\Release_x64\remove.exe") "remove.exe" "$StagingDir\" if (-not $salamandCopied) { Write-Error "Could not find salamand.exe" } if (-not $salmonCopied) { Write-Error "Could not find salmon.exe" } if (-not $removeCopied) { Write-Error "Could not find remove.exe" } +# Shell extensions +Copy-Exe @("$BuildDir\Release_x64\salextx64.dll", "$BuildDir\shellext\Release_x64\salextx64.dll", "src\vcxproj\shellext\salamander\Release_x64\plugins\Intermediate\salextx64\salextx64.dll", "src\vcxproj\shellext\salamander\Release_x64\salextx64.dll") "salextx64.dll" "$StagingDir\" +Copy-Exe @("$BuildDir\Release_Win32\salextx86.dll", "$BuildDir\shellext\Release_Win32\salextx86.dll", "$BuildDir\Release_x64\salextx86.dll", "src\vcxproj\shellext\salamander\Release_x86\plugins\Intermediate\salextx86\salextx86.dll", "src\vcxproj\shellext\salamander\Release_x86\salextx86.dll") "salextx86.dll" "$StagingDir\" + +# Utils +Copy-Exe @("$BuildDir\Release_x64\salpvenv.exe") "salpvenv.exe" "$StagingDir\" + +# OpenSSL +$opensslCopied1 = Copy-Exe @("utils\libeay32.dll", "external\openssl\libeay32.dll", "libeay32.dll") "libeay32.dll" "$StagingDir\utils\" +$opensslCopied2 = Copy-Exe @("utils\ssleay32.dll", "external\openssl\ssleay32.dll", "ssleay32.dll") "ssleay32.dll" "$StagingDir\utils\" + +if (-not $opensslCopied1 -or -not $opensslCopied2) { + Write-Warning "OpenSSL DLLs not found. FTP encryption might not work." +} + # 3. Copy lang (main app) -Copy-Item "Installer\lang\*" "$StagingDir\lang\" -Recurse +Copy-Item "Installer\lang\*" "$StagingDir\lang\" -Recurse -ErrorAction SilentlyContinue # 4. Copy convert -Copy-Item "convert\*" "$StagingDir\convert\" -Recurse +Copy-Item "convert\*" "$StagingDir\convert\" -Recurse -ErrorAction SilentlyContinue # 5. Copy toolbars -Copy-Item "src\res\toolbars\*" "$StagingDir\toolbars\" -Recurse +Copy-Item "src\res\toolbars\*" "$StagingDir\toolbars\" -Recurse -ErrorAction SilentlyContinue # 6. Copy plugins -# Find all .spl files in Release_x64 directories -$splFiles = Get-ChildItem -Path "src\plugins" -Recurse -Filter "*.spl" | Where-Object { $_.FullName -match "Release_x64" } +$splFiles = Get-ChildItem -Path "src\plugins", $BuildDir -Recurse -Filter "*.spl" -ErrorAction SilentlyContinue | + Where-Object { $_.FullName -match "Release_x64" -and $_.FullName -notmatch "\\Intermediate\\" } + +$processedSpl = New-Object System.Collections.Generic.HashSet[string] + foreach ($file in $splFiles) { - # Extract plugin name from path (usually ...\plugins\\.spl) - $pluginName = $file.Directory.Name + if ($processedSpl.Contains($file.Name)) { continue } + $processedSpl.Add($file.Name) | Out-Null + + $pluginName = $file.BaseName $pluginDestDir = New-Item -ItemType Directory -Path "$StagingDir\plugins\$pluginName" -Force Copy-Item $file.FullName "$pluginDestDir\" + Write-Host "Found plugin $pluginName at: $($file.FullName)" - # Copy plugin's lang files (only .slg, exclude Intermediate) - $pluginLangDir = Join-Path $file.DirectoryName "lang" - if (Test-Path $pluginLangDir) { - $stagedLangDir = New-Item -ItemType Directory -Path "$pluginDestDir\lang" -Force - Get-ChildItem -Path $pluginLangDir -Filter "*.slg" | Copy-Item -Destination "$stagedLangDir\" - } + $stagedLangDir = $null + Get-ChildItem -Path $file.DirectoryName -Filter "*.slg" -Recurse | + Where-Object { $_.FullName -notmatch "\\Intermediate\\" } | ForEach-Object { + if ($null -eq $stagedLangDir) { + $stagedLangDir = New-Item -ItemType Directory -Path "$pluginDestDir\lang" -Force + } + Copy-Item $_.FullName "$stagedLangDir\" + Write-Host " Found lang file: $($_.Name)" + } } # 7. Generate setup.inf @@ -96,14 +114,25 @@ salmon.exe,%1\salmon.exe,0 remove.exe,%1\remove.exe,0 "@ -# Function to add files to setup.inf +function Add-FileToSetupInf($fileRelPath) { + $script:setupInf += "`n$fileRelPath,%1\$fileRelPath,0" +} + +$rootFiles = @("salextx64.dll", "salextx86.dll", "salopen.exe", "salspawn.exe", "tserver.exe", "sfx7zip.exe", "zip2sfx.exe", "salpvenv.exe", "translator.exe") +foreach ($rf in $rootFiles) { + if (Test-Path "$StagingDir\$rf") { + Add-FileToSetupInf $rf + } +} + function Add-ToSetupInf($path) { - $files = Get-ChildItem -Path "$StagingDir\$path" -File -Recurse - foreach ($f in $files) { - $relPath = $f.FullName.Substring((Get-Item $StagingDir).FullName.Length + 1) - # Check if the file is in an Intermediate directory (shouldn't be there, but just in case) - if ($relPath -notmatch "\\Intermediate\\") { - $script:setupInf += "`n$relPath,%1\$relPath,0" + if (Test-Path "$StagingDir\$path") { + $files = Get-ChildItem -Path "$StagingDir\$path" -File -Recurse + foreach ($f in $files) { + $relPath = $f.FullName.Substring((Get-Item $StagingDir).FullName.Length + 1) + if ($relPath -notmatch "\\Intermediate\\") { + Add-FileToSetupInf $relPath + } } } } @@ -112,6 +141,7 @@ Add-ToSetupInf "lang" Add-ToSetupInf "convert" Add-ToSetupInf "toolbars" Add-ToSetupInf "plugins" +Add-ToSetupInf "utils" $setupInf += @"