Skip to content

Commit e452bd9

Browse files
committed
feat(rc3): restore RC3 installer workflow and runtime deployment changes
1 parent 2a3e717 commit e452bd9

12 files changed

Lines changed: 1312 additions & 1 deletion

‎Aurora_Common.ps1‎

Lines changed: 298 additions & 0 deletions
Large diffs are not rendered by default.

‎Aurora_Diagnostics.ps1‎

Lines changed: 169 additions & 0 deletions
Large diffs are not rendered by default.

‎Aurora_Installer.ps1‎

Lines changed: 461 additions & 0 deletions
Large diffs are not rendered by default.

‎Aurora_RC3_使用说明.txt‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
Aurora RC3 累计工具替换包
2+
3+
本包包含 RC2 + RC3 的全部 11 个发布工具文件,不包含 OptiScaler.dll、OptiScaler.ini 或 DLSS/Streamline 二进制文件。
4+
5+
1. 先完整解压你已经构建好的 RC2 发布包。
6+
2. 将本 ZIP 内的工具文件覆盖到该发布包根目录。
7+
3. 运行 setup_windows.bat 或 Aurora_Setup.bat,查看自动识别摘要,按 Enter 安装。
8+
4. 在任一已部署入口运行 Remove_Aurora.bat,会按总清单恢复整个游戏的 Runtime 并清理未修改的冗余副本。
9+
10+
不要直接覆盖游戏中已经受安装清单管理的工具文件;应从发布包运行安装器更新,否则手工覆盖可能被视为用户修改。
11+
不要删除游戏根目录或入口目录中的 OptiScaler/AuroraSetup、RuntimeSync 清单及 backup。用户修改的文件和备份会保留。
12+
13+
本轮不包含新的渲染 DLL,也没有宣称实机 6X / 游戏兼容性通过。巫师3双入口、SL1.5.6、燕云 Win64r、异环 winmm 仍需实机核对。
14+
源分支:aurora-rc3-installer-20260913
15+
源提交:f452380c1645c2be8a7ead930b271a67bef04bdc

‎Aurora_RuntimeCatalog.ps1‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Pinned to the SL2 source bytes already shipped by RC2 ab221bf4.
2+
# This is source identity, not a claim of game or GPU compatibility.
3+
$AuroraVerifiedSL2 = @{
4+
'sl.common.dll' = 'DC722C16DFCFF98D85FB488E2C06C0C458948EAB4FBD12F22C523AF7FA449A9F'
5+
'sl.deepdvc.dll' = '0E8D31D9D9202E3C0F15F083F9C62AD0FCF7562F049124762BA021CF1AACF225'
6+
'sl.directsr.dll' = 'BE61327BE4C7984EDDA294CE9107B243A62407C8821D3FADE52142B38246BE95'
7+
'sl.dlss_d.dll' = '2C49F4453F3BD557D7D647E0C25F5DDB5E5F155AD4F9A833B2B99945137C9953'
8+
'sl.dlss_g.dll' = '73B8A78A275B5A3DB58038A4FF701A1FB4049DB5C379EAB9473A09FA856BA84E'
9+
'sl.dlss_nr.dll' = '9F6672E5E0170DC118A3188D21BDA187E1FC1AA3502895B21AB846D23165C11D'
10+
'sl.dlss.dll' = 'E9486745F05BC2A92850E98E2C19B93260C9E2201CFF1685F34B09325A12D77F'
11+
'sl.interposer.dll' = '27B2190057994C0B287C2C5716953BF1586F6499AC12FBBB2092B9AAF8396570'
12+
'sl.nis.dll' = '546F6E927133F041D0009D7C6DDFB96E0909CCB7659B405CDCB53B98C33FEDAC'
13+
'sl.nvperf.dll' = 'BB76B3026BFB49F3C99DFD70797F3E20D853A2A160E74B30F2C6608428AACF21'
14+
'sl.pcl.dll' = 'FCBFA07BEF2581F93148DFC831FEBF6CE12A3170824A3A99B0861B12558FBCB5'
15+
'sl.reflex.dll' = '50DEE3E0D31FF6447ECB92068A8C904B4595C1550E27B647123073FD60B8223F'
16+
}

‎Aurora_Setup.bat‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
@echo off
2+
setlocal DisableDelayedExpansion
3+
chcp 65001 >nul
4+
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%~dp0Aurora_Setup.ps1"
5+
set "AURORA_EXIT=%ERRORLEVEL%"
6+
if not "%AURORA_EXIT%"=="0" pause
7+
exit /b %AURORA_EXIT%

‎Aurora_Setup.ps1‎

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
param(
2+
[ValidateSet('Menu','Install','Check','Repair','Restore','Remove')][string]$Action='Menu',
3+
[string]$PackageDir=$PSScriptRoot, [string]$InstallDir=$PSScriptRoot,
4+
[string]$GameRoot, [string]$GameExe,
5+
[ValidateSet('dxgi.dll','winmm.dll','version.dll','dbghelp.dll','d3d12.dll','wininet.dll','winhttp.dll','OptiScaler.asi')][string]$Proxy,
6+
[switch]$NonInteractive
7+
)
8+
. (Join-Path $PSScriptRoot 'Aurora_Common.ps1')
9+
. (Join-Path $PSScriptRoot 'Aurora_Installer.ps1')
10+
$exitCode=0; $report=Join-Path ([IO.Path]::GetTempPath()) ('Aurora-RC3-'+[Guid]::NewGuid().ToString('N')+'.json')
11+
try {
12+
$PackageDir=Get-AuroraPath $PackageDir; $InstallDir=Get-AuroraPath $InstallDir
13+
Write-Host "`n Aurora 安装器 RC3`n" -ForegroundColor Cyan
14+
Write-Host ' 正在自动检测游戏…'
15+
if (-not $GameRoot -and ((Test-Path -LiteralPath (Join-Path $InstallDir 'OptiScaler\AuroraSetup\installation.json')) -or (Test-Path -LiteralPath (Get-AuroraIndexPath $InstallDir)))) {
16+
$GameRoot=Resolve-AuroraDeploymentRoot $InstallDir
17+
}
18+
if (-not $GameRoot) {
19+
$roots=@(Find-AuroraGames @($InstallDir,$PackageDir))
20+
if ($roots.Count -eq 1) { $GameRoot=$roots[0] }
21+
elseif ($roots.Count -gt 1) {
22+
if ($NonInteractive) { throw '检测到多个游戏,请通过 GameRoot 指定本次游戏。' }
23+
$n=Read-AuroraChoice '检测到多个游戏,请选择要安装的游戏' ($roots+@('取消'))
24+
if ($n -gt $roots.Count) { exit 0 }; $GameRoot=$roots[$n-1]
25+
} else {
26+
if ($NonInteractive) { throw '未能自动定位游戏,请通过 GameRoot 指定游戏目录。' }
27+
$inputPath=Read-Host ' 未自动找到游戏,请粘贴游戏目录或 EXE 路径(直接回车退出)'
28+
if (-not $inputPath) { exit 0 }; $GameRoot=Resolve-AuroraDeploymentRoot $inputPath
29+
}
30+
}
31+
$GameRoot=Get-AuroraPath $GameRoot; Assert-AuroraGameRoot $GameRoot
32+
$index=Open-AuroraIndex $GameRoot
33+
if ($Action -in @('Menu','Install','Repair')) {
34+
$scan=Get-AuroraScan $GameRoot
35+
if (-not $scan.Complete -and $Action -ne 'Menu') { throw '游戏目录未能完整读取,已停止安装。请确认目录权限,并避免目录联接。' }
36+
$candidates=@(Get-AuroraDeploymentCandidates $scan)
37+
if (-not $candidates.Count -and $Action -ne 'Menu') { throw '未发现安全的 x64 游戏入口。请确认完整游戏目录;与 x64 工具共用目录的入口不会自动注入。' }
38+
if ($GameExe -and -not @($candidates | Where-Object { $_.Path -ieq (Get-AuroraPath $GameExe) }).Count) { throw '指定 EXE 未通过安全筛选。' }
39+
Write-Host (' ✓ 已检测到游戏:'+[IO.Path]::GetFileName($GameRoot)) -ForegroundColor Green
40+
Write-Host (' ✓ 将覆盖 '+@($candidates | Group-Object Directory).Count+' 个游戏入口目录') -ForegroundColor Green
41+
foreach ($c in @($candidates | Select-Object -First 3)) { Write-Host (' '+$c.Path.Substring($GameRoot.Length).TrimStart('\')) }
42+
if ($candidates.Count -gt 3) { Write-Host ' 其余入口见详细报告。' }
43+
if (-not $scan.Complete -or -not $candidates.Count) { Write-Host ' ! 当前不能安全安装;仍可选择恢复 / 卸载。' -ForegroundColor Yellow }
44+
Write-Host ' ✓ 自动匹配 Proxy,保留现有配置,替换前备份' -ForegroundColor Green
45+
Write-Host ' ! SL1 和未知 Runtime 保留;安装后请进游戏核对效果' -ForegroundColor Yellow
46+
Write-AuroraJson $report ([pscustomobject]@{GameRoot=$GameRoot;Candidates=$candidates;RuntimeGroups=@(Get-AuroraRuntimeGroups $scan $candidates)})
47+
if (-not $NonInteractive) {
48+
while ($true) {
49+
Write-Host "`n [1 / Enter] 一键安装 / 更新`n [2] 修复 / 恢复 / 卸载`n [3] 高级工具与诊断`n [Q] 退出"
50+
$choice=Read-Host ' 请选择'
51+
if ($choice -in @('','1')) { $Action='Install'; break }
52+
if ($choice -ieq 'Q') { exit 0 }
53+
if ($choice -eq '2') {
54+
$n=Read-AuroraChoice '修复 / 恢复 / 卸载' @('修复安装并安全同步 Runtime','恢复游戏原版 Runtime','卸载所有已记录的 Aurora 副本','返回')
55+
if ($n -eq 4) { continue }; $Action=@('Repair','Restore','Remove')[$n-1]; break
56+
}
57+
if ($choice -eq '3') {
58+
$n=Read-AuroraChoice '高级工具与诊断' @('查看完整扫描报告','手动修改 Proxy','只读诊断实际加载情况','返回')
59+
if ($n -eq 1) { Get-Content -LiteralPath $report -Raw -Encoding UTF8 | Write-Host }
60+
if ($n -eq 2) {
61+
$proxies=@('dxgi.dll','winmm.dll','version.dll','dbghelp.dll','d3d12.dll','wininet.dll','winhttp.dll','OptiScaler.asi')
62+
Write-Host ' 异环默认 winmm.dll;已有第三方 Proxy 时不会覆盖。ASI 需要已有 ASI Loader。' -ForegroundColor Yellow
63+
$p=Read-AuroraChoice 'Proxy' ($proxies+@('返回自动策略'))
64+
$Proxy=$null; if ($p -le $proxies.Count) { $Proxy=$proxies[$p-1] }
65+
}
66+
if ($n -eq 3) { $Action='Check'; break }
67+
}
68+
}
69+
} elseif ($Action -eq 'Menu') { $Action='Install' }
70+
}
71+
if ($Action -in @('Install','Repair')) {
72+
Write-Host "`n 正在备份并部署 Aurora…"
73+
$index=Install-AuroraDeployment $GameRoot $PackageDir $Proxy $report
74+
Write-Host "`n ✓ 安装完成,所有候选入口已部署并校验。" -ForegroundColor Green
75+
Write-Host ' 可以启动游戏,按 Insert 核对 Aurora。'
76+
} elseif ($index -and $Action -in @('Restore','Remove')) {
77+
$preserved=@(Remove-AuroraDeployment $index $report -RuntimeOnly:($Action -eq 'Restore'))
78+
Write-Host "`n ✓ 已恢复可恢复的原版文件。" -ForegroundColor Green
79+
if ($Action -eq 'Remove') { Write-Host ' ✓ 已清理清单记录且未被修改的 Aurora 副本。' -ForegroundColor Green }
80+
if ($preserved.Count) { Write-Host (' ! 保留了 '+$preserved.Count+' 个用户修改文件,备份与详情已保留。') -ForegroundColor Yellow }
81+
} elseif ($index -and $Action -eq 'Check') {
82+
foreach ($target in $index.Targets) {
83+
foreach ($exe in $target.Executables) {
84+
$log=Join-Path ([IO.Path]::GetTempPath()) ('Aurora-Check-'+[Guid]::NewGuid().ToString('N')+'.log.txt')
85+
Invoke-AuroraRuntimeTask Check $GameRoot $target.Directory $log $exe
86+
Write-Host (' ✓ 诊断报告:'+$log) -ForegroundColor Green
87+
}
88+
}
89+
Save-AuroraInstallReport $index $report
90+
} else {
91+
# Existing RC2 installations keep their original recovery path and journals.
92+
$args=@('-NoProfile','-ExecutionPolicy','Bypass','-File',(Join-Path $PSScriptRoot 'Aurora_Setup_Legacy.ps1'),'-Action',$Action,'-InstallDir',$InstallDir,'-GameRoot',$GameRoot,'-NonInteractive')
93+
if ($GameExe) { $args+=@('-GameExe',$GameExe) }
94+
& powershell.exe @args 2>&1 | Out-File -LiteralPath ([IO.Path]::ChangeExtension($report,'.txt')) -Encoding utf8 -Append
95+
if ($LASTEXITCODE) { throw 'RC2 恢复 / 诊断未完成,请查看详情。' }
96+
Write-Host ' ✓ 操作完成。' -ForegroundColor Green
97+
}
98+
} catch {
99+
$exitCode=4
100+
Write-Host ("`n ✕ "+$_.Exception.Message) -ForegroundColor Red
101+
$_ | Out-String | Add-Content -LiteralPath ([IO.Path]::ChangeExtension($report,'.log.txt')) -Encoding UTF8
102+
}
103+
$available=@($report,[IO.Path]::ChangeExtension($report,'.txt'),[IO.Path]::ChangeExtension($report,'.log.txt')) | Where-Object { Test-Path -LiteralPath $_ }
104+
if (@($available).Count) { Write-Host ("`n 详细报告:"+@($available)[0]) }
105+
if (-not $NonInteractive) {
106+
while ((Read-Host ' [D] 查看详情 / [Enter] 退出') -ieq 'D') {
107+
foreach ($path in @($report,[IO.Path]::ChangeExtension($report,'.txt'),[IO.Path]::ChangeExtension($report,'.log.txt'))) {
108+
if (Test-Path -LiteralPath $path) { Get-Content -LiteralPath $path -Raw -Encoding UTF8 | Write-Host }
109+
}
110+
}
111+
}
112+
exit $exitCode

‎Aurora_Setup_Legacy.ps1‎

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
param(
2+
[ValidateSet('Check','Repair','Restore','Remove')][string]$Action='Check',
3+
[string]$PackageDir=$PSScriptRoot, [string]$InstallDir=$PSScriptRoot,
4+
[string]$GameRoot, [string]$GameExe,
5+
[ValidateSet('dxgi.dll','winmm.dll','version.dll','dbghelp.dll','d3d12.dll','wininet.dll','winhttp.dll','OptiScaler.asi')][string]$Proxy,
6+
[switch]$NonInteractive
7+
)
8+
. (Join-Path $PSScriptRoot 'Aurora_Common.ps1')
9+
$opLock=$null
10+
try {
11+
$PackageDir=Get-AuroraPath $PackageDir; $InstallDir=Get-AuroraPath $InstallDir
12+
$metaPath=Join-Path $InstallDir 'OptiScaler\AuroraSetup\installation.json'
13+
Assert-AuroraPlainPath $metaPath
14+
if ($Action -ne 'Install' -and (Test-Path -LiteralPath $metaPath)) {
15+
$meta=Get-Content -LiteralPath $metaPath -Raw -Encoding UTF8 | ConvertFrom-Json
16+
if (-not $GameRoot) { $GameRoot=[string]$meta.GameRoot }
17+
if (-not $GameExe) { $GameExe=[string]$meta.GameExe }
18+
}
19+
if (-not $GameRoot) { $GameRoot=Resolve-AuroraGameRoot $InstallDir }
20+
$GameRoot=Get-AuroraPath $GameRoot; Assert-AuroraGameRoot $GameRoot
21+
if (-not (Test-AuroraWithin $InstallDir $GameRoot)) { throw '安装目录超出游戏范围。' }
22+
$runtime=Join-Path $PSScriptRoot 'runtime_sync.ps1'
23+
$mode=@{Check='Check';Repair='Install';Restore='Restore';Remove='Restore'}[$Action]
24+
if (-not $mode) { throw '操作无效。' }
25+
if ($Action -in @('Repair','Restore','Remove') -and -not $NonInteractive) {
26+
Write-Host "操作范围:$GameRoot"
27+
if ((Read-AuroraChoice '请先关闭游戏和启动器的更新任务' @('继续操作','取消')) -eq 2) { exit 0 }
28+
}
29+
$args=@('-NoProfile','-ExecutionPolicy','Bypass','-File',$runtime,'-Mode',$mode,'-InstallDir',$InstallDir,'-GameRoot',$GameRoot)
30+
if ($GameExe) { $args += @('-GameExe',$GameExe) }
31+
if ($Action -eq 'Check') {
32+
$report=Join-Path ([IO.Path]::GetTempPath()) ('Aurora-Report-'+[Guid]::NewGuid().ToString('N')+'.json')
33+
$args += @('-ReportPath',$report)
34+
}
35+
if ($Action -eq 'Remove') { $opLock=Enter-AuroraLock $GameRoot; $args += '-CallerHasLock' }
36+
& powershell.exe @args
37+
if ($LASTEXITCODE -ne 0) { throw '运行库操作未完成,请按上方提示处理,备份已保留。' }
38+
if ($Action -eq 'Remove') {
39+
$journalPath=Join-Path $InstallDir 'OptiScaler\AuroraSetup\manifest.json'
40+
if (-not (Test-Path -LiteralPath $journalPath)) { throw '未找到新版安装清单。旧版安装请使用其原卸载器;不会猜测删除文件。' }
41+
$journal=Open-AuroraJournal $journalPath $GameRoot $InstallDir
42+
foreach ($e in @($journal.Entries)) {
43+
if ($e.TargetPath -ieq (Join-Path $InstallDir 'OptiScaler.ini') -and (Test-Path -LiteralPath $e.TargetPath)) {
44+
$current=Get-AuroraHash $e.TargetPath
45+
if ($current -ne $e.DeployedHash -and $current -ne $e.OriginalHash) {
46+
$e.Status='Preserved'; Write-Host '保留你修改过的 OptiScaler.ini。'
47+
}
48+
}
49+
}
50+
Assert-AuroraRestoreReady $journal
51+
Write-AuroraJson $journalPath $journal
52+
$fails=Restore-AuroraJournal $journal $journalPath
53+
if ($fails) { throw '部分文件已变化,保留这些文件和备份,请查看上方路径。' }
54+
Write-Host '已卸载本工具记录且未被修改的文件;原有文件、用户改动和备份保留。'
55+
}
56+
exit 0
57+
} catch { Write-Host "[操作停止] $($_.Exception.Message)" -ForegroundColor Red; exit 4 }
58+
finally {
59+
if ($null -ne $opLock) { $opLock.Dispose() }
60+
}

‎Check_DLSS_Runtime.bat‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
@echo off
2+
setlocal DisableDelayedExpansion
3+
chcp 65001 >nul
4+
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%~dp0Aurora_Setup.ps1" -Action Check -InstallDir "%~dp0."
5+
set "AURORA_EXIT=%ERRORLEVEL%"
6+
echo.
7+
echo 只读检查已结束。如需修复,请运行 Aurora_Setup.bat 并选择修复运行库。
8+
pause
9+
exit /b %AURORA_EXIT%

‎Remove_Aurora.bat‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
@echo off
2+
setlocal DisableDelayedExpansion
3+
chcp 65001 >nul
4+
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%~dp0Aurora_Setup.ps1" -Action Remove -InstallDir "%~dp0."
5+
set "AURORA_EXIT=%ERRORLEVEL%"
6+
if not "%AURORA_EXIT%"=="0" pause
7+
exit /b %AURORA_EXIT%

0 commit comments

Comments
 (0)