CLOSES #604, CLOSES #666, CLOSES #716, CLOSES #727, CLOSES #763, CLOSES #781, CLOSES #784, CLOSES #799, CLOSES #801, CLOSES #810, CLOSES #828, CLOSES #834, CLOSES #838, CLOSES #849, CLOSES #852, CLOSES #857, CLOSES #863, CLOSES #864, CLOSES #867, CLOSES #869, CLOSES #870, CLOSES #872, CLOSES #839

This commit is contained in:
bryanthaboi
2026-08-05 16:36:37 -04:00
parent f56970350a
commit e2820e02c5
36 changed files with 4046 additions and 64 deletions
+13
View File
@@ -234,6 +234,11 @@ local function launchDownload(url, partAbs, doneAbs)
local batRel = "updates/dl.bat"
love.filesystem.write(batRel,
"@echo off\r\n"
-- start /b hands the child our cwd, the install folder, and the
-- detached cmd.exe held that folder un-movable for the rest of the
-- transfer after the game exited (#727). Every path below is
-- absolute, so park the child in its own directory (the save dir).
.. "cd /d \"%~dp0\"\r\n"
.. "curl -fsSL --connect-timeout 15 --max-time 900 -o \""
.. partAbs .. "\" \"" .. url .. "\"\r\n"
.. "type nul > \"" .. doneAbs .. "\"\r\n")
@@ -271,6 +276,14 @@ local function doDownload()
-- stalled or run-away transfer breaks out and lets verification fail cleanly
local waited, lastSize, lastChange = 0, -1, 0
while true do
-- A queued quit means the window already closed. Bail so the join in
-- Check.shutdown does not hold the dead window's process (and, on
-- Windows, its folder) open for up to the whole transfer (#727). The
-- quit stays on the channel for the command loop; the detached curl
-- times out on its own and the next launch's doCheck verifies and
-- re-offers whatever landed.
local peeked = cmdCh:peek()
if type(peeked) == "table" and peeked.cmd == "quit" then return end
if love.filesystem.getInfo(doneRel) then break end
local pinfo = love.filesystem.getInfo(partRel)
local cur = (pinfo and pinfo.size) or 0