fix(optiscaler): allow dll to load when named dlss-enabler-upscaler.dll #48
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: FrameBridge Release Pipeline | |
| on: | |
| push: | |
| branches: [ "main" ] | |
| paths-ignore: | |
| - 'docs/**' | |
| - 'images/**' | |
| - '**.md' | |
| - '.gitignore' | |
| workflow_dispatch: | |
| permissions: | |
| contents: write | |
| jobs: | |
| build-and-release: | |
| runs-on: windows-latest | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| submodules: 'recursive' | |
| - name: Initialize Submodules | |
| run: git submodule update --init --recursive | |
| - name: Generate Version Number | |
| id: version | |
| shell: powershell | |
| run: | | |
| $version = "1.0.${{ github.run_number }}" | |
| echo "VERSION=$version" >> $env:GITHUB_OUTPUT | |
| echo "Generated version: $version" | |
| - name: Add MSBuild to PATH | |
| uses: microsoft/setup-msbuild@v3 | |
| - name: Build OptiScaler Core | |
| working-directory: ${{ github.workspace }} | |
| run: msbuild /m /p:Configuration=Release /p:Platform=x64 OptiScaler.sln /verbosity:minimal | |
| - name: Prepare Installer Directories | |
| shell: powershell | |
| run: | | |
| New-Item -ItemType Directory -Force -Path "installer\build" | |
| New-Item -ItemType Directory -Force -Path "installer\assets\configs" | |
| New-Item -ItemType Directory -Force -Path "installer\assets\nvidia-env" | |
| New-Item -ItemType Directory -Force -Path "installer\assets\dlssg" | |
| # Move MSBuild outputs | |
| Copy-Item -Path "x64\Release\a\OptiScaler.dll" -Destination "installer\build\" -Force | |
| Copy-Item -Path "x64\Release\a\OptiScaler\libxess*.dll" -Destination "installer\build\" -Force | |
| Copy-Item -Path "x64\Release\a\OptiScaler\amd_fidelityfx_*.dll" -Destination "installer\build\" -Force | |
| if (Test-Path "x64\Release\a\OptiScaler\D3D12_OptiScaler") { Copy-Item -Path "x64\Release\a\OptiScaler\D3D12_OptiScaler" -Destination "installer\build\D3D12_OptiScaler" -Recurse -Force } | |
| if (Test-Path "x64\Release\a\fakenvapi.dll") { Copy-Item -Path "x64\Release\a\fakenvapi.dll" -Destination "installer\build\" -Force } | |
| # Include DLSS Enabler lightweight proxy DLL and its configuration | |
| Copy-Item -Path "installer\dependencies\dlss-enabler.dll" -Destination "installer\build\" -Force | |
| Copy-Item -Path "installer\dependencies\dlss-enabler.ini" -Destination "installer\assets\configs\dlss-enabler.ini" -Force | |
| # Copy INI configuration | |
| Copy-Item -Path "OptiScaler.ini" -Destination "installer\assets\configs\OptiScaler.ini" -Force | |
| Copy-Item -Path "Config.md" -Destination "installer\assets\configs\Config.md" -Force | |
| Copy-Item -Path "LICENSE" -Destination "installer\assets\LICENSE.rtf" -Force | |
| Copy-Item -Path "README.md" -Destination "installer\assets\README.md" -Force | |
| - name: Download External Assets (Nukem9 & NVAPI Proxy) | |
| shell: powershell | |
| run: | | |
| # Download Nukem9 DLSSG-to-FSR3 compiled DLL (OptiScaler mirror - upstream deleted release assets) | |
| Invoke-WebRequest -Uri "https://github.com/optiscaler/dlssg-to-fsr3/releases/download/0.130/dlssg-to-fsr3-master.zip" -OutFile "dlssg.zip" | |
| Expand-Archive -Path "dlssg.zip" -DestinationPath "temp_dlssg" -Force | |
| Copy-Item -Path "temp_dlssg\*" -Destination "installer\assets\dlssg\" -Recurse -Force | |
| Copy-Item "installer\dependencies\nvngx.dll" -Destination "installer\assets\dlssg\nvngx.dll" -Force | |
| # Fetch config/text files from Nukem9 source repo (not included in the mirror zip) | |
| Invoke-WebRequest -Uri "https://raw.githubusercontent.com/Nukem9/dlssg-to-fsr3/master/resources/dlssg_to_fsr3.ini" -OutFile "installer\assets\dlssg\dlssg_to_fsr3.ini" | |
| Invoke-WebRequest -Uri "https://raw.githubusercontent.com/Nukem9/dlssg-to-fsr3/master/resources/read_me_generic_dll.txt" -OutFile "installer\assets\dlssg\READ ME.txt" | |
| - name: Update Inno Setup Version | |
| shell: powershell | |
| run: | | |
| $issPath = "installer\setup.iss" | |
| $content = Get-Content $issPath | |
| $content = $content -replace '#define MyAppVersion ".*"', '#define MyAppVersion "${{ steps.version.outputs.VERSION }}"' | |
| Set-Content -Path $issPath -Value $content -Encoding UTF8 | |
| - name: Compile Inno Setup Installer | |
| shell: powershell | |
| run: | | |
| choco install innosetup -y | |
| # The default install path for Inno Setup 6 via chocolatey | |
| $iscc = "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" | |
| if (-not (Test-Path $iscc)) { | |
| $iscc = "C:\Program Files\Inno Setup 6\ISCC.exe" | |
| } | |
| & $iscc "installer\setup.iss" /O+ | |
| - name: Get Commit Messages for Release Notes | |
| id: release_notes | |
| shell: pwsh | |
| run: | | |
| [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 | |
| $OutputEncoding = [System.Text.Encoding]::UTF8 | |
| $commits = @(git log -5 --pretty=format:"* %h - %s") | |
| $date = (Get-Date).ToUniversalTime().ToString("yyyy-MM-dd HH:mm:ss UTC") | |
| $v = "${{ steps.version.outputs.VERSION }}" | |
| $lines = @( | |
| "# FrameBridge v$v", | |
| "", | |
| "FrameBridge has been updated! This automated release brings the latest upscaling and frame generation capabilities compiled directly from source.", | |
| "", | |
| "### What's Included", | |
| "* **OptiScaler Core:** Built from latest source", | |
| "* **XeSS Library:** Included (bundled with OptiScaler)", | |
| "* **AMD FidelityFX:** Included (bundled with OptiScaler)", | |
| "* **DLSSG-to-FSR3 Module:** Nukem9's mod (v0.130 OptiScaler branch)", | |
| "* **Installer:** Custom Inno Setup wrapper for easy deployment", | |
| "", | |
| "### Changelog (Latest 5 Commits)" | |
| ) | |
| $lines += $commits | |
| $lines += @( | |
| "", | |
| "### Installation", | |
| "1. Download **``framebridge-setup-$v.exe``** from the Assets section below.", | |
| "2. Run the setup and point it to your game's executable directory.", | |
| "3. Choose the installation type based on your needs:", | |
| " * **Preferred installation (DLL package):** Recommended for most users.", | |
| " * **Experimental support:** For AMD and Intel GPUs (installs NVIDIA runtime bypass).", | |
| "4. Launch the game and enjoy!", | |
| "", | |
| "### Release Information", | |
| "* **Build Date:** $date", | |
| "* **Auto-built:** This release was automatically generated by the FrameBridge CI/CD pipeline.", | |
| "", | |
| "### Compatibility", | |
| "Works with most DirectX 12 games that support DLSS2 and DLSS3 natively.", | |
| "", | |
| "### Important Notes", | |
| "* **For NVIDIA GPU users:** Use the standard installation.", | |
| "* **For AMD/Intel GPU users:** Select `Experimental support` during installation.", | |
| "* **Antivirus Warning:** Some antivirus software may flag the installer as a false positive due to DLL injection techniques. This is expected for upscaler mods.", | |
| "* **Multiplayer:** **DO NOT** use FrameBridge in online games with anti-cheat (e.g. EAC, BattlEye). You will get banned!", | |
| "", | |
| "---", | |
| "*For detailed guides and troubleshooting, see the [FrameBridge Wiki](https://github.com/dreyvinixz/FrameBridge/wiki).*" | |
| ) | |
| $notes = $lines -join "`n" | |
| # Write multi-line string to GITHUB_OUTPUT correctly | |
| $EOF = [guid]::NewGuid().ToString() | |
| [System.IO.File]::AppendAllText($env:GITHUB_OUTPUT, "NOTES<<$EOF`n", [System.Text.Encoding]::UTF8) | |
| [System.IO.File]::AppendAllText($env:GITHUB_OUTPUT, "$notes`n", [System.Text.Encoding]::UTF8) | |
| [System.IO.File]::AppendAllText($env:GITHUB_OUTPUT, "$EOF`n", [System.Text.Encoding]::UTF8) | |
| - name: Create GitHub Release | |
| uses: softprops/action-gh-release@v3 | |
| with: | |
| tag_name: v${{ steps.version.outputs.VERSION }} | |
| name: FrameBridge v${{ steps.version.outputs.VERSION }} | |
| body: ${{ steps.release_notes.outputs.NOTES }} | |
| files: installer\Output\framebridge-setup-*.exe | |
| draft: false | |
| prerelease: false | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |