@ -38,220 +38,220 @@ jobs:
runs-on : windows-latest
runs-on : windows-latest
steps:
steps:
- name : Print inputs
- name : Print inputs
shell : bash
shell : bash
run : |
run : |
echo "ref: ${{ github.event.inputs.ref }}"
echo "ref: ${{ github.event.inputs.ref }}"
echo "config: ${{ github.event.inputs.config }}"
echo "config: ${{ github.event.inputs.config }}"
echo "build_dir: ${{ github.event.inputs.build_dir }}"
echo "build_dir: ${{ github.event.inputs.build_dir }}"
- name : Checkout latest build and submodules
- name : Checkout latest build and submodules
uses : actions/checkout@v4
uses : actions/checkout@v4
if : github.event.inputs.ref == ''
if : github.event.inputs.ref == ''
with:
with:
submodules : recursive
submodules : recursive
- name : Checkout specific build and submodules
uses : actions/checkout@v4
if : github.event.inputs.ref != ''
with:
ref : ${{ github.event.inputs.ref }}
submodules : recursive
- name : Add MSBuild to PATH
- name : Checkout specific build and submodules
uses : microsoft/setup-msbuild@v2
uses : actions/checkout@v4
if : github.event.inputs.ref != ''
- name : Declare some variables
with:
id : vars
ref : ${{ github.event.inputs.ref }}
shell : bash
submodules : recursive
run : |
echo "branch=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_OUTPUT
echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
- name : Enable SimpleWindowSwitcher support for newer Windows SDKs
shell : cmd
run : |
cd libs/sws
C:\msys64\usr\bin\wget.exe https://github.com/valinet/sws/commit/972acb76d1e6429133c92ed7cdefd29b9a2c6179.patch
C:\msys64\usr\bin\dos2unix.exe 972acb76d1e6429133c92ed7cdefd29b9a2c6179.patch
C:\msys64\usr\bin\dos2unix.exe SimpleWindowSwitcher/sws_def.h
C:\msys64\usr\bin\patch.exe -N SimpleWindowSwitcher/sws_def.h 972acb76d1e6429133c92ed7cdefd29b9a2c6179.patch
C:\msys64\usr\bin\unix2dos.exe SimpleWindowSwitcher/sws_def.h
exit /b 0
- name : Setup NuGet
uses : nuget/setup-nuget@v2
- name : Restore NuGet packages
run : |
nuget restore ExplorerPatcher.sln
- name : Download ep_taskbar
- name : Add MSBuild to PATH
uses : robinraju/release-downloader@v1
uses : microsoft/setup-msbuild@v2
with:
repository : ExplorerPatcher/ep_taskbar_releases
fileName : ep_taskbar.*.dll
latest : true
out-file-path : build/Release
# build/Release/ep_taskbar.*.amd64.dll -> build/Release/x64/ep_taskbar.*.dll
- name : Declare some variables
# build/Release/ep_taskbar.*.arm64.dll -> build/Release/ARM64/ep_taskbar.*.dll
id : vars
- name : Move ep_taskbar
shell : bash
shell : bash
run : |
run : |
echo "branch=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_OUTPUT
if ls build/Release/ep_taskbar.*.amd64.dll 1> /dev/null 2>&1; then
echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
mkdir -p build/Release/x64
for file in build/Release/ep_taskbar.*.amd64.dll; do
mv "$file" "build/Release/x64/$(basename "$file" .amd64.dll).dll"
done
fi
if ls build/Release/ep_taskbar.*.arm64.dll 1> /dev/null 2>&1; then
- name : Enable SimpleWindowSwitcher support for newer Windows SDKs
mkdir -p build/Release/ARM64
shell : cmd
for file in build/Release/ep_taskbar.*.arm64.dll; do
run : |
mv "$file" "build/Release/ARM64/$(basename "$file" .arm64.dll).dll"
cd libs/sws
done
C:\msys64\usr\bin\wget.exe https://github.com/valinet/sws/commit/972acb76d1e6429133c92ed7cdefd29b9a2c6179.patch
fi
C:\msys64\usr\bin\dos2unix.exe 972acb76d1e6429133c92ed7cdefd29b9a2c6179.patch
C:\msys64\usr\bin\dos2unix.exe SimpleWindowSwitcher/sws_def.h
C:\msys64\usr\bin\patch.exe -N SimpleWindowSwitcher/sws_def.h 972acb76d1e6429133c92ed7cdefd29b9a2c6179.patch
C:\msys64\usr\bin\unix2dos.exe SimpleWindowSwitcher/sws_def.h
exit /b 0
- name : Build funchook amd64
- name : Setup NuGet
shell : powershell
uses : nuget/setup-nuget@v2
run : |
cd libs/funchook
md build
cd build
cmake -G "Visual Studio 17 2022" -A x64 -DFUNCHOOK_CPU=x86 ..
(gc .\funchook-static.vcxproj) -replace '<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>', '<RuntimeLibrary>MultiThreaded</RuntimeLibrary>' | Out-File .\funchook-static.vcxproj
cmake --build . --config Release
- name : Build funchook arm64
- name : Restore NuGet packages
shell : powershell
run : |
run : |
nuget restore ExplorerPatcher.sln
cd libs/funchook
md build-arm64
cd build-arm64
cmake -G "Visual Studio 17 2022" -A ARM64 -DFUNCHOOK_CPU=arm64 -DFUNCHOOK_DISASM=capstone -DFUNCHOOK_BUILD_TESTS=OFF ..
(gc .\funchook-static.vcxproj) -replace '<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>', '<RuntimeLibrary>MultiThreaded</RuntimeLibrary>' | Out-File .\funchook-static.vcxproj
cmake --build . --config Release
- name : Build EP IA-32
if : github.event.inputs.config == ''
working-directory : ${{env.GITHUB_WORKSPACE}}
run : |
msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} /p:Platform=IA-32 ${{env.SOLUTION_FILE_PATH}}
- name : Build EP amd64
# - name: Download ep_taskbar
if : github.event.inputs.config == ''
# uses: robinraju/release-downloader@v1
working-directory : ${{env.GITHUB_WORKSPACE}}
# with:
run : |
# repository: ExplorerPatcher/ep_taskbar_releases
msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} /p:Platform=amd64 ${{env.SOLUTION_FILE_PATH}}
# fileName: ep_taskbar.*.dll
# latest: true
# out-file-path: build/Release
- name : Build EP arm64
# build/Release/ep_taskbar.*.amd64.dll -> build/Release/x64/ep_taskbar.*.dll
if : github.event.inputs.config == ''
# build/Release/ep_taskbar.*.arm64.dll -> build/Release/ARM64/ep_taskbar.*.dll
working-directory : ${{env.GITHUB_WORKSPACE}}
# - name: Move ep_taskbar
run : |
# shell: bash
msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} /p:Platform=arm64 /p:WithArm64XBinaries=true ${{env.SOLUTION_FILE_PATH}}
# run: |
# if ls build/Release/ep_taskbar.*.amd64.dll 1> /dev/null 2>&1; then
# mkdir -p build/Release/x64
# for file in build/Release/ep_taskbar.*.amd64.dll; do
# mv "$file" "build/Release/x64/$(basename "$file" .amd64.dll).dll"
# done
# fi
#
# if ls build/Release/ep_taskbar.*.arm64.dll 1> /dev/null 2>&1; then
# mkdir -p build/Release/ARM64
# for file in build/Release/ep_taskbar.*.arm64.dll; do
# mv "$file" "build/Release/ARM64/$(basename "$file" .arm64.dll).dll"
# done
# fi
- name : Build EP custom
- name : Build funchook amd64
if : github.event.inputs.config != ''
shell : powershell
working-directory : ${{env.GITHUB_WORKSPACE}}
run : |
run : |
cd libs/funchook
msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} /p:Platform=${{ github.event.inputs.config }} ${{env.SOLUTION_FILE_PATH}}
md build
cd build
cmake -G "Visual Studio 17 2022" -A x64 -DFUNCHOOK_CPU=x86 ..
(gc .\funchook-static.vcxproj) -replace '<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>', '<RuntimeLibrary>MultiThreaded</RuntimeLibrary>' | Out-File .\funchook-static.vcxproj
cmake --build . --config Release
- name : Create expected build directory
- name : Build funchook arm64
if : github.event.inputs.build_dir != ''
shell : powershell
shell : bash
run : |
run : |
cd libs/funchook
mkdir build
md build-arm64
cp -r ${{ github.event.inputs.build_dir }}/Release build/Release
cd build-arm64
cmake -G "Visual Studio 17 2022" -A ARM64 -DFUNCHOOK_CPU=arm64 -DFUNCHOOK_DISASM=capstone -DFUNCHOOK_BUILD_TESTS=OFF ..
- name : Generate dxgi.dll
(gc .\funchook-static.vcxproj) -replace '<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>', '<RuntimeLibrary>MultiThreaded</RuntimeLibrary>' | Out-File .\funchook-static.vcxproj
shell : bash
cmake --build . --config Release
run : |
if [[ -f "build/Release/x64/ExplorerPatcher.amd64.dll" ]]; then cp build/Release/x64/ExplorerPatcher.amd64.dll build/Release/x64/dxgi.dll; fi
if [[ -f "build/Release/ARM64/ExplorerPatcher.arm64.dll" ]]; then cp build/Release/ARM64/ExplorerPatcher.arm64.dll build/Release/ARM64/dxgi.dll; fi
- name : Patch amd64 setup
- name : Build EP IA-32
shell : cmd
if : github.event.inputs.config == ''
run : |
working-directory : ${{env.GITHUB_WORKSPACE}}
if exist "build\Release\x64\ExplorerPatcher.amd64.dll" (
run : |
"build\Release\x64\ep_setup_patch.exe" "build\Release\x64\ExplorerPatcher.amd64.dll" "build\Release\x64\ep_setup.exe"
msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} /p:Platform=IA-32 ${{env.SOLUTION_FILE_PATH}}
)
exit /b 0
- name : Patch arm64 setup
- name : Build EP amd64
shell : cmd
if : github.event.inputs.config == ''
run : |
working-directory : ${{env.GITHUB_WORKSPACE}}
if exist "build\Release\ARM64\ExplorerPatcher.arm64.dll" (
run : |
"build\Release\x64\ep_setup_patch.exe" "build\Release\ARM64\ExplorerPatcher.arm64.dll" "build\Release\ARM64\ep_setup.exe"
msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} /p:Platform=amd64 ${{env.SOLUTION_FILE_PATH}}
)
exit /b 0
- name : Upload artifacts
- name : Build EP arm64
uses : actions/upload-artifact@v4
if : github.event.inputs.config == ''
with:
working-directory : ${{env.GITHUB_WORKSPACE}}
name : ep_bin_multi_${{ steps.vars.outputs.sha_short }}_${{ steps.vars.outputs.branch }}
run : |
path : |
msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} /p:Platform=arm64 /p:WithArm64XBinaries=true ${{env.SOLUTION_FILE_PATH}}
build/Release/
# build/Release/x64/ep_setup.exe -> build/Release/ep_setup.exe
- name : Build EP custom
# build/Release/ARM64/ep_setup.exe -> build/Release/ep_setup.arm64.exe
if : github.event.inputs.config != ''
- name : Stage files for release
working-directory : ${{env.GITHUB_WORKSPACE}}
if : github.ref == 'refs/heads/master' && github.event.inputs.ref == ''
run : |
shell : bash
msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} /p:Platform=${{ github.event.inputs.config }} ${{env.SOLUTION_FILE_PATH}}
run : |
if [ -d "build/Release/x64" ] && ls build/Release/x64/ep_setup.exe 1> /dev/null 2>&1; then
cp build/Release/x64/ep_setup.exe build/Release/ep_setup.exe
fi
if [ -d "build/Release/ARM64" ] && ls build/Release/ARM64/ep_setup.exe 1> /dev/null 2>&1; then
cp build/Release/ARM64/ep_setup.exe build/Release/ep_setup.arm64.exe
fi
- name : Generate release name
- name : Create expected build directory
shell : bash
if : github.event.inputs.build_dir != ''
working-directory : build/Release/x64
shell : bash
if : github.ref == 'refs/heads/master' && github.event.inputs.ref == ''
run : |
run : |
mkdir build
echo "data=$(./ep_generate_release_name.exe)" >> $GITHUB_OUTPUT
cp -r ${{ github.event.inputs.build_dir }}/Release build/Release
id : release_name
- name : Generate dxgi.dll
- name : Generate release notes
shell : bash
shell : bash
run : |
working-directory : build/Release/x64
if [[ -f "build/Release/x64/ExplorerPatcher.amd64.dll" ]]; then cp build/Release/x64/ExplorerPatcher.amd64.dll build/Release/x64/dxgi.dll; fi
if : github.ref == 'refs/heads/master' && github.event.inputs.ref == ''
if [[ -f "build/Release/ARM64/ExplorerPatcher.arm64.dll" ]]; then cp build/Release/ARM64/ExplorerPatcher.arm64.dll build/Release/ARM64/dxgi.dll; fi
run : |
echo "data<<EP_RELEASE_DESCRIPTION_DELIM" >> $GITHUB_OUTPUT
- name : Patch amd64 setup
echo "$(./ep_generate_release_description.exe ${{ steps.vars.outputs.sha_short }} ${{ steps.vars.outputs.branch }} ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})" >> $GITHUB_OUTPUT
shell : cmd
echo "EP_RELEASE_DESCRIPTION_DELIM" >> $GITHUB_OUTPUT
run : |
id : release_description
if exist "build\Release\x64\ExplorerPatcher.amd64.dll" (
"build\Release\x64\ep_setup_patch.exe" "build\Release\x64\ExplorerPatcher.amd64.dll" "build\Release\x64\ep_setup.exe"
- name : Create/update release (valinet)
)
uses : softprops/action-gh-release@v2
exit /b 0
if : github.repository_owner == 'valinet' && github.ref == 'refs/heads/master' && github.event.inputs.ref == ''
id : create_release
- name : Patch arm64 setup
with:
shell : cmd
draft : false
run : |
prerelease : ${{ !startsWith(github.event.head_commit.message, 'rel_') }}
if exist "build\Release\ARM64\ExplorerPatcher.arm64.dll" (
name : ${{ steps.release_name.outputs.data }}
"build\Release\x64\ep_setup_patch.exe" "build\Release\ARM64\ExplorerPatcher.arm64.dll" "build\Release\ARM64\ep_setup.exe"
tag_name : ${{ steps.release_name.outputs.data }}_${{ steps.vars.outputs.sha_short }}
)
body : ${{ steps.release_description.outputs.data }}
exit /b 0
files : |
build/Release/ep_setup.exe
- name : Upload artifacts
build/Release/ep_setup.arm64.exe
uses : actions/upload-artifact@v4
env:
with:
GITHUB_TOKEN : ${{ secrets.PAT }}
name : ep_bin_multi_${{ steps.vars.outputs.sha_short }}_${{ steps.vars.outputs.branch }}
path : |
- name : Create/update release (forks)
build/Release/
uses : softprops/action-gh-release@v2
if : github.repository_owner != 'valinet' && github.ref == 'refs/heads/master' && github.event.inputs.ref == ''
# build/Release/x64/ep_setup.exe -> build/Release/ep_setup.exe
id : create_release_fork
# build/Release/ARM64/ep_setup.exe -> build/Release/ep_setup.arm64.exe
with:
- name : Stage files for release
draft : false
if : github.ref == 'refs/heads/master' && github.event.inputs.ref == ''
prerelease : ${{ !startsWith(github.event.head_commit.message, 'rel_') }}
shell : bash
name : ${{ steps.release_name.outputs.data }}
run : |
tag_name : ${{ steps.release_name.outputs.data }}_${{ steps.vars.outputs.sha_short }}
if [ -d "build/Release/x64" ] && ls build/Release/x64/ep_setup.exe 1> /dev/null 2>&1; then
body : ${{ steps.release_description.outputs.data }}
cp build/Release/x64/ep_setup.exe build/Release/ep_setup.exe
files : |
fi
build/Release/ep_setup.exe
if [ -d "build/Release/ARM64" ] && ls build/Release/ARM64/ep_setup.exe 1> /dev/null 2>&1; then
build/Release/ep_setup.arm64.exe
cp build/Release/ARM64/ep_setup.exe build/Release/ep_setup.arm64.exe
env:
fi
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
- name : Generate release name
shell : bash
working-directory : build/Release/x64
if : github.ref == 'refs/heads/master' && github.event.inputs.ref == ''
run : |
echo "data=$(./ep_generate_release_name.exe)" >> $GITHUB_OUTPUT
id : release_name
- name : Generate release notes
shell : bash
working-directory : build/Release/x64
if : github.ref == 'refs/heads/master' && github.event.inputs.ref == ''
run : |
echo "data<<EP_RELEASE_DESCRIPTION_DELIM" >> $GITHUB_OUTPUT
echo "$(./ep_generate_release_description.exe ${{ steps.vars.outputs.sha_short }} ${{ steps.vars.outputs.branch }} ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})" >> $GITHUB_OUTPUT
echo "EP_RELEASE_DESCRIPTION_DELIM" >> $GITHUB_OUTPUT
id : release_description
- name : Create/update release (valinet)
uses : softprops/action-gh-release@v2
if : github.repository_owner == 'valinet' && github.ref == 'refs/heads/master' && github.event.inputs.ref == ''
id : create_release
with:
draft : false
prerelease : ${{ !startsWith(github.event.head_commit.message, 'rel_') }}
name : ${{ steps.release_name.outputs.data }}
tag_name : ${{ steps.release_name.outputs.data }}_${{ steps.vars.outputs.sha_short }}
body : ${{ steps.release_description.outputs.data }}
files : |
build/Release/ep_setup.exe
build/Release/ep_setup.arm64.exe
env:
GITHUB_TOKEN : ${{ secrets.PAT }}
- name : Create/update release (forks)
uses : softprops/action-gh-release@v2
if : github.repository_owner != 'valinet' && github.ref == 'refs/heads/master' && github.event.inputs.ref == ''
id : create_release_fork
with:
draft : false
prerelease : ${{ !startsWith(github.event.head_commit.message, 'rel_') }}
name : ${{ steps.release_name.outputs.data }}
tag_name : ${{ steps.release_name.outputs.data }}_${{ steps.vars.outputs.sha_short }}
body : ${{ steps.release_description.outputs.data }}
files : |
build/Release/ep_setup.exe
build/Release/ep_setup.arm64.exe
env:
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}