From 5be6511529a8a90b83e416df19cdd921c279c90a Mon Sep 17 00:00:00 2001 From: qianlifeng Date: Sun, 11 Jan 2015 21:52:30 +0800 Subject: [PATCH] Add Wox.CrashReporter --- Doc/app.psd | Bin 89219 -> 79352 bytes Doc/app_error.png | Bin 0 -> 10360 bytes Doc/app_error.psd | Bin 0 -> 79352 bytes .../Wox.Plugin.WebSearch.csproj | 286 +++++++++--------- Wox.Core/APIServer.cs | 14 + Wox.Core/Version/SemanticVersion.cs | 99 ++++++ Wox.Core/Version/VersionManager.cs | 36 +++ Wox.Core/Wox.Core.csproj | 3 + Wox.CrashReporter/CrashReporter.cs | 25 ++ Wox.CrashReporter/Images/app_error.png | Bin 0 -> 10360 bytes Wox.CrashReporter/Images/crash_go.png | Bin 0 -> 1364 bytes Wox.CrashReporter/Images/crash_stop.png | Bin 0 -> 1173 bytes Wox.CrashReporter/Images/crash_warning.png | Bin 0 -> 5247 bytes Wox.CrashReporter/Properties/AssemblyInfo.cs | 36 +++ Wox.CrashReporter/ReportWindow.xaml | 78 +++++ Wox.CrashReporter/ReportWindow.xaml.cs | 62 ++++ Wox.CrashReporter/Wox.CrashReporter.csproj | 112 +++++++ Wox.CrashReporter/packages.config | 4 + Wox.Infrastructure/Http/HttpRequest.cs | 54 ++++ Wox.Infrastructure/Logger/Log.cs | 5 + Wox.Test/SemanticVersionTest.cs | 27 ++ Wox.Test/Wox.Test.csproj | 1 + Wox.sln | 8 +- Wox/App.config | 5 +- Wox/App.xaml.cs | 1 - Wox/Helper/ErrorReporting.cs | 35 +++ Wox/Helper/ErrorReporting/ErrorReporting.cs | 98 ------ .../WPFErrorReportingDialog.xaml | 9 - .../WPFErrorReportingDialog.xaml.cs | 32 -- Wox/Helper/WoxLog4netPathConverter.cs | 17 ++ Wox/Update/NewVersionWindow.xaml.cs | 6 +- Wox/Update/UpdateChecker.cs | 46 +-- Wox/Wox.csproj | 13 +- 33 files changed, 770 insertions(+), 342 deletions(-) create mode 100644 Doc/app_error.png create mode 100644 Doc/app_error.psd create mode 100644 Wox.Core/APIServer.cs create mode 100644 Wox.Core/Version/SemanticVersion.cs create mode 100644 Wox.Core/Version/VersionManager.cs create mode 100644 Wox.CrashReporter/CrashReporter.cs create mode 100644 Wox.CrashReporter/Images/app_error.png create mode 100644 Wox.CrashReporter/Images/crash_go.png create mode 100644 Wox.CrashReporter/Images/crash_stop.png create mode 100644 Wox.CrashReporter/Images/crash_warning.png create mode 100644 Wox.CrashReporter/Properties/AssemblyInfo.cs create mode 100644 Wox.CrashReporter/ReportWindow.xaml create mode 100644 Wox.CrashReporter/ReportWindow.xaml.cs create mode 100644 Wox.CrashReporter/Wox.CrashReporter.csproj create mode 100644 Wox.CrashReporter/packages.config create mode 100644 Wox.Test/SemanticVersionTest.cs create mode 100644 Wox/Helper/ErrorReporting.cs delete mode 100644 Wox/Helper/ErrorReporting/ErrorReporting.cs delete mode 100644 Wox/Helper/ErrorReporting/WPFErrorReportingDialog.xaml delete mode 100644 Wox/Helper/ErrorReporting/WPFErrorReportingDialog.xaml.cs create mode 100644 Wox/Helper/WoxLog4netPathConverter.cs diff --git a/Doc/app.psd b/Doc/app.psd index 1694f8d5dd86ee56f57eaa92abb78921e28c3bf8..833fd6529add7dc7e71ece014ad339f049dae465 100644 GIT binary patch literal 79352 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 - - - - Debug - AnyCPU - {403B57F2-1856-4FC7-8A24-36AB346B763E} - Library - Properties - Wox.Plugin.WebSearch - Wox.Plugin.WebSearch - v3.5 - 512 - ..\..\ - true - - - true - full - false - ..\..\Output\Debug\Plugins\Wox.Plugin.WebSearch\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - ..\..\Output\Release\Plugins\Wox.Plugin.WebSearch\ - TRACE - prompt - 4 - - - - ..\..\packages\log4net.2.0.3\lib\net35-full\log4net.dll - - - False - ..\..\packages\Newtonsoft.Json.6.0.7\lib\net35\Newtonsoft.Json.dll - - - - - - - - - - - - - - - - - - - WebSearchesSetting.xaml - - - - WebSearchSetting.xaml - - - - - MSBuild:Compile - Designer - PreserveNewest - - - MSBuild:Compile - Designer - PreserveNewest - - - MSBuild:Compile - Designer - PreserveNewest - - - MSBuild:Compile - Designer - - - MSBuild:Compile - Designer - - - - - - - - {B749F0DB-8E75-47DB-9E5E-265D16D0C0D2} - Wox.Core - - - {4fd29318-a8ab-4d8f-aa47-60bc241b8da3} - Wox.Infrastructure - - - {8451ecdd-2ea4-4966-bb0a-7bbc40138e80} - Wox.Plugin - - - - - - PreserveNewest - - - - - PreserveNewest - - - - - PreserveNewest - - - - - PreserveNewest - - - - - - - 这台计算机上缺少此项目引用的 NuGet 程序包。启用“NuGet 程序包还原”可下载这些程序包。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。 - - - - + + + + + Debug + AnyCPU + {403B57F2-1856-4FC7-8A24-36AB346B763E} + Library + Properties + Wox.Plugin.WebSearch + Wox.Plugin.WebSearch + v3.5 + 512 + ..\..\ + true + + + true + full + false + ..\..\Output\Debug\Plugins\Wox.Plugin.WebSearch\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + ..\..\Output\Release\Plugins\Wox.Plugin.WebSearch\ + TRACE + prompt + 4 + + + + ..\..\packages\log4net.2.0.3\lib\net35-full\log4net.dll + + + False + ..\..\packages\Newtonsoft.Json.6.0.7\lib\net35\Newtonsoft.Json.dll + + + + + + + + + + + + + + + + + + + WebSearchesSetting.xaml + + + + WebSearchSetting.xaml + + + + + MSBuild:Compile + Designer + PreserveNewest + + + MSBuild:Compile + Designer + PreserveNewest + + + MSBuild:Compile + Designer + PreserveNewest + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + + + + + + {B749F0DB-8E75-47DB-9E5E-265D16D0C0D2} + Wox.Core + + + {4fd29318-a8ab-4d8f-aa47-60bc241b8da3} + Wox.Infrastructure + + + {8451ecdd-2ea4-4966-bb0a-7bbc40138e80} + Wox.Plugin + + + + + + PreserveNewest + + + + + PreserveNewest + + + + + PreserveNewest + + + + + PreserveNewest + + + + + + + 这台计算机上缺少此项目引用的 NuGet 程序包。启用“NuGet 程序包还原”可下载这些程序包。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。 + + + + \ No newline at end of file diff --git a/Wox.Core/APIServer.cs b/Wox.Core/APIServer.cs new file mode 100644 index 0000000000..8aec75068e --- /dev/null +++ b/Wox.Core/APIServer.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Wox.Core +{ + public static class APIServer + { + private static string BaseAPIURL = "http://api.getwox.com"; + public static string ErrorReportURL = BaseAPIURL + "/error/"; + public static string LastestReleaseURL = BaseAPIURL + "/release/latest/"; + } +} diff --git a/Wox.Core/Version/SemanticVersion.cs b/Wox.Core/Version/SemanticVersion.cs new file mode 100644 index 0000000000..9ba46238c0 --- /dev/null +++ b/Wox.Core/Version/SemanticVersion.cs @@ -0,0 +1,99 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Wox.Core.Exception; + +namespace Wox.Core.Version +{ + public class SemanticVersion : IComparable + { + public int MAJOR { get; set; } + public int MINOR { get; set; } + public int PATCH { get; set; } + + public SemanticVersion(System.Version version) + { + MAJOR = version.Major; + MINOR = version.Minor; + PATCH = version.Build; + } + + public SemanticVersion(int major, int minor, int patch) + { + MAJOR = major; + MINOR = minor; + PATCH = patch; + } + + public SemanticVersion(string version) + { + var strings = version.Split('.'); + if (strings.Length != 3) + { + throw new WoxException("Invalid semantic version"); + } + MAJOR = int.Parse(strings[0]); + MINOR = int.Parse(strings[1]); + PATCH = int.Parse(strings[2]); + } + + public static bool operator >(SemanticVersion v1, SemanticVersion v2) + { + return v1.CompareTo(v2) > 0; + } + + public static bool operator <(SemanticVersion v1, SemanticVersion v2) + { + return v1.CompareTo(v2) < 0; + } + + public static bool operator ==(SemanticVersion v1, SemanticVersion v2) + { + if (ReferenceEquals(v1, null)) + { + return ReferenceEquals(v2, null); + } + if (ReferenceEquals(v2, null)) + { + return false; + } + return v1.Equals(v2); + } + + public static bool operator !=(SemanticVersion v1, SemanticVersion v2) + { + return !(v1 == v2); + } + + public override string ToString() + { + return string.Format("{0}.{1}.{2}", MAJOR, MINOR, PATCH); + } + + public override bool Equals(object version) + { + var v2 = (SemanticVersion)version; + return MAJOR == v2.MAJOR && MINOR == v2.MINOR && PATCH == v2.PATCH; + } + + public int CompareTo(object version) + { + var v2 = (SemanticVersion)version; + if (MAJOR == v2.MAJOR) + { + if (MINOR == v2.MINOR) + { + if (PATCH == v2.PATCH) + { + return 0; + } + return PATCH - v2.PATCH; + } + return MINOR - v2.MINOR; + } + return MAJOR - v2.MAJOR; + } + } +} diff --git a/Wox.Core/Version/VersionManager.cs b/Wox.Core/Version/VersionManager.cs new file mode 100644 index 0000000000..994e46e164 --- /dev/null +++ b/Wox.Core/Version/VersionManager.cs @@ -0,0 +1,36 @@ +using System.Reflection; + +namespace Wox.Core.Version +{ + public class VersionManager + { + private static VersionManager versionManager; + private static SemanticVersion currentVersion; + + public static VersionManager Instance + { + get + { + if (versionManager == null) + { + versionManager = new VersionManager(); + } + return versionManager; + } + } + + private VersionManager() { } + + public SemanticVersion CurrentVersion + { + get + { + if (currentVersion == null) + { + currentVersion = new SemanticVersion(Assembly.GetExecutingAssembly().GetName().Version); + } + return currentVersion; + } + } + } +} diff --git a/Wox.Core/Wox.Core.csproj b/Wox.Core/Wox.Core.csproj index 21cad4e12b..d58b7a7a95 100644 --- a/Wox.Core/Wox.Core.csproj +++ b/Wox.Core/Wox.Core.csproj @@ -53,6 +53,7 @@ + @@ -89,6 +90,8 @@ + + diff --git a/Wox.CrashReporter/CrashReporter.cs b/Wox.CrashReporter/CrashReporter.cs new file mode 100644 index 0000000000..3ca1e9b548 --- /dev/null +++ b/Wox.CrashReporter/CrashReporter.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Wox.CrashReporter +{ + public class CrashReporter + { + private Exception exception; + + public CrashReporter(Exception e) + { + exception = e; + } + + public void Show() + { + if (exception == null) return; + + ReportWindow reportWindow = new ReportWindow(exception); + reportWindow.Show(); + } + } +} diff --git a/Wox.CrashReporter/Images/app_error.png b/Wox.CrashReporter/Images/app_error.png new file mode 100644 index 0000000000000000000000000000000000000000..5106d6e8a9e2a152d6d5e712155ac101666b093f GIT binary patch literal 10360 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 literal 0 HcmV?d00001 diff --git a/Wox.CrashReporter/Images/crash_stop.png b/Wox.CrashReporter/Images/crash_stop.png new file mode 100644 index 0000000000000000000000000000000000000000..807117fc6468f1df68ed60f79796070ba5f740a9 GIT binary patch literal 1173 zcmV;G1Zw+Asa3nA^ae@K=c%PZvJI{XDfNdbWLD%@rgE?pJJ@?KX2GxiAk53NH0vC+}9~fiS zto_^mu;=MXF!rkd!DK6b)hjLTss{dhZ#35Sq9XAp95i-z)c;5PG*2G4KVRL zL!)`Fq1Ehx)ZA?2U6aQK{+@2HM1oZYkHk6#Z-o2@+93Vy5H7Qd|DmkyniUpcMV>%E zsV>O&or6>&0m-p{;sbw`C&8+L2Rb8={szIhE*Gv$+akcYkVI3*PeS_5TUdJhuq+8y z&h6o^hC=>m7v#Rb4uEb3mwPSlTNsR+lEm_{K1d;nm8tPfNvvPdJ@Rohw*ShtP+cSn z+Rd+b1inUsqZk!P9_&R=Bq8-|IzI5{R0#=I0)D(J)_Un`C=l)de(O6BvP*t?s^iqGzt@?1ct@TRW&f-9qB%c4c?Ki%F0s=KZaZU0H_QtA*G7_r_aD)*cj0 zL+z1|zCIU5-x~8Uqf}-Ir1XmPrYN!at zNu1VWjjJFn6~)r%EGbAF$D?G?j0h)@<)gicpk$(3k241hN>qL zP7?slSa%q)yarU1iPIjynm`(W^&t=%hJaxRnA0J^Peb3t19+S&7y{`5aE^eA>kBiz znFll}K;|$3hGFK0QJMwxVCtj+6}WW2lNwND6T?cffKo%t$r@nQD~DK}iS<#uoL3xw@J9dI+OHR0l{9IJx%Ur!Rn1rVCgsge8C$ zy>p`H*Fbw`(2FD@Di$RoA$Aj7z@sP6A)8wTo%6)W`xB?})iZe+Q#&yN1$VlrLJmADO4hJfVf_a2`qsC~Ovv-KqCmRq}xLxRMzf;L+T9JaV1 nk?_dob$dfYOIN#|zY|~pH1*!5o)KJT00000NkvXXu0mjf(-|po literal 0 HcmV?d00001 diff --git a/Wox.CrashReporter/Images/crash_warning.png b/Wox.CrashReporter/Images/crash_warning.png new file mode 100644 index 0000000000000000000000000000000000000000..b1b5f0acd3b8d28f499b2fcc995711ce3b1cd585 GIT binary patch literal 5247 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Wox.CrashReporter/ReportWindow.xaml.cs b/Wox.CrashReporter/ReportWindow.xaml.cs new file mode 100644 index 0000000000..63a65bfc75 --- /dev/null +++ b/Wox.CrashReporter/ReportWindow.xaml.cs @@ -0,0 +1,62 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using Wox.Core; +using Wox.Core.Exception; +using Wox.Core.UI; +using Wox.Core.UserSettings; +using Wox.Core.Version; +using Wox.Infrastructure.Http; + +namespace Wox.CrashReporter +{ + internal partial class ReportWindow : IUIResource + { + private Exception exception; + + public ReportWindow(Exception exception) + { + this.exception = exception; + InitializeComponent(); + SetException(exception); + } + + private void SetException(Exception exception) + { + tbSummary.AppendText(exception.Message); + tbVersion.Text = VersionManager.Instance.CurrentVersion.ToString(); + tbDatetime.Text = DateTime.Now.ToString(); + tbStackTrace.AppendText(exception.StackTrace); + tbSource.Text = exception.Source; + tbType.Text = exception.GetType().ToString(); + } + + public ResourceDictionary GetResourceDictionary() + { + return null; + } + + private void btnSend_Click(object sender, RoutedEventArgs e) + { + tbSendReport.Content = "Sending"; + btnSend.IsEnabled = false; + string error = string.Format("{{\"data\":{0}}}", ExceptionFormatter.FormatExcpetion(exception)); + string response = HttpRequest.Post(APIServer.ErrorReportURL, error, HttpProxy.Instance); + } + + private void btnCancel_Click(object sender, RoutedEventArgs e) + { + Close(); + } + } +} diff --git a/Wox.CrashReporter/Wox.CrashReporter.csproj b/Wox.CrashReporter/Wox.CrashReporter.csproj new file mode 100644 index 0000000000..708c75f916 --- /dev/null +++ b/Wox.CrashReporter/Wox.CrashReporter.csproj @@ -0,0 +1,112 @@ + + + + + Debug + AnyCPU + {2FEB2298-7653-4009-B1EA-FFFB1A768BCC} + Library + Properties + Wox.CrashReporter + Wox.CrashReporter + v3.5 + 512 + ..\ + true + + + true + full + false + ..\Output\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + ..\Output\Release\ + TRACE + prompt + 4 + + + + False + ..\packages\log4net.2.0.3\lib\net35-full\log4net.dll + + + + + + + + + + + + + + + + ReportWindow.xaml + + + + + Designer + MSBuild:Compile + + + + + {B749F0DB-8E75-47DB-9E5E-265D16D0C0D2} + Wox.Core + + + {4FD29318-A8AB-4D8F-AA47-60BC241B8DA3} + Wox.Infrastructure + + + {8451ECDD-2EA4-4966-BB0A-7BBC40138E80} + Wox.Plugin + + + + + PreserveNewest + + + PreserveNewest + + + + + PreserveNewest + + + + + PreserveNewest + + + + + + + + + + 这台计算机上缺少此项目引用的 NuGet 程序包。启用“NuGet 程序包还原”可下载这些程序包。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。 + + + + + \ No newline at end of file diff --git a/Wox.CrashReporter/packages.config b/Wox.CrashReporter/packages.config new file mode 100644 index 0000000000..7eb67aa24b --- /dev/null +++ b/Wox.CrashReporter/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Wox.Infrastructure/Http/HttpRequest.cs b/Wox.Infrastructure/Http/HttpRequest.cs index eaec09f0f1..5c08377d6b 100644 --- a/Wox.Infrastructure/Http/HttpRequest.cs +++ b/Wox.Infrastructure/Http/HttpRequest.cs @@ -53,6 +53,60 @@ namespace Wox.Infrastructure.Http } catch (Exception e) { + Logger.Log.Error(e); + return string.Empty; + } + + return string.Empty; + } + + public static string Post(string url, string jsonData, IHttpProxy proxy) + { + if (string.IsNullOrEmpty(url)) return string.Empty; + + HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; + request.Method = "POST"; + request.ContentType = "text/json"; + request.Timeout = 10 * 1000; + if (proxy != null && proxy.Enabled && !string.IsNullOrEmpty(proxy.Server)) + { + if (string.IsNullOrEmpty(proxy.UserName) || string.IsNullOrEmpty(proxy.Password)) + { + request.Proxy = new WebProxy(proxy.Server, proxy.Port); + } + else + { + request.Proxy = new WebProxy(proxy.Server, proxy.Port) + { + Credentials = new NetworkCredential(proxy.UserName, proxy.Password) + }; + } + } + using (var streamWriter = new StreamWriter(request.GetRequestStream())) + { + streamWriter.Write(jsonData); + streamWriter.Flush(); + streamWriter.Close(); + } + + try + { + HttpWebResponse response = request.GetResponse() as HttpWebResponse; + if (response != null) + { + Stream stream = response.GetResponseStream(); + if (stream != null) + { + using (StreamReader reader = new StreamReader(stream, Encoding.GetEncoding("UTF-8"))) + { + return reader.ReadToEnd(); + } + } + } + } + catch (Exception e) + { + Logger.Log.Error(e); return string.Empty; } diff --git a/Wox.Infrastructure/Logger/Log.cs b/Wox.Infrastructure/Logger/Log.cs index 1144ac5b98..52fd731764 100644 --- a/Wox.Infrastructure/Logger/Log.cs +++ b/Wox.Infrastructure/Logger/Log.cs @@ -13,6 +13,11 @@ namespace Wox.Infrastructure.Logger fileLogger.Error(msg); } + public static void Error(Exception e) + { + fileLogger.Error(e.Message + "\r\n" + e.StackTrace); + } + public static void Debug(string msg) { fileLogger.Debug(msg); diff --git a/Wox.Test/SemanticVersionTest.cs b/Wox.Test/SemanticVersionTest.cs new file mode 100644 index 0000000000..c4abdcbbde --- /dev/null +++ b/Wox.Test/SemanticVersionTest.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using NUnit.Framework; +using Wox.Core.Version; + +namespace Wox.Test +{ + [TestFixture] + public class SemanticVersionTest + { + [Test] + public void CompareTest() + { + SemanticVersion v1 = new SemanticVersion(1, 1, 0); + SemanticVersion v2 = new SemanticVersion(1, 2, 0); + SemanticVersion v3 = new SemanticVersion(1, 1, 0); + SemanticVersion v4 = new SemanticVersion("1.1.0"); + Assert.IsTrue(v1 < v2); + Assert.IsTrue(v2 > v1); + Assert.IsTrue(v1 == v3); + Assert.IsTrue(v1.Equals(v3)); + Assert.IsTrue(v1 == v4); + } + } +} diff --git a/Wox.Test/Wox.Test.csproj b/Wox.Test/Wox.Test.csproj index e6f189a012..b2b4ef6049 100644 --- a/Wox.Test/Wox.Test.csproj +++ b/Wox.Test/Wox.Test.csproj @@ -50,6 +50,7 @@ + diff --git a/Wox.sln b/Wox.sln index cbbf9ec2dd..089fe39c81 100644 --- a/Wox.sln +++ b/Wox.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2013 -VisualStudioVersion = 12.0.21005.1 +VisualStudioVersion = 12.0.30723.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wox.Test", "Wox.Test\Wox.Test.csproj", "{FF742965-9A80-41A5-B042-D6C7D3A21708}" EndProject @@ -37,6 +37,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wox.Plugin.Url", "Plugins\W EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wox.Plugin.Color", "Plugins\Wox.Plugin.Color\Wox.Plugin.Color.csproj", "{F35190AA-4758-4D9E-A193-E3BDF6AD3567}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wox.CrashReporter", "Wox.CrashReporter\Wox.CrashReporter.csproj", "{2FEB2298-7653-4009-B1EA-FFFB1A768BCC}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -107,6 +109,10 @@ Global {F35190AA-4758-4D9E-A193-E3BDF6AD3567}.Debug|Any CPU.Build.0 = Debug|Any CPU {F35190AA-4758-4D9E-A193-E3BDF6AD3567}.Release|Any CPU.ActiveCfg = Release|Any CPU {F35190AA-4758-4D9E-A193-E3BDF6AD3567}.Release|Any CPU.Build.0 = Release|Any CPU + {2FEB2298-7653-4009-B1EA-FFFB1A768BCC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2FEB2298-7653-4009-B1EA-FFFB1A768BCC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2FEB2298-7653-4009-B1EA-FFFB1A768BCC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2FEB2298-7653-4009-B1EA-FFFB1A768BCC}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Wox/App.config b/Wox/App.config index 83d95cfffe..2725471d1c 100644 --- a/Wox/App.config +++ b/Wox/App.config @@ -3,9 +3,6 @@
- - - @@ -36,4 +33,4 @@ - + \ No newline at end of file diff --git a/Wox/App.xaml.cs b/Wox/App.xaml.cs index 8b4f9af495..602fd19715 100644 --- a/Wox/App.xaml.cs +++ b/Wox/App.xaml.cs @@ -5,7 +5,6 @@ using System.Linq; using System.Threading; using Wox.CommandArgs; using Wox.Helper; -using Wox.Helper.ErrorReporting; using Application = System.Windows.Application; using MessageBox = System.Windows.MessageBox; using StartupEventArgs = System.Windows.StartupEventArgs; diff --git a/Wox/Helper/ErrorReporting.cs b/Wox/Helper/ErrorReporting.cs new file mode 100644 index 0000000000..af7b47b9ae --- /dev/null +++ b/Wox/Helper/ErrorReporting.cs @@ -0,0 +1,35 @@ +using System; +using System.Diagnostics; +using System.Windows; +using System.Windows.Forms; +using System.Windows.Threading; +using Wox.Core.Exception; +using Wox.Infrastructure.Logger; + +namespace Wox.Helper +{ + public static class ErrorReporting + { + private static void Report(Exception e) + { + //if (Debugger.IsAttached) return; + Log.Error(ExceptionFormatter.FormatExcpetion(e)); + new CrashReporter.CrashReporter(e).Show(); + } + + public static void UnhandledExceptionHandle(object sender, UnhandledExceptionEventArgs e) + { + Report((Exception)e.ExceptionObject); + } + + public static void DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) + { + Report(e.Exception); + } + + public static void ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) + { + Report(e.Exception); + } + } +} diff --git a/Wox/Helper/ErrorReporting/ErrorReporting.cs b/Wox/Helper/ErrorReporting/ErrorReporting.cs deleted file mode 100644 index a373edb4dd..0000000000 --- a/Wox/Helper/ErrorReporting/ErrorReporting.cs +++ /dev/null @@ -1,98 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Text; -using System.Windows; -using System.Windows.Forms; -using System.Windows.Threading; -using System.Xml; -using Microsoft.Win32; -using Wox.Core.Exception; -using Wox.Infrastructure.Logger; - -namespace Wox.Helper.ErrorReporting -{ - public static class ErrorReporting - { - public static void UnhandledExceptionHandle(object sender, System.UnhandledExceptionEventArgs e) - { - if (Debugger.IsAttached) return; - - string error = ExceptionFormatter.FormatExcpetion(e.ExceptionObject); - //e.IsTerminating is always true in most times, so try to avoid use this property - //http://stackoverflow.com/questions/10982443/what-causes-the-unhandledexceptioneventargs-isterminating-flag-to-be-true-or-fal - Log.Error(error); - TryShowErrorMessageBox(error, e.ExceptionObject); - } - - public static void DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) - { - if (Debugger.IsAttached) return; - - e.Handled = true; - string error = ExceptionFormatter.FormatExcpetion(e.Exception); - - Log.Error(error); - TryShowErrorMessageBox(error, e.Exception); - } - - public static void ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) - { - if (Debugger.IsAttached) return; - - string error = ExceptionFormatter.FormatExcpetion(e.Exception); - - Log.Fatal(error); - TryShowErrorMessageBox(error, e.Exception); - } - - public static bool TryShowErrorMessageBox(string error, object exceptionObject) - { - var title = "Wox - Unhandled Exception"; - - try - { - ShowWPFDialog(error, title, exceptionObject); - return true; - } - catch { } - - error = "Wox has occured an error that can't be handled. " + Environment.NewLine + Environment.NewLine + error; - - try - { - ShowWPFMessageBox(error, title); - return true; - } - catch { } - - try - { - ShowWindowsFormsMessageBox(error, title); - return true; - } - catch { } - - return true; - } - - private static void ShowWPFDialog(string error, string title, object exceptionObject) - { - var dialog = new WPFErrorReportingDialog(error, title, exceptionObject); - dialog.ShowDialog(); - } - - private static void ShowWPFMessageBox(string error, string title) - { - System.Windows.MessageBox.Show(error, title, MessageBoxButton.OK, MessageBoxImage.Error, - MessageBoxResult.OK, System.Windows.MessageBoxOptions.None); - } - - private static void ShowWindowsFormsMessageBox(string error, string title) - { - System.Windows.Forms.MessageBox.Show(error, title, MessageBoxButtons.OK, - MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); - } - } -} diff --git a/Wox/Helper/ErrorReporting/WPFErrorReportingDialog.xaml b/Wox/Helper/ErrorReporting/WPFErrorReportingDialog.xaml deleted file mode 100644 index 54d0f04bd9..0000000000 --- a/Wox/Helper/ErrorReporting/WPFErrorReportingDialog.xaml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - diff --git a/Wox/Helper/ErrorReporting/WPFErrorReportingDialog.xaml.cs b/Wox/Helper/ErrorReporting/WPFErrorReportingDialog.xaml.cs deleted file mode 100644 index f16669bd36..0000000000 --- a/Wox/Helper/ErrorReporting/WPFErrorReportingDialog.xaml.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Shapes; - -namespace Wox.Helper.ErrorReporting -{ - /// - /// Interaction logic for WPFErrorReportingDialog.xaml - /// - public partial class WPFErrorReportingDialog : Window - { - private object exceptionObject; - - public WPFErrorReportingDialog(string error, string title, object exceptionObject) - { - InitializeComponent(); - - this.tbErrorReport.Text = error; - this.Title = title; - this.exceptionObject = exceptionObject; - } - } -} diff --git a/Wox/Helper/WoxLog4netPathConverter.cs b/Wox/Helper/WoxLog4netPathConverter.cs new file mode 100644 index 0000000000..98cd176206 --- /dev/null +++ b/Wox/Helper/WoxLog4netPathConverter.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; + +namespace Wox.Helper +{ + public class WoxLog4netPathConverter : log4net.Util.PatternConverter + { + protected override void Convert(TextWriter writer, object state) + { + string userProfilePath = Environment.GetEnvironmentVariable("USERPROFILE"); + writer.Write(Path.Combine(userProfilePath, ".Wox")); + } + } +} diff --git a/Wox/Update/NewVersionWindow.xaml.cs b/Wox/Update/NewVersionWindow.xaml.cs index 66fbaf88e4..8ef0447828 100644 --- a/Wox/Update/NewVersionWindow.xaml.cs +++ b/Wox/Update/NewVersionWindow.xaml.cs @@ -12,19 +12,17 @@ using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; +using Wox.Core.Version; namespace Wox.Update { - /// - /// NewVersionWindow.xaml 的交互逻辑 - /// public partial class NewVersionWindow : Window { public NewVersionWindow() { InitializeComponent(); - tbCurrentVersion.Text = ConfigurationManager.AppSettings["version"]; + tbCurrentVersion.Text = VersionManager.Instance.CurrentVersion.ToString(); Release newRelease = new UpdateChecker().CheckUpgrade(); if (newRelease == null) { diff --git a/Wox/Update/UpdateChecker.cs b/Wox/Update/UpdateChecker.cs index 8c6e151a8e..65fb0c4d3f 100644 --- a/Wox/Update/UpdateChecker.cs +++ b/Wox/Update/UpdateChecker.cs @@ -6,7 +6,9 @@ using System.Linq; using System.Net; using System.Text; using Newtonsoft.Json; +using Wox.Core; using Wox.Core.UserSettings; +using Wox.Core.Version; using Wox.Helper; using Wox.Infrastructure; using Wox.Infrastructure.Http; @@ -15,7 +17,6 @@ namespace Wox.Update { public class UpdateChecker { - private const string updateURL = "https://api.getwox.com/release/latest/"; private static Release newRelease; private static bool checkedUpdate = false; @@ -27,7 +28,7 @@ namespace Wox.Update public Release CheckUpgrade(bool forceCheck = false) { if (checkedUpdate && !forceCheck) return newRelease; - string json = HttpRequest.Get(updateURL,HttpProxy.Instance); + string json = HttpRequest.Get(APIServer.LastestReleaseURL,HttpProxy.Instance); if (string.IsNullOrEmpty(json)) return null; try @@ -48,46 +49,7 @@ namespace Wox.Update { if (release == null) return false; - string currentVersion = ConfigurationManager.AppSettings["version"]; - return CompareVersion(release.version, currentVersion) > 0; - } - - /// - /// if version1 > version2 return 1 - /// else -1 - /// - /// - /// - /// - private int CompareVersion(string version1, string version2) - { - if (version1 == version2) return 0; - if (string.IsNullOrEmpty(version1) || string.IsNullOrEmpty(version2)) return 0; - - //semantic version, e.g. 1.1.0 - List version1List = version1.Split('.').Select(int.Parse).ToList(); - List version2List = version2.Split('.').Select(int.Parse).ToList(); - - if (version1List[0] > version2List[0]) - { - return 1; - } - else if (version1List[0] == version2List[0]) - { - if (version1List[1] > version2List[1]) - { - return 1; - } - else if (version1List[1] == version2List[1]) - { - if (version1List[2] > version2List[2]) - { - return 1; - } - } - } - - return -1; + return new SemanticVersion(release.version) > VersionManager.Instance.CurrentVersion; } } } diff --git a/Wox/Wox.csproj b/Wox/Wox.csproj index 63952eb25a..9f585e94f2 100644 --- a/Wox/Wox.csproj +++ b/Wox/Wox.csproj @@ -132,10 +132,7 @@ - - - WPFErrorReportingDialog.xaml - + @@ -164,10 +161,6 @@ Designer MSBuild:Compile - - Designer - MSBuild:Compile - Designer MSBuild:Compile @@ -278,6 +271,10 @@ {B749F0DB-8E75-47DB-9E5E-265D16D0C0D2} Wox.Core + + {2FEB2298-7653-4009-B1EA-FFFB1A768BCC} + Wox.CrashReporter + {4fd29318-a8ab-4d8f-aa47-60bc241b8da3} Wox.Infrastructure