Abdelrhman-AK / WinPaletter

Advanced Windows Appearance Editor
Other
1.37k stars 57 forks source link

:x: [Error] Newtonsoft.Json.JsonReaderException (1.0.8.5, Beta, Build: Debug) #215

Closed valsamis-d closed 8 months ago

valsamis-d commented 8 months ago

:x: Error report

Describe the error

Upon starting WinPaletter I got an exception. Details in the log below. Clicking on "Continue" looks like bypassing the error but WinPaletter window is completely blank and doesn't load.

How to reproduce the error

Just download an execture WinPaletter v1.0.8.5 Beta, either Release of Debug build/

WinPaletter Log

//General information
//...........................................................
   Report.Date = "Τρίτη, 20 Φεβρουαρίου 2024 11:59:02";
   OS = "Windows 11, 10.0.22631.3085, 64-bit";
   WinPaletter.Version = "1.0.8.5, Beta, Build: Debug";
   WinPaletter.Language = "English";
   WinPaletter.Debugging = false;

//Error details
//...........................................................
   Exception.message = "Unexpected character encountered while parsing value: {. Path 'profiles.list[3].colorScheme', line 80, position 17.";
   Exception.type = "Newtonsoft.Json.JsonReaderException";
   Exception.stack.trace =
   {
         at Newtonsoft.Json.JsonTextReader.ReadStringValue(ReadType readType)
         at Newtonsoft.Json.JsonTextReader.ReadAsString()
         at Newtonsoft.Json.JsonReader.ReadForType(JsonContract contract, Boolean hasConverter)
         at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
         at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
         at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
         at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateList(IList list, JsonReader reader, JsonArrayContract contract, JsonProperty containerProperty, String id)
         at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateList(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, Object existingValue, String id)
         at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
         at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target)
         at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
         at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
         at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
         at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ResolvePropertyAndCreatorValues(JsonObjectContract contract, JsonProperty containerProperty, JsonReader reader, Type objectType)
         at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObjectUsingCreatorWithParameters(JsonReader reader, JsonObjectContract contract, JsonProperty containerProperty, ObjectConstructor`1 creator, String id)
         at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
         at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
         at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
         at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
         at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
         at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
         at WinPaletter.WinTerminal..ctor(String File, Mode Mode, Version Version)
         at WinPaletter.Theme.Manager..ctor(Source Source, String File, Boolean ignoreExtractionThemePack, Boolean ignoreErrors)
         at WinPaletter.Program.LoadThemeManager()
         at WinPaletter.Program.InitializeApplication(Boolean showLoginDialog)
         at WinPaletter.User.OnUserSwitch(UserChangeEventArgs e)
         at WinPaletter.User.set_SID(String value)
         at WinPaletter.UserSwitch.Button1_Click(Object sender, EventArgs e)
         at System.Windows.Forms.Control.OnClick(EventArgs e)
         at WinPaletter.UI.WP.Button.OnClick(EventArgs e)
         at System.Windows.Forms.Button.PerformClick()
         at System.Windows.Forms.Control.OnDoubleClick(EventArgs e)
         at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
         at System.Windows.Forms.Control.WndProc(Message& m)
         at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
   };
   Exception.target.void_function = "Newtonsoft.Json.ReadStringValue()";
   Exception.assembly = "Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed";
   Exception.assembly.file = "";
   Exception.HRESULT = -2146233088;
   Win32.exception.message = "The operation completed successfully";
   Exception.type = "System.ComponentModel.Win32Exception";
   Win32.exception.Marshal.GetLastWin32Error = 1400;

Screenshots/Screen records

Blank WinPaletter window after clicking "Continue" XagXv5M8bH

Abdelrhman-AK commented 8 months ago

There is something wrong in a character in setting.json file of Windows Terminal.

Can you give me a copy of settings file of both Windows Terminal and Windows Terminal Preview?

valsamis-d commented 8 months ago

Sure. Here you are: Windows_Terminal_Settings.json

Windows_Terminal_Preview_Settings.json

Abdelrhman-AK commented 8 months ago

Windows_Terminal_Preview_Settings.json has another structure for color scheme for profile PowerShell 7

                "colorScheme": 
                {
                    "light": "Campbell"
                },

Open it, change this into

                "colorScheme": "Campbell",

save and then reopen WinPaletter. This will solve the issue.

⚠️ This is a temporary solution till I fix this issue, and I recommend you to backup settings JSONs files to avoid undesired actions in the newly modified Windows Terminal structures in WinPaletter.

valsamis-d commented 8 months ago

Perfect! I was able to open the new WinPaletter! Thanks @Abdelrhman-AK !

Abdelrhman-AK commented 8 months ago

You're welcome!