Skip to content
This repository was archived by the owner on Dec 22, 2019. It is now read-only.

Commit 2b89a5f

Browse files
authored
Merge pull request #25 from MatthiWare/development
Rollback and registry updater feature
2 parents a75ddba + dae58bb commit 2b89a5f

File tree

86 files changed

+3361
-646
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

86 files changed

+3361
-646
lines changed

UpdateLib/TestApp/Form1.Designer.cs

Lines changed: 7 additions & 33 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UpdateLib/TestApp/Form1.cs

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public Form1()
2626

2727
private void Instance_CheckForUpdatesCompleted(object sender, CheckForUpdatesCompletedEventArgs e)
2828
{
29-
this.InvokeOnUI(() => checkForUpdatesToolStripMenuItem.Enabled = true);
29+
checkForUpdatesToolStripMenuItem.Enabled = true;
3030

3131
//if (e.Cancelled || e.Error != null)
3232
//{
@@ -99,17 +99,5 @@ private string ReadFileAndKeepStreamOpen(string file)
9999

100100
return text;
101101
}
102-
103-
private void button1_Click(object sender, EventArgs e)
104-
{
105-
DummyTask task = new DummyTask();
106-
task.TaskCompleted += (o, ex) => Updater.Instance.Logger.Debug(nameof(DummyTask), "Callback task completed!");
107-
task.Start();
108-
}
109-
110-
private void button2_Click(object sender, EventArgs e)
111-
{
112-
//Updater.Instance.RestartApp(false, false, true, true);
113-
}
114102
}
115103
}

UpdateLib/TestApp/Program.cs

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
using System.Collections.Generic;
66
using System.Linq;
77
using System.Windows.Forms;
8+
using MatthiWare.UpdateLib.Utils;
9+
using MatthiWare.UpdateLib.Files;
10+
using Microsoft.Win32;
811

912
namespace TestApp
1013
{
@@ -16,33 +19,31 @@ static class Program
1619
[STAThread]
1720
static void Main()
1821
{
19-
try
20-
{
22+
// we still want our updater to have visual styles in case of update cmd argument switch
23+
Application.EnableVisualStyles();
24+
Application.SetCompatibleTextRenderingDefault(false);
2125

22-
// we still want our updater to have visual styles in case of update cmd argument switch
23-
Application.EnableVisualStyles();
24-
Application.SetCompatibleTextRenderingDefault(false);
26+
Updater.Instance
27+
.ConfigureUpdateUrl("https://raw.githubusercontent.com/MatthiWare/UpdateLib.TestApp.UpdateExample/master/Dev/updatefile.xml")
28+
//.ConfigureUpdateUrl("http://matthiware.dev/UpdateLib/Dev/updatefile.xml")
29+
.ConfigureLogger((logger) => logger.LogLevel = LoggingLevel.Debug)
30+
.ConfigureLogger((logger) => logger.Writers.Add(new ConsoleLogWriter()))
31+
.ConfigureLogger((logger) => logger.Writers.Add(new FileLogWriter()))
32+
.ConfigureUnsafeConnections(true)
33+
.ConfigureCacheInvalidation(TimeSpan.FromSeconds(30))
34+
.ConfigureNeedsRestartBeforeUpdate(true)
35+
.ConfigureInstallationMode(InstallationMode.Shared)
36+
.Initialize();
2537

26-
Updater.Instance
27-
.ConfigureUpdateUrl("https://raw.githubusercontent.com/MatthiWare/UpdateLib.TestApp.UpdateExample/master/Dev/updatefile.xml")
28-
//.ConfigureUpdateUrl("http://matthiware.dev/UpdateLib/Dev/updatefile.xml")
29-
.ConfigureLogger((logger) => logger.LogLevel = LoggingLevel.Debug)
30-
.ConfigureLogger((logger) => logger.Writers.Add(new ConsoleLogWriter()))
31-
.ConfigureLogger((logger) => logger.Writers.Add(new FileLogWriter()))
32-
.ConfigureUnsafeConnections(true)
33-
.ConfigureCacheInvalidation(TimeSpan.FromSeconds(30))
34-
.ConfigureUpdateNeedsAdmin(false)
35-
.ConfigureInstallationMode(InstallationMode.Shared)
36-
.Initialize();
38+
Application.Run(new Form1());
3739

38-
Application.Run(new Form1());
39-
}
40-
catch (Exception e)
41-
{
42-
Console.WriteLine(e.ToString());
43-
MessageBox.Show(e.ToString());
44-
}
45-
40+
41+
}
42+
43+
private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
44+
{
45+
Console.WriteLine(e.Exception.ToString());
46+
MessageBox.Show(e.Exception.ToString());
4647
}
4748
}
4849
}

UpdateLib/TestApp/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,5 @@
3232
// You can specify all the values or you can default the Build and Revision Numbers
3333
// by using the '*' as shown below:
3434
// [assembly: AssemblyVersion("1.0.*")]
35-
[assembly: AssemblyVersion("1.0.0.0")]
36-
[assembly: AssemblyFileVersion("1.0.0.0")]
35+
[assembly: AssemblyVersion("0.4.0.0")]
36+
[assembly: AssemblyFileVersion("0.4.0.0")]

UpdateLib/TestApp/Testing/DummyTask.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ private void ChildWorkStuff(int id)
2727

2828
Thread.Sleep(waitTime);
2929

30-
Updater.Instance.Logger.Debug(nameof(ChildWorkStuff), $"Task[{id.ToString("X2")}] Completed");
30+
Updater.Instance.Logger.Debug(nameof(ChildWorkStuff), string.Empty, $"Task[{id.ToString("X2")}] Completed");
3131
}
3232

3333

UpdateLib/UpdateLib.Generator/Data/FilesPage/GenFile.cs

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,31 @@
66

77
namespace MatthiWare.UpdateLib.Generator.Data.FilesPage
88
{
9-
public class GenFile
9+
public class GenFile : IGenItem
1010
{
11-
public FileInfo FileInfo { get; set; }
11+
public event EventHandler Changed;
1212

13-
public string Name { get { return FileInfo.Name; } }
14-
public string RealPath { get { return FileInfo.FullName; } }
15-
public string Extension { get { return FileInfo.Extension; } }
16-
public string Size { get { return ConvertBytesToSizeString(FileInfo.Length); } }
13+
private FileInfo m_fileInfo;
14+
public FileInfo FileInfo
15+
{
16+
get { return m_fileInfo; }
17+
set { m_fileInfo = value; Changed?.Invoke(this, EventArgs.Empty); }
18+
}
1719

18-
public GenFolder ParentFolder { get; set; }
20+
public string Name { get { return FileInfo?.Name ?? string.Empty; } set { Changed?.Invoke(this, EventArgs.Empty); } }
21+
public string RealPath { get { return FileInfo?.FullName ?? string.Empty; } }
22+
public string Extension { get { return FileInfo?.Extension ?? string.Empty; } }
23+
public string Size { get { return ConvertBytesToSizeString(FileInfo?.Length ?? 0); } }
1924

20-
public ListViewItemFile FileListView { get; set; }
25+
public GenFolder Parent { get; set; }
26+
27+
public ListViewGenItem View { get; set; }
2128

2229
public GenFile(FileInfo file)
2330
{
2431
FileInfo = file;
2532

26-
FileListView = new ListViewItemFile(file);
33+
View = new ListViewGenItem(this);
2734
}
2835

2936
private static string ConvertBytesToSizeString(long size)
@@ -34,5 +41,14 @@ private static string ConvertBytesToSizeString(long size)
3441

3542
return $"{kb.ToString("N0")} kB";
3643
}
44+
45+
public string[] GetListViewItems()
46+
{
47+
return new string[] { Name, "File", FileInfo.LastWriteTime.ToString(), Size };
48+
}
49+
public string GetListViewImageKey()
50+
{
51+
return Extension;
52+
}
3753
}
3854
}

UpdateLib/UpdateLib.Generator/Data/FilesPage/GenFolder.cs

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,43 +2,66 @@
22
using System.Collections.Generic;
33
using System.Linq;
44
using System.Text;
5+
using System.Windows.Forms;
56

67
namespace MatthiWare.UpdateLib.Generator.Data.FilesPage
78
{
89
public class GenFolder
910
{
1011
public string Name { get; set; }
1112
public string PathVariable { get; set; }
12-
public List<GenFile> Files { get; private set; } = new List<GenFile>();
13+
public List<IGenItem> Items { get; private set; } = new List<IGenItem>();
1314
public List<GenFolder> Directories { get; private set; } = new List<GenFolder>();
1415
public GenFolder ParentFolder { get; set; }
1516
public bool IsRoot { get { return ParentFolder == null; } }
1617
public bool ProtectedFolder { get; set; } = false;
1718

18-
public ListViewItemFolder FolderListView { get; set; }
19+
public ListViewFolder FolderListView { get; set; }
1920
public TreeViewFolderNode FolderTreeView { get; set; }
2021

2122
public int Count
2223
{
2324
get
2425
{
25-
int x = Files.Count;
26-
foreach (GenFolder f in Directories)
27-
x += f.Count;
28-
29-
return x;
26+
return Items.Count + Directories.Sum(d => d.Count);
3027
}
3128
}
3229

33-
public GenFolder(string name, GenFolder parent)
30+
public GenFolder(string name, ContextMenuStrip menu)
3431
{
3532
Name = name;
36-
ParentFolder = parent;
37-
38-
ParentFolder?.Directories.Add(this);
3933

40-
FolderListView = new ListViewItemFolder(name, this);
34+
FolderListView = new ListViewFolder(name, this);
4135
FolderTreeView = new TreeViewFolderNode(name, this);
36+
37+
FolderTreeView.ContextMenuStrip = menu;
38+
39+
}
40+
41+
public void Add(IGenItem item)
42+
{
43+
item.Parent = this;
44+
Items.Add(item);
45+
}
46+
47+
public void Add(GenFolder folder)
48+
{
49+
folder.ParentFolder = this;
50+
Directories.Add(folder);
51+
FolderTreeView.Nodes.Add(folder.FolderTreeView);
52+
}
53+
54+
public void Remove(IGenItem item)
55+
{
56+
Items.Remove(item);
57+
item.View.Remove();
58+
}
59+
60+
public void Remove(GenFolder folder)
61+
{
62+
Directories.Remove(folder);
63+
FolderTreeView.Nodes.Remove(folder.FolderTreeView);
64+
folder.FolderListView.Remove();
4265
}
4366

4467
}

0 commit comments

Comments
 (0)