goatcorp / FFXIVQuickLauncher

Custom launcher for FFXIV
https://goatcorp.github.io/
GNU General Public License v3.0
2.78k stars 328 forks source link

FFXIV 5.4 update crashes launcher #324

Closed aurora-a-k-a-lightning closed 3 years ago

aurora-a-k-a-lightning commented 3 years ago

Describe the bug here: After updating FFXIV with the 5.4 patch, the launcher crashes with an exception. I am using the Linux version found on Lutris: https://lutris.net/games/final-fantasy-xiv-a-realm-reborn/

Steps to reproduce the bug:

  1. Install launcher
  2. Download and install all FFXIV patches
  3. Run the game (the game runs fine)
  4. Exit game and launcher
  5. Relaunch FFXIVQuickLauncher

Expected behavior Launcher comes up

Screenshots image

Other information (please complete the following information):

Version: 5.0.3.0 Git Hash: 8dd4055 Context: Unhandled OS: Microsoft Windows NT 6.1.7601 Service Pack 1 64bit? False DX11? True Addons Enabled? True Auto Login Enabled? False Language: English Game path: C:\Program Files (x86)\SquareEnix\FINAL FANTASY XIV - A Realm Reborn

Additional information Stack trace: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object. at XIVLauncher.Windows.SettingsControl.ReloadSettings() in D:\Sapphire\FFXIVQuickLauncher\XIVLauncher\Windows\SettingsControl.xaml.cs:line 73 at XIVLauncher.Windows.SettingsControl..ctor() in D:\Sapphire\FFXIVQuickLauncher\XIVLauncher\Windows\SettingsControl.xaml.cs:line 45 --- End of inner exception stack trace --- at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) at System.Activator.CreateInstance(Type type, Boolean nonPublic) at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark) at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) at System.Activator.CreateInstance(Type type, Object[] args) at System.Xaml.Schema.SafeReflectionInvoker.CreateInstanceCritical(Type type, Object[] arguments) at System.Xaml.Schema.SafeReflectionInvoker.CreateInstance(Type type, Object[] arguments) at System.Xaml.Schema.XamlTypeInvoker.CreateInstance(Object[] arguments) at MS.Internal.Xaml.Runtime.ClrObjectRuntime.CreateInstanceWithCtor(XamlType xamlType, Object[] args) at MS.Internal.Xaml.Runtime.ClrObjectRuntime.CreateInstance(XamlType xamlType, Object[] args) at MS.Internal.Xaml.Runtime.PartialTrustTolerantRuntime.CreateInstance(XamlType xamlType, Object[] args) at System.Xaml.XamlObjectWriter.Logic_CreateAndAssignToParentStart(ObjectWriterContext ctx) at System.Xaml.XamlObjectWriter.WriteStartMember(XamlMember property) at System.Xaml.XamlWriter.WriteNode(XamlReader reader) at System.Windows.Markup.WpfXamlLoader.TransformNodes(XamlReader xamlReader, XamlObjectWriter xamlWriter, Boolean onlyLoadOneNode, Boolean skipJournaledProperties, Boolean shouldPassLineNumberInfo, IXamlLineInfo xamlLineInfo, IXamlLineInfoConsumer xamlLineInfoConsumer, XamlContextStack`1 stack, IStyleConnector styleConnector) at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri) at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri) at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream) at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator) at XIVLauncher.Windows.MainWindow.InitializeComponent() in D:\Sapphire\FFXIVQuickLauncher\XIVLauncher\Windows\MainWindow.xaml:line 1 at XIVLauncher.Windows.MainWindow..ctor() in D:\Sapphire\FFXIVQuickLauncher\XIVLauncher\Windows\MainWindow.xaml.cs:line 49 at XIVLauncher.App.b6_0() in D:\Sapphire\FFXIVQuickLauncher\XIVLauncher\App.xaml.cs:line 152 at System.Windows.Threading.Dispatcher.Invoke(Action callback, DispatcherPriority priority, CancellationToken cancellationToken, TimeSpan timeout) at System.Windows.Threading.Dispatcher.Invoke(Action callback) at XIVLauncher.App.OnUpdateCheckFinished(Object sender, EventArgs e) in D:\Sapphire\FFXIVQuickLauncher\XIVLauncher\App.xaml.cs:line 145 at XIVLauncher.App.App_OnStartup(Object sender, StartupEventArgs e) in D:\Sapphire\FFXIVQuickLauncher\XIVLauncher\App.xaml.cs:line 218 at System.Windows.Application.OnStartup(StartupEventArgs e) at System.Windows.Application.<.ctor>b1_0(Object unused) at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler) at System.Windows.Threading.DispatcherOperation.InvokeImpl() at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state) at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state) at System.Windows.Threading.DispatcherOperation.Invoke() at System.Windows.Threading.Dispatcher.ProcessQueue() at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler) at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs) at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam) at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg) at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame) at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame) at System.Windows.Application.RunDispatcher(Object ignore) at System.Windows.Application.RunInternal(Window window) at System.Windows.Application.Run(Window window) at XIVLauncher.App.Main() Version: 5.0.3.0 Git Hash: 8dd4055 Context: Unhandled OS: Microsoft Windows NT 6.1.7601 Service Pack 1 64bit? False DX11? True Addons Enabled? True Auto Login Enabled? False Language: English Game path: C:\Program Files (x86)\SquareEnix\FINAL FANTASY XIV - A Realm Reborn

Addons: []

goaaats commented 3 years ago

The version of the launcher you're using is months old, update please - there's a script included with lutris.

We don't support old versions and this specific issue is already fixed.

aurora-a-k-a-lightning commented 3 years ago

hi @goaaats :) thanks for that update! i'm new to lutris. how do i update through lutris? as of today, the install script from the site still has the 5.0.3 version. unless i'm looking in the wrong place? https://lutris.net/api/installers/final-fantasy-xiv-a-realm-reb-standalone-dxvk-xivl?format=json

thank you for your help :)

aurora-a-k-a-lightning commented 3 years ago

hi @goaaats i think i got it. i had to:

  1. use the "Edit Installer" option on https://lutris.net/games/final-fantasy-xiv-a-realm-reborn/
  2. update the version to the current in the "Content" section under files - xivlauncher
  3. click "Save draft" at the bottom
  4. then click "Test this installer"

does this get updated regularly on lutris?

thanks :)

krnhotwings commented 3 years ago

Hi @ahay-agile6

Just wanted to comment that I ran into the same problem. Turns out that the updater script uses certain commands that may not be installed on the user's system:

https://gist.githubusercontent.com/cking/8be0bf9a030940df3de7eeeab582180e/raw/e1b652d465398c14d62c9f0ba242ba39f30aafa9/manual.sh

The script uses jq and wrestool, which can be found under the jq package and icoutils package on Ubu 20.04:

sudo apt install jq icoutils

This should allow XIVLauncher to reliably update itself via the updater script.

aurora-a-k-a-lightning commented 3 years ago

Thank you, @krnhotwings! Turns out i had the jq and icoutils libraries already installed... Is there anything else I need to allow for the launcher to update itself? Such as running that script again?

krnhotwings commented 3 years ago

@ahay-agile6 Hmmm, not sure. What happened for me is that the first use of xivlauncher would work, but after that, it would introduce the error message issue from your original post. Then I tried installing the utils, launched xivlauncher, still failed, relaunched, and it worked after that. :shrug:

The updater script gets placed under ~/Games/final-fantasy-xiv-a-realm-reborn/updater.sh. You could try running it manually and seeing if it fails out.