Skip to content

Commit 2029a9b

Browse files
committed
boost(Update): Don't autodownload when opening the update form. Only after the user click install.
See #528
1 parent 2a671cc commit 2029a9b

File tree

4 files changed

+76
-144
lines changed

4 files changed

+76
-144
lines changed

SoundSwitch/UI/Component/ChangelogViewer.cs renamed to SoundSwitch/UI/Component/ChangelogWebViewer.cs

+8-8
Original file line numberDiff line numberDiff line change
@@ -13,29 +13,29 @@
1313
********************************************************************/
1414

1515
using System.Collections.Generic;
16-
using System.Diagnostics;
1716
using System.Windows.Forms;
1817
using Markdig;
18+
using SoundSwitch.Util.Url;
1919

2020
namespace SoundSwitch.UI.Component
2121
{
2222
public class ChangelogWebViewer : WebBrowser
2323
{
2424
public ChangelogWebViewer()
2525
{
26-
IsWebBrowserContextMenuEnabled = false;
27-
WebBrowserShortcutsEnabled = false;
28-
Navigating += OnNavigating;
26+
IsWebBrowserContextMenuEnabled = false;
27+
WebBrowserShortcutsEnabled = false;
28+
Navigating += OnNavigating;
2929
}
3030

3131
private void OnNavigating(object sender, WebBrowserNavigatingEventArgs e)
3232
{
3333
if (e.Url.ToString() == "about:blank")
3434
return;
35-
35+
3636
e.Cancel = true;
37-
var url = e.Url.ToString().Replace("&", "^&");
38-
Process.Start(new ProcessStartInfo("cmd", $"/c start {url}") {CreateNoWindow = true});
37+
var url = e.Url.ToString();
38+
BrowserUtil.OpenUrl(url);
3939
}
4040

4141
private static List<string> HtmlHeaders => new()
@@ -73,7 +73,7 @@ private void OnNavigating(object sender, WebBrowserNavigatingEventArgs e)
7373
public void SetChangelog(IEnumerable<string> changelogLines)
7474
{
7575
var pipeline = new MarkdownPipelineBuilder().UseAdvancedExtensions().Build();
76-
var lines = HtmlHeaders;
76+
var lines = HtmlHeaders;
7777
lines.Add("<body>");
7878
lines.Add(Markdown.ToHtml(string.Join("\n", changelogLines), pipeline));
7979
lines.Add("</body>");

SoundSwitch/UI/Forms/UpdateDownloadForm.Designer.cs

+59-57
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

SoundSwitch/UI/Forms/UpdateDownloadForm.cs

+8-18
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,17 @@ public UpdateDownloadForm()
3434

3535
LocalizeForm();
3636
downloadProgress.DisplayStyle = TextProgressBar.ProgressBarDisplayText.Both;
37+
downloadProgress.Visible = false;
3738
TopMost = true;
3839
}
3940

4041
public void DownloadRelease(Release release)
4142
{
43+
installButton.Enabled = true;
4244
changeLog.SetChangelog(release.Changelog);
4345
Name = release.Name;
4446
downloadProgress.CustomText = release.Asset.name;
4547
downloadProgress.Value = 0;
46-
installButton.Enabled = false;
47-
downloadProgress.Enabled = true;
4848

4949
_releaseFile = new WebFile(new Uri(release.Asset.browser_download_url));
5050

@@ -82,21 +82,9 @@ public void DownloadRelease(Release release)
8282
return;
8383
}
8484

85-
if (installButton.InvokeRequired)
86-
{
87-
installButton.BeginInvoke(new Action(() =>
88-
{
89-
installButton.Enabled = true;
90-
downloadProgress.Enabled = false;
91-
}));
92-
}
93-
else
94-
{
95-
installButton.Enabled = true;
96-
downloadProgress.Enabled = false;
97-
}
85+
new UpdateRunner().RunUpdate(_releaseFile, "/SILENT");
86+
BeginInvoke((Action) Close);
9887
};
99-
_releaseFile.DownloadFile();
10088
ShowDialog();
10189
}
10290

@@ -116,8 +104,10 @@ private void cancelButton_Click(object sender, EventArgs e)
116104

117105
private void installButton_Click(object sender, EventArgs e)
118106
{
119-
new UpdateRunner().RunUpdate(_releaseFile, "/SILENT");
120-
Close();
107+
downloadProgress.Enabled = true;
108+
downloadProgress.Visible = true;
109+
_releaseFile.DownloadFile();
110+
installButton.Enabled = false;
121111
}
122112

123113
private void UpdateDownloadForm_FormClosing(object sender, FormClosingEventArgs e)

SoundSwitch/UI/Forms/UpdateDownloadForm.resx

+1-61
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,4 @@
1-
<?xml version="1.0" encoding="utf-8"?>
2-
<root>
3-
<!--
4-
Microsoft ResX Schema
5-
6-
Version 2.0
7-
8-
The primary goals of this format is to allow a simple XML format
9-
that is mostly human readable. The generation and parsing of the
10-
various data types are done through the TypeConverter classes
11-
associated with the data types.
12-
13-
Example:
14-
15-
... ado.net/XML headers & schema ...
16-
<resheader name="resmimetype">text/microsoft-resx</resheader>
17-
<resheader name="version">2.0</resheader>
18-
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19-
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20-
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21-
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22-
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23-
<value>[base64 mime encoded serialized .NET Framework object]</value>
24-
</data>
25-
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26-
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27-
<comment>This is a comment</comment>
28-
</data>
29-
30-
There are any number of "resheader" rows that contain simple
31-
name/value pairs.
32-
33-
Each data row contains a name, and value. The row also contains a
34-
type or mimetype. Type corresponds to a .NET class that support
35-
text/value conversion through the TypeConverter architecture.
36-
Classes that don't support this are serialized and stored with the
37-
mimetype set.
38-
39-
The mimetype is used for serialized objects, and tells the
40-
ResXResourceReader how to depersist the object. This is currently not
41-
extensible. For a given mimetype the value must be set accordingly:
42-
43-
Note - application/x-microsoft.net.object.binary.base64 is the format
44-
that the ResXResourceWriter will generate, however the reader can
45-
read any of the formats listed below.
46-
47-
mimetype: application/x-microsoft.net.object.binary.base64
48-
value : The object must be serialized with
49-
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50-
: and then encoded with base64 encoding.
51-
52-
mimetype: application/x-microsoft.net.object.soap.base64
53-
value : The object must be serialized with
54-
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55-
: and then encoded with base64 encoding.
56-
57-
mimetype: application/x-microsoft.net.object.bytearray.base64
58-
value : The object must be serialized into a byte array
59-
: using a System.ComponentModel.TypeConverter
60-
: and then encoded with base64 encoding.
61-
-->
1+
<root>
622
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
633
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
644
<xsd:element name="root" msdata:IsDataSet="true">

0 commit comments

Comments
 (0)