mirror of
https://github.com/bloxstraplabs/bloxstrap.git
synced 2025-04-18 16:41:36 -07:00
parent
c7ab37edf1
commit
6a93624040
@ -12,6 +12,8 @@
|
||||
|
||||
string Directory { get; }
|
||||
|
||||
string OldDirectory { get; }
|
||||
|
||||
string LockFilePath { get; }
|
||||
|
||||
string ExecutablePath { get; }
|
||||
|
@ -18,6 +18,8 @@ namespace Bloxstrap.AppData
|
||||
|
||||
public override string Directory => Path.Combine(Paths.Roblox, "Player");
|
||||
|
||||
public string OldDirectory => Path.Combine(Paths.Roblox, "Player.old");
|
||||
|
||||
public AppState State => App.State.Prop.Player;
|
||||
|
||||
public override IReadOnlyDictionary<string, string> PackageDirectoryMap { get; set; } = new Dictionary<string, string>()
|
||||
|
@ -11,7 +11,9 @@
|
||||
public override string ExecutableName => "RobloxStudioBeta.exe";
|
||||
|
||||
public override string Directory => Path.Combine(Paths.Roblox, "Studio");
|
||||
|
||||
|
||||
public string OldDirectory => Path.Combine(Paths.Roblox, "Studio.old");
|
||||
|
||||
public AppState State => App.State.Prop.Studio;
|
||||
|
||||
public override IReadOnlyDictionary<string, string> PackageDirectoryMap { get; set; } = new Dictionary<string, string>()
|
||||
|
@ -452,8 +452,8 @@ namespace Bloxstrap
|
||||
Process.Start(Paths.Process, args);
|
||||
}
|
||||
|
||||
// average grace time between log being created and the window being shown
|
||||
Thread.Sleep(2000);
|
||||
// allow for window to show, since the log is created pretty far beforehand
|
||||
Thread.Sleep(1000);
|
||||
}
|
||||
|
||||
public void Cancel()
|
||||
@ -631,19 +631,36 @@ namespace Bloxstrap
|
||||
{
|
||||
try
|
||||
{
|
||||
// gross hack to see if roblox is still running
|
||||
// i don't want to rely on mutexes because they can change, and will false flag for
|
||||
// running installations that are not by bloxstrap
|
||||
File.Delete(AppData.ExecutablePath);
|
||||
// test to see if any files are in use
|
||||
// if you have a better way to check for this, please let me know!
|
||||
Directory.Move(AppData.Directory, AppData.OldDirectory);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
App.Logger.WriteLine(LOG_IDENT, "Could not delete executable/folder, Roblox may still be running. Aborting update.");
|
||||
App.Logger.WriteLine(LOG_IDENT, "Could not clear old files, aborting update.");
|
||||
App.Logger.WriteException(LOG_IDENT, ex);
|
||||
|
||||
// 0x80070020 is the HRESULT that indicates that a process is still running
|
||||
// (either RobloxPlayerBeta or RobloxCrashHandler), so we'll silently ignore it
|
||||
if ((uint)ex.HResult != 0x80070020)
|
||||
{
|
||||
// ensure no files are marked as read-only for good measure
|
||||
foreach (var file in Directory.GetFiles(AppData.Directory, "*", SearchOption.AllDirectories))
|
||||
Filesystem.AssertReadOnly(file);
|
||||
|
||||
Frontend.ShowMessageBox(
|
||||
Strings.Bootstrapper_FilesInUse,
|
||||
_mustUpgrade ? MessageBoxImage.Error : MessageBoxImage.Warning
|
||||
);
|
||||
|
||||
if (_mustUpgrade)
|
||||
App.Terminate(ErrorCode.ERROR_CANCELLED);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
Directory.Delete(AppData.Directory, true);
|
||||
Directory.Delete(AppData.OldDirectory, true);
|
||||
}
|
||||
|
||||
_isInstalling = true;
|
||||
|
@ -115,7 +115,9 @@
|
||||
{
|
||||
Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
|
||||
|
||||
WriteLine($"[{identifier}] {ex}");
|
||||
string hresult = "0x" + ex.HResult.ToString("X8");
|
||||
|
||||
WriteLine($"[{identifier}] ({hresult}) {ex}");
|
||||
|
||||
Thread.CurrentThread.CurrentUICulture = Locale.CurrentCulture;
|
||||
}
|
||||
|
11
Bloxstrap/Resources/Strings.Designer.cs
generated
11
Bloxstrap/Resources/Strings.Designer.cs
generated
@ -168,6 +168,17 @@ namespace Bloxstrap.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Bloxstrap tried to upgrade Roblox but can't because Roblox's files are still in use.
|
||||
///
|
||||
///Please close any applications that may be using Roblox's files, and relaunch..
|
||||
/// </summary>
|
||||
public static string Bootstrapper_FilesInUse {
|
||||
get {
|
||||
return ResourceManager.GetString("Bootstrapper.FilesInUse", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to You must first install Bloxstrap before uninstalling..
|
||||
/// </summary>
|
||||
|
@ -1241,4 +1241,10 @@ Would you like to enable test mode?</value>
|
||||
<data name="Dialog.Exception.Version" xml:space="preserve">
|
||||
<value>Version {0}</value>
|
||||
</data>
|
||||
<data name="Bootstrapper.FilesInUse" xml:space="preserve">
|
||||
<value>Bloxstrap tried to upgrade Roblox but can't because Roblox's files are still in use.
|
||||
|
||||
Please close any applications that may be using Roblox's files, and relaunch.</value>
|
||||
<comment>This is *not* for when Roblox is still running when trying to upgrade. This applies to files being open (i.e. image assets)</comment>
|
||||
</data>
|
||||
</root>
|
@ -157,6 +157,11 @@
|
||||
{
|
||||
clientVersion = await Http.GetJson<ClientVersion>("https://clientsettingscdn.roblox.com" + path);
|
||||
}
|
||||
catch (HttpRequestException)
|
||||
{
|
||||
// throw up the exception handler chain, as we shouldn't be the one handling it
|
||||
throw;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
App.Logger.WriteLine(LOG_IDENT, "Failed to contact clientsettingscdn! Falling back to clientsettings...");
|
||||
|
Loading…
Reference in New Issue
Block a user