Skip to content

fix(optiscaler): allow dll to load when named dlss-enabler-upscaler.dll #48

fix(optiscaler): allow dll to load when named dlss-enabler-upscaler.dll

fix(optiscaler): allow dll to load when named dlss-enabler-upscaler.dll #48

Workflow file for this run

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 }}