-
-
Notifications
You must be signed in to change notification settings - Fork 2.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closing the game during update at just the right time will not open again #18318
Comments
@caesay may be interested in this. Could you also check to see if there's any exceptions in event viewer relating to the stub? The runtime.log there seems to be from the prior/working version. |
Yes, the runtime.log is from the second time I triggered the bug, like shown on the video. It was basically the same method as on the video, except for the video I re-recorded it a few times, as the timing matters (there is like a 1-3s window for this bug to be triggered on my machine, and I managed to miss it a few times by being too early or too late). There is sadly absolutely no useful information in Event Viewer besides "Failed to create CoreCLR". One thing I tried though, is deleting everything but osu!.exe and osu!.dll, and running the exe directly (from the app folder) has asked me to download .NET Core 6.0.2, even though I already have it installed??? |
Right, so that would be expected. I believe what's going on there is one of the dependencies are missing (in your screenshot it's coreclr itself), and the apphost ( I peeped slightly into Squirrel's source and it seems it extracts directly into the @caesay Curious to hear your thoughts on this / whether it's something you'd consider doing / whether there's another way around this. Would be happy to make an issue on Squirrel for it if you deem reasonable. As an aside and completely unrelated: It's slightly concerning to me that all |
The missing |
Not going to comment on any specific launch errors, because if there are missing dll's or missing json files (still required in self contained deployments!) in the app dir you can get all sorts of weird errors from dotnet. The stub is not to blame, really - it just tries to launch the latest version and exit. On the Squirrel architecture point, old Squirrel downloads new versions to Clowd.Squirrel 3.0.0 (currently unreleased, eta 2 weeks on first prerelease) has a totally new approach. Firstly, the app will be run from a If the shortcut is clicked and for any reason we can't replace the current dir on app start (eg. it is still running) we will just fail to update silently and continue running the old version. Calling UpdateManager.RestartApp is more aggressive and will try to kill any running processes in the dir to force the update. Calling This new approach solves a lot of problems; and it also opens up MacOS support since essentially what we are doing on Mac is just replacing a There are two problems caused by the new approach that I have not quite solved yet (not an issue on Mac, only on Windows):
For 1. there are a couple of options. For 2. there are also lots of options, perhaps the simplest thing could be to write the Squirrel version metadata to the directory as the last operation when downloading an update. If this metadata file is ever missing in a pending update folder, we just assume it's a broken version and throw it away. A more complex approach perhaps could be to try and detect that the app is broken, by re-checking the files in the directory against the downloaded .nupkg before applying a Certainly willing to hear any feedback about 1. and 2. and will consider it as I get closer to a v3.0.0 pre-release. |
On another note, I would highly advise that you no longer package your own nupkg via nuget.exe - and instead migrate to using the new P.S. the Mac version of the Squirrel bundler does not allow you to give it a pre-assembled nupkg. it expects either a folder of application files to bundle, or it expects a pre-assembled |
Tracking this at ppy/osu-deploy#125. |
In current xplat branch Squirrel now extracts new versions into a temporary directory and moves it into place when completed to minimize the risk of a half-extracted update being used. |
Type
Other
Bug description
If I close the game during an update at just the right time (discovered by accident), then clicking the shortcut icon on the desktop will not launch the game anymore. Checked in Process Explorer, the executable closes so fast that it doesn't even show up most of the time. Trying to run
%LOCALAPPDATA%\osulazer\osu!.exe
indeed just closes. Running the previous version's exe directly works just fine however.Seems like it's an issue with the Squirrel stub itself, as it fails even if the new version's folder just exists, empty or not. Deleting the new version's folder "fixes" the issue, and allows the old version to open again, so it can download the new version.
Screenshots or videos
https://www.youtube.com/watch?v=pLpDbaZWCA4
Version
2022.509.0
Logs
runtime.log
updater.log
performance.log
database.log
performance-draw.log
performance-update.log
The text was updated successfully, but these errors were encountered: