From a5c84cc69f34b1df842a6d9971dcf435668a84c6 Mon Sep 17 00:00:00 2001 From: Tobias Kiertscher Date: Fri, 30 Nov 2018 11:13:17 +0100 Subject: [PATCH 1/4] fixed biggest performance issue in setup dialog notification for property changes of all AppFacades during setup processes is not necessary any more, because the app list is hidden during setup steps. Only the task info list is visible now. --- BenchManager/BenchDashboard/AppList.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BenchManager/BenchDashboard/AppList.cs b/BenchManager/BenchDashboard/AppList.cs index 1d05d302..0e311d29 100644 --- a/BenchManager/BenchDashboard/AppList.cs +++ b/BenchManager/BenchDashboard/AppList.cs @@ -184,7 +184,7 @@ private void NotifyAppStateChange(string appId) ForAppWrapper(appId, w => { w.App.DiscardCachedValues(); - w.NotifyChanges(); + // w.NotifyChanges(); // huge performance impact! }); } From 4027c8d09a0348bd292c2352d2af02c856037297 Mon Sep 17 00:00:00 2001 From: Tobias Kiertscher Date: Fri, 30 Nov 2018 11:17:00 +0100 Subject: [PATCH 2/4] improved performance of TaskInfoList do not update DataGrid on every task info, but store incoming task infos in concurrent queue and transfer task infos by timer to DataGrid --- BenchManager/BenchDashboard/SetupForm.cs | 19 ++++--- .../BenchDashboard/TaskInfoList.Designer.cs | 3 +- BenchManager/BenchDashboard/TaskInfoList.cs | 52 ++++++++++++------- CHANGELOG.md | 3 ++ 4 files changed, 49 insertions(+), 28 deletions(-) diff --git a/BenchManager/BenchDashboard/SetupForm.cs b/BenchManager/BenchDashboard/SetupForm.cs index b1741bdc..22975311 100644 --- a/BenchManager/BenchDashboard/SetupForm.cs +++ b/BenchManager/BenchDashboard/SetupForm.cs @@ -444,24 +444,29 @@ private void DeactivationListHandler(object sender, EventArgs e) } private void AppListTaskInfoHandler(object sender, TaskInfoEventArgs ea) - => ProcessTaskInfo(ea.TaskInfo); + => TaskInfoHandler(ea.TaskInfo); private void TaskInfoHandler(TaskInfo info) { if (Disposing || IsDisposed) return; if (InvokeRequired) - BeginInvoke((Action)ProcessTaskInfo, info); - else - ProcessTaskInfo(info); + { + BeginInvoke((Action)TaskInfoHandler, info); + return; + } + ProcessTaskInfo(info); + taskInfoList.AddTaskInfo(info); } private void ProcessTaskInfo(TaskInfo info) { - lblInfo.Text = info.Message; - lblInfo.Refresh(); if (info is TaskProgress progressInfo) UpdateProgressBar(progressInfo.Progress); if (info is TaskError taskError) toolTip.SetToolTip(picState, taskError.Message); - taskInfoList.AddTaskInfo(info); + if (info.Message != null) + { + lblInfo.Text = info.Message; + lblInfo.Refresh(); + } } private void AppListTaskStartedHandler(object sender, TaskStartedEventArgs ea) diff --git a/BenchManager/BenchDashboard/TaskInfoList.Designer.cs b/BenchManager/BenchDashboard/TaskInfoList.Designer.cs index 19731247..e0a2bea9 100644 --- a/BenchManager/BenchDashboard/TaskInfoList.Designer.cs +++ b/BenchManager/BenchDashboard/TaskInfoList.Designer.cs @@ -62,8 +62,7 @@ private void InitializeComponent() this.dataGrid.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; this.dataGrid.Size = new System.Drawing.Size(683, 274); this.dataGrid.TabIndex = 0; - this.dataGrid.VirtualMode = true; - this.dataGrid.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGrid_CellDoubleClick); + this.dataGrid.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.CellDoubleClickHandler); // // colIcon // diff --git a/BenchManager/BenchDashboard/TaskInfoList.cs b/BenchManager/BenchDashboard/TaskInfoList.cs index f52dfe5a..c1cab08a 100644 --- a/BenchManager/BenchDashboard/TaskInfoList.cs +++ b/BenchManager/BenchDashboard/TaskInfoList.cs @@ -8,31 +8,53 @@ using System.Threading.Tasks; using System.Windows.Forms; using Mastersign.Bench.Dashboard.Properties; +using System.Collections.Concurrent; namespace Mastersign.Bench.Dashboard { public partial class TaskInfoList : UserControl { - private BindingList infos = new BindingList(); + private ConcurrentQueue infoQueue = new ConcurrentQueue(); + private Timer timer; public TaskInfoList() { InitializeComponent(); dataGrid.AutoGenerateColumns = false; - dataGrid.DataSource = infos; + InitializeTimer(); + Disposed += DisposedHandler; } - public void AddTaskInfo(TaskInfo info) + private void InitializeTimer() { - infos.Insert(0, new TaskInfoWrapper(info)); - dataGrid.Rows[0].Selected = true; + timer = new Timer { Interval = 250 }; + timer.Tick += Timer_Tick; + timer.Enabled = true; } - public void Clear() + private void DisposedHandler(object sender, EventArgs e) { - infos.Clear(); + timer.Enabled = false; + timer.Tick -= Timer_Tick; + timer.Dispose(); } + private void Timer_Tick(object sender, EventArgs e) + { + var added = false; + while (infoQueue.TryDequeue(out var wrapper)) + { + dataGrid.Rows.Insert(0, wrapper.Icon, wrapper.Timestamp, wrapper.Context, wrapper.Message); + dataGrid.Rows[0].Tag = wrapper.TaskInfo; + added = true; + } + if (added) dataGrid.Rows[0].Selected = true; + } + + public void AddTaskInfo(TaskInfo info) => infoQueue.Enqueue(new TaskInfoWrapper(info)); + + public void Clear() => dataGrid.Rows.Clear(); + class TaskInfoWrapper { public TaskInfoWrapper(TaskInfo info) @@ -42,14 +64,7 @@ public TaskInfoWrapper(TaskInfo info) public TaskInfo TaskInfo { get; } - public Bitmap Icon - { - get - { - if (TaskInfo is TaskError) return Resources.error_outline_16; - return Resources.ok_outline_16; - } - } + public Bitmap Icon => TaskInfo is TaskError ? Resources.error_outline_16 : Resources.ok_outline_16; public string Timestamp => TaskInfo.Timestamp.ToString("HH:mm:ss"); @@ -58,12 +73,11 @@ public Bitmap Icon public string Message => TaskInfo.Message; } - private void dataGrid_CellDoubleClick(object sender, DataGridViewCellEventArgs e) + private void CellDoubleClickHandler(object sender, DataGridViewCellEventArgs e) { - var infoWrapper = dataGrid.Rows[e.RowIndex].DataBoundItem as TaskInfoWrapper; - if (infoWrapper != null) + if (dataGrid.Rows[e.RowIndex].Tag is TaskInfo info) { - ShowTaskInfoForm(infoWrapper.TaskInfo); + ShowTaskInfoForm(info); } } diff --git a/CHANGELOG.md b/CHANGELOG.md index 5390f76e..b8f2f770 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,9 @@ Add a link to the GitHub diff like [Unreleased]: https://github.com/winbench/bench/compare/master...dev +### Fixed +* Performance issues in setup dialog + ## [0.20.4] - 2018-10-30 [0.20.4]: https://github.com/winbench/bench/compare/v0.20.3...v0.20.4 From 1e80a1622ab5e746d543b4a31fb4a0378512f08f Mon Sep 17 00:00:00 2001 From: Tobias Kiertscher Date: Fri, 30 Nov 2018 11:21:36 +0100 Subject: [PATCH 3/4] added menu item for re-opening task info list after successful setup, added icons --- .../BenchDashboard/BenchDashboard.csproj | 2 + .../Properties/Resources.Designer.cs | 20 ++++++++++ .../BenchDashboard/Properties/Resources.resx | 6 +++ .../Resources/interactive_log_16.png | Bin 0 -> 283 bytes .../BenchDashboard/Resources/log_16.png | Bin 0 -> 158 bytes .../BenchDashboard/SetupForm.Designer.cs | 35 +++++++++++++----- BenchManager/BenchDashboard/SetupForm.cs | 14 ++++++- CHANGELOG.md | 3 ++ 8 files changed, 68 insertions(+), 12 deletions(-) create mode 100644 BenchManager/BenchDashboard/Resources/interactive_log_16.png create mode 100644 BenchManager/BenchDashboard/Resources/log_16.png diff --git a/BenchManager/BenchDashboard/BenchDashboard.csproj b/BenchManager/BenchDashboard/BenchDashboard.csproj index c0523edf..65b54ff2 100644 --- a/BenchManager/BenchDashboard/BenchDashboard.csproj +++ b/BenchManager/BenchDashboard/BenchDashboard.csproj @@ -290,7 +290,9 @@ + + diff --git a/BenchManager/BenchDashboard/Properties/Resources.Designer.cs b/BenchManager/BenchDashboard/Properties/Resources.Designer.cs index a8019493..2183938f 100644 --- a/BenchManager/BenchDashboard/Properties/Resources.Designer.cs +++ b/BenchManager/BenchDashboard/Properties/Resources.Designer.cs @@ -359,6 +359,16 @@ internal static System.Drawing.Bitmap install_16 { } } + /// + /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap interactive_log_16 { + get { + object obj = ResourceManager.GetObject("interactive_log_16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. /// @@ -387,6 +397,16 @@ internal static string licenses { } } + /// + /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap log_16 { + get { + object obj = ResourceManager.GetObject("log_16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. /// diff --git a/BenchManager/BenchDashboard/Properties/Resources.resx b/BenchManager/BenchDashboard/Properties/Resources.resx index 0928546d..e07e0348 100644 --- a/BenchManager/BenchDashboard/Properties/Resources.resx +++ b/BenchManager/BenchDashboard/Properties/Resources.resx @@ -313,4 +313,10 @@ ..\Resources\ok.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\interactive_log_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\resources\log_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/BenchManager/BenchDashboard/Resources/interactive_log_16.png b/BenchManager/BenchDashboard/Resources/interactive_log_16.png new file mode 100644 index 0000000000000000000000000000000000000000..34144c22697b6b0df48326375cf0ce2ce0f8de62 GIT binary patch literal 283 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMpx{|g z7srr_Imti2y}ez}cIlwJpPyftKr^e$j~_oKEU7*{O}D^|+lL|L#ICKcIkWh<_*@=N ze#*qdoS=6gm7C*1k!)^^gHJ@jo2K{o_y1>eRSgqQ*xK1Tv$1m~r&y~(ZGA@>qetFVdQ&MBb@0MEW=LI3~& literal 0 HcmV?d00001 diff --git a/BenchManager/BenchDashboard/Resources/log_16.png b/BenchManager/BenchDashboard/Resources/log_16.png new file mode 100644 index 0000000000000000000000000000000000000000..badf6df34bfd8775bb02374024f80b5e192a1b48 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`sh%#5Ar*0NCvW6xaNua$`&jJ$ z*`-zIvOeCG;caP_@9S8zZJ%q&1^$bV-le4Zan9JeWnKrzUB^&mGYyx?xp!Z7RnA-y zEX;Nw!@!5}!n^9`&9Qs(0}d+Od|-YczJb~6o?~0Zb9I^Dd^&H98N-$XEoAU?^>bP0 Hl+XkK6aPHm literal 0 HcmV?d00001 diff --git a/BenchManager/BenchDashboard/SetupForm.Designer.cs b/BenchManager/BenchDashboard/SetupForm.Designer.cs index 18eaf1d6..ad398376 100644 --- a/BenchManager/BenchDashboard/SetupForm.Designer.cs +++ b/BenchManager/BenchDashboard/SetupForm.Designer.cs @@ -81,10 +81,11 @@ private void InitializeComponent() this.tsmView = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiShowAppIndex = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiShowCustomAppIndex = new System.Windows.Forms.ToolStripMenuItem(); + this.tsmiShowTaskInfoList = new System.Windows.Forms.ToolStripMenuItem(); + this.tsmiShowLastLogfile = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiAlwaysShowDownloads = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiConfigurationInfo = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiRefreshView = new System.Windows.Forms.ToolStripMenuItem(); - this.tsmiShowLastLogfile = new System.Windows.Forms.ToolStripMenuItem(); toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); @@ -265,11 +266,13 @@ private void InitializeComponent() // btnOpenLogFile // this.btnOpenLogFile.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnOpenLogFile.Location = new System.Drawing.Point(530, 267); + this.btnOpenLogFile.Image = global::Mastersign.Bench.Dashboard.Properties.Resources.log_16; + this.btnOpenLogFile.Location = new System.Drawing.Point(512, 267); this.btnOpenLogFile.Name = "btnOpenLogFile"; - this.btnOpenLogFile.Size = new System.Drawing.Size(68, 23); + this.btnOpenLogFile.Size = new System.Drawing.Size(86, 23); this.btnOpenLogFile.TabIndex = 13; this.btnOpenLogFile.Text = "&Log File"; + this.btnOpenLogFile.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; this.toolTip.SetToolTip(this.btnOpenLogFile, "Open the last log file. (F12)"); this.btnOpenLogFile.UseVisualStyleBackColor = true; this.btnOpenLogFile.Click += new System.EventHandler(this.ShowLastLogHandler); @@ -370,6 +373,7 @@ private void InitializeComponent() // this.tsmiAuto.Image = global::Mastersign.Bench.Dashboard.Properties.Resources.do_16; this.tsmiAuto.Name = "tsmiAuto"; + this.tsmiAuto.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.F5))); this.tsmiAuto.Size = new System.Drawing.Size(237, 22); this.tsmiAuto.Text = "&Automatic Setup"; this.tsmiAuto.ToolTipText = "Uninstalls incactive apps, downloades missing resources, installs active but not " + @@ -562,6 +566,7 @@ private void InitializeComponent() this.tsmiShowAppIndex, this.tsmiShowCustomAppIndex, toolStripSeparator1, + this.tsmiShowTaskInfoList, this.tsmiShowLastLogfile, this.tsmiAlwaysShowDownloads, this.tsmiConfigurationInfo, @@ -585,6 +590,22 @@ private void InitializeComponent() this.tsmiShowCustomAppIndex.Text = "&User App Library"; this.tsmiShowCustomAppIndex.Click += new System.EventHandler(this.ShowCustomAppIndexHandler); // + // tsmiShowTaskInfoList + // + this.tsmiShowTaskInfoList.Image = global::Mastersign.Bench.Dashboard.Properties.Resources.interactive_log_16; + this.tsmiShowTaskInfoList.Name = "tsmiShowTaskInfoList"; + this.tsmiShowTaskInfoList.Size = new System.Drawing.Size(205, 22); + this.tsmiShowTaskInfoList.Text = "Last &Event Log"; + this.tsmiShowTaskInfoList.Click += new System.EventHandler(this.tsmiShowTaskInfoList_Click); + // + // tsmiShowLastLogfile + // + this.tsmiShowLastLogfile.Image = global::Mastersign.Bench.Dashboard.Properties.Resources.log_16; + this.tsmiShowLastLogfile.Name = "tsmiShowLastLogfile"; + this.tsmiShowLastLogfile.Size = new System.Drawing.Size(205, 22); + this.tsmiShowLastLogfile.Text = "Last L&ogfile"; + this.tsmiShowLastLogfile.Click += new System.EventHandler(this.ShowLastLogHandler); + // // tsmiAlwaysShowDownloads // this.tsmiAlwaysShowDownloads.CheckOnClick = true; @@ -610,13 +631,6 @@ private void InitializeComponent() this.tsmiRefreshView.Text = "&Refresh"; this.tsmiRefreshView.Click += new System.EventHandler(this.RefreshViewHandler); // - // tsmiShowLastLogfile - // - this.tsmiShowLastLogfile.Name = "tsmiShowLastLogfile"; - this.tsmiShowLastLogfile.Size = new System.Drawing.Size(205, 22); - this.tsmiShowLastLogfile.Text = "Last L&ogfile"; - this.tsmiShowLastLogfile.Click += new System.EventHandler(this.ShowLastLogHandler); - // // SetupForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -706,5 +720,6 @@ private void InitializeComponent() private TaskInfoList taskInfoList; private System.Windows.Forms.Button btnOpenLogFile; private System.Windows.Forms.ToolStripMenuItem tsmiShowLastLogfile; + private System.Windows.Forms.ToolStripMenuItem tsmiShowTaskInfoList; } } \ No newline at end of file diff --git a/BenchManager/BenchDashboard/SetupForm.cs b/BenchManager/BenchDashboard/SetupForm.cs index 22975311..916e1932 100644 --- a/BenchManager/BenchDashboard/SetupForm.cs +++ b/BenchManager/BenchDashboard/SetupForm.cs @@ -213,7 +213,11 @@ private void CoreBusyChangedHandler(object sender, EventArgs e) btnAuto.Image = !busy ? Resources.do_32 : Resources.stop_32; - if (busy) BusyPanelVisible = true; + if (busy) + { + taskInfoList.Clear(); + BusyPanelVisible = true; + } } private void CoreActionStateChangedHandler(object sender, EventArgs e) @@ -761,8 +765,8 @@ private bool BusyPanelVisible { panelBusy.Visible = false; appList.Visible = true; - taskInfoList.Clear(); } + tsmiShowTaskInfoList.Enabled = !value; } } @@ -770,5 +774,11 @@ private void btnCloseBusyPanel_Click(object sender, EventArgs e) { BusyPanelVisible = false; } + + private void tsmiShowTaskInfoList_Click(object sender, EventArgs e) + { + BusyPanelVisible = true; + EnableBusyPanelButtons(); + } } } diff --git a/CHANGELOG.md b/CHANGELOG.md index b8f2f770..2fa077d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,9 @@ Add a link to the GitHub diff like ### Fixed * Performance issues in setup dialog +### Added +* Menu item for showing event log after successful setup + ## [0.20.4] - 2018-10-30 [0.20.4]: https://github.com/winbench/bench/compare/v0.20.3...v0.20.4 From 8df7687869a08a8daa815dfd3f686b215f4f0993 Mon Sep 17 00:00:00 2001 From: Tobias Kiertscher Date: Fri, 30 Nov 2018 11:21:56 +0100 Subject: [PATCH 4/4] pushed version to 0.20.5 --- BenchManager/BenchCLI/Properties/AssemblyInfo.cs | 4 ++-- BenchManager/BenchDashboard/Properties/AssemblyInfo.cs | 4 ++-- BenchManager/BenchLib/Properties/AssemblyInfo.cs | 4 ++-- CHANGELOG.md | 4 ++++ res/bench-install.bat | 2 +- res/version.txt | 2 +- 6 files changed, 12 insertions(+), 8 deletions(-) diff --git a/BenchManager/BenchCLI/Properties/AssemblyInfo.cs b/BenchManager/BenchCLI/Properties/AssemblyInfo.cs index 8a7edbcc..6539ba8c 100644 --- a/BenchManager/BenchCLI/Properties/AssemblyInfo.cs +++ b/BenchManager/BenchCLI/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern // übernehmen, indem Sie "*" eingeben: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.20.4.0")] -[assembly: AssemblyFileVersion("0.20.4.0")] +[assembly: AssemblyVersion("0.20.5.0")] +[assembly: AssemblyFileVersion("0.20.5.0")] diff --git a/BenchManager/BenchDashboard/Properties/AssemblyInfo.cs b/BenchManager/BenchDashboard/Properties/AssemblyInfo.cs index d2d9c71c..a21c793c 100644 --- a/BenchManager/BenchDashboard/Properties/AssemblyInfo.cs +++ b/BenchManager/BenchDashboard/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.20.4.0")] -[assembly: AssemblyFileVersion("0.20.4.0")] +[assembly: AssemblyVersion("0.20.5.0")] +[assembly: AssemblyFileVersion("0.20.5.0")] diff --git a/BenchManager/BenchLib/Properties/AssemblyInfo.cs b/BenchManager/BenchLib/Properties/AssemblyInfo.cs index fed6593c..0b1dd8a6 100644 --- a/BenchManager/BenchLib/Properties/AssemblyInfo.cs +++ b/BenchManager/BenchLib/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.20.4.0")] -[assembly: AssemblyFileVersion("0.20.4.0")] +[assembly: AssemblyVersion("0.20.5.0")] +[assembly: AssemblyFileVersion("0.20.5.0")] diff --git a/CHANGELOG.md b/CHANGELOG.md index 2fa077d1..43e07b43 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,10 @@ Add a link to the GitHub diff like [Unreleased]: https://github.com/winbench/bench/compare/master...dev +## [0.20.5] - 2018-11-30 + +[0.20.5]: https://github.com/winbench/bench/compare/v0.20.4...v0.20.5 + ### Fixed * Performance issues in setup dialog diff --git a/res/bench-install.bat b/res/bench-install.bat index fc833c38..a7e9964b 100644 --- a/res/bench-install.bat +++ b/res/bench-install.bat @@ -7,7 +7,7 @@ SetLocal :: https://winbench.org/guide/setup/ :: -SET VERSION=0.20.4 +SET VERSION=0.20.5 SET TAG=v%VERSION% SET ROOT=%~dp0 IF [%1] NEQ [] SET ROOT=%~dpnx1\ diff --git a/res/version.txt b/res/version.txt index a4e543eb..58d8f8d4 100644 --- a/res/version.txt +++ b/res/version.txt @@ -1 +1 @@ -0.20.4 \ No newline at end of file +0.20.5 \ No newline at end of file