├── docs
└── SampleApp1.2.zip
├── tools
└── ilmerge
│ └── ilmerge.exe
├── libs
├── nunit
│ └── nunit.framework.dll
└── dontnetzipreduced
│ └── Ionic.Zip.Reduced.dll
├── src
├── app
│ ├── leetreveil.AutoUpdate.SampleApp
│ │ ├── app.config
│ │ ├── Resources
│ │ │ ├── updater.exe
│ │ │ └── ltupdater.exe
│ │ ├── Properties
│ │ │ ├── Settings.settings
│ │ │ ├── Settings.Designer.cs
│ │ │ ├── AssemblyInfo.cs
│ │ │ ├── Resources.Designer.cs
│ │ │ └── Resources.resx
│ │ ├── App.xaml.cs
│ │ ├── App.xaml
│ │ ├── MainWindow.xaml
│ │ ├── sampleappupdatefeed.xml
│ │ ├── UpdateWindow.xaml
│ │ ├── MainWindow.xaml.cs
│ │ ├── UpdateWindow.xaml.cs
│ │ └── leetreveil.AutoUpdate.SampleApp.csproj
│ ├── leetreveil.AutoUpdate.Updater
│ │ ├── app.config
│ │ ├── updateicon.ico
│ │ ├── Assets
│ │ │ ├── updateicon.ico
│ │ │ └── updateicon.png
│ │ ├── Properties
│ │ │ ├── Settings.settings
│ │ │ ├── Settings.Designer.cs
│ │ │ ├── AssemblyInfo.cs
│ │ │ ├── Resources.Designer.cs
│ │ │ └── Resources.resx
│ │ ├── App.xaml
│ │ ├── ZipFileExtractor.cs
│ │ ├── app.manifest
│ │ ├── App.xaml.cs
│ │ ├── AppStart.cs
│ │ └── leetreveil.AutoUpdate.Updater.csproj
│ └── leetreveil.AutoUpdate.Framework
│ │ ├── app.config
│ │ ├── IUpdateFeedSource.cs
│ │ ├── Progress.cs
│ │ ├── Update.cs
│ │ ├── FileDownloader.cs
│ │ ├── Properties
│ │ └── AssemblyInfo.cs
│ │ ├── AppcastReader.cs
│ │ ├── UpdateStarter.cs
│ │ ├── leetreveil.AutoUpdate.Framework.csproj
│ │ └── UpdateManager.cs
└── test
│ └── leetreveil.AutoUpdate.Tests
│ ├── Integration
│ └── FileDownloaderTests.cs
│ ├── Samples
│ └── zunesocialtagger.xml
│ ├── Properties
│ └── AssemblyInfo.cs
│ ├── Unit
│ └── AppcastReaderTests.cs
│ └── leetreveil.AutoUpdate.Tests.csproj
├── .gitignore
└── leetreveil.AutoUpdate.sln
/docs/SampleApp1.2.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/leetreveil/.NET-Auto-Update/HEAD/docs/SampleApp1.2.zip
--------------------------------------------------------------------------------
/tools/ilmerge/ilmerge.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/leetreveil/.NET-Auto-Update/HEAD/tools/ilmerge/ilmerge.exe
--------------------------------------------------------------------------------
/libs/nunit/nunit.framework.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/leetreveil/.NET-Auto-Update/HEAD/libs/nunit/nunit.framework.dll
--------------------------------------------------------------------------------
/src/app/leetreveil.AutoUpdate.SampleApp/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/src/app/leetreveil.AutoUpdate.Updater/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/libs/dontnetzipreduced/Ionic.Zip.Reduced.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/leetreveil/.NET-Auto-Update/HEAD/libs/dontnetzipreduced/Ionic.Zip.Reduced.dll
--------------------------------------------------------------------------------
/src/app/leetreveil.AutoUpdate.Updater/updateicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/leetreveil/.NET-Auto-Update/HEAD/src/app/leetreveil.AutoUpdate.Updater/updateicon.ico
--------------------------------------------------------------------------------
/src/app/leetreveil.AutoUpdate.Framework/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/src/app/leetreveil.AutoUpdate.Updater/Assets/updateicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/leetreveil/.NET-Auto-Update/HEAD/src/app/leetreveil.AutoUpdate.Updater/Assets/updateicon.ico
--------------------------------------------------------------------------------
/src/app/leetreveil.AutoUpdate.Updater/Assets/updateicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/leetreveil/.NET-Auto-Update/HEAD/src/app/leetreveil.AutoUpdate.Updater/Assets/updateicon.png
--------------------------------------------------------------------------------
/src/app/leetreveil.AutoUpdate.SampleApp/Resources/updater.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/leetreveil/.NET-Auto-Update/HEAD/src/app/leetreveil.AutoUpdate.SampleApp/Resources/updater.exe
--------------------------------------------------------------------------------
/src/app/leetreveil.AutoUpdate.SampleApp/Resources/ltupdater.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/leetreveil/.NET-Auto-Update/HEAD/src/app/leetreveil.AutoUpdate.SampleApp/Resources/ltupdater.exe
--------------------------------------------------------------------------------
/src/app/leetreveil.AutoUpdate.Framework/IUpdateFeedSource.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace leetreveil.AutoUpdate.Framework
4 | {
5 | public interface IUpdateFeedSource
6 | {
7 | List Read(string url);
8 | }
9 | }
--------------------------------------------------------------------------------
/src/app/leetreveil.AutoUpdate.Updater/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/app/leetreveil.AutoUpdate.SampleApp/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/app/leetreveil.AutoUpdate.SampleApp/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 |
3 | namespace leetreveil.AutoUpdate.SampleApp
4 | {
5 | ///
6 | /// Interaction logic for App.xaml
7 | ///
8 | public partial class App : Application
9 | {
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.dep
2 | *.aps
3 | *.vbw
4 | *.suo
5 | *.obj
6 | *.plg
7 | *.bsc
8 | *.ilk
9 | *.exp
10 | *.sbr
11 | *.opt
12 | *.pdb
13 | *.idb
14 | *.pch
15 | *.res
16 | *.user
17 | *\obj
18 | *\bin
19 | *\Debug
20 | *\Release
21 | *\Resharp*
22 | *\_ReSharp*
23 | Thumbs.db
24 | *.ncb
25 | *.suo
26 | *.cache
--------------------------------------------------------------------------------
/src/app/leetreveil.AutoUpdate.Updater/App.xaml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/app/leetreveil.AutoUpdate.Framework/Progress.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace leetreveil.AutoUpdate.Framework
6 | {
7 | public class Progress
8 | {
9 | public long Current { get; set; }
10 | public long Total { get; set; }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/app/leetreveil.AutoUpdate.Framework/Update.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace leetreveil.AutoUpdate.Framework
4 | {
5 | public class Update
6 | {
7 | public string FileUrl { get; set; }
8 | public Version Version { get; set; }
9 | public string Title { get; set; }
10 | public long FileLength { get; set; }
11 | }
12 | }
--------------------------------------------------------------------------------
/src/app/leetreveil.AutoUpdate.SampleApp/App.xaml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/app/leetreveil.AutoUpdate.SampleApp/MainWindow.xaml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/test/leetreveil.AutoUpdate.Tests/Integration/FileDownloaderTests.cs:
--------------------------------------------------------------------------------
1 | using leetreveil.AutoUpdate.Framework;
2 | using NUnit.Framework;
3 |
4 | namespace leetreveil.AutoUpdate.Tests.Integration
5 | {
6 | [TestFixture]
7 | public class FileDownloaderTests
8 | {
9 | [Test]
10 | public void Should_be_able_to_download_a_small_file_from_the_internet()
11 | {
12 | var fileDownloader = new FileDownloader("http://www.google.co.uk/intl/en_uk/images/logo.gif");
13 |
14 | byte[] fileData = fileDownloader.Download();
15 |
16 | Assert.That(fileData.Length,Is.GreaterThan(0));
17 | }
18 |
19 | }
20 | }
--------------------------------------------------------------------------------
/src/app/leetreveil.AutoUpdate.Updater/ZipFileExtractor.cs:
--------------------------------------------------------------------------------
1 | using Ionic.Zip;
2 |
3 | namespace leetreveil.AutoUpdate.Updater
4 | {
5 | public class ZipFileExtractor
6 | {
7 | private readonly byte[] _updateData;
8 |
9 | public ZipFileExtractor(byte[] updateData)
10 | {
11 | _updateData = updateData;
12 | }
13 |
14 | public void ExtractTo(string folderPath)
15 | {
16 | using (ZipFile extractedFiles = ZipFile.Read(_updateData))
17 | {
18 | foreach (var file in extractedFiles)
19 | file.Extract(folderPath, ExtractExistingFileAction.OverwriteSilently);
20 | }
21 | }
22 | }
23 | }
--------------------------------------------------------------------------------
/src/app/leetreveil.AutoUpdate.SampleApp/sampleappupdatefeed.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | SampleApp Update Feed
5 | http://github.com/leetreveil/Zune-Social-Tagger/downloads
6 | Sample application that demonstrates the autoupdate capabilities
7 | -
8 | SampleApp
9 | http://github.com/leetreveil/Zune-Social-Tagger/downloads
10 | .WMA Support and other minor bug fixes
11 | Sunday, 27 December 2009 00:35:00 GMT
12 | 1.2
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/test/leetreveil.AutoUpdate.Tests/Samples/zunesocialtagger.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Zune Social Tagger Update Feed
5 | http://github.com/leetreveil/Zune-Social-Tagger/downloads
6 | Link an album to the zune social with any album available on the zune marketplace!
7 | -
8 | Zune Social Tagger
9 | http://github.com/leetreveil/Zune-Social-Tagger/downloads
10 | .WMA Support and other minor bug fixes
11 | Sunday, 27 December 2009 00:35:00 GMT
12 | 1.2
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/app/leetreveil.AutoUpdate.SampleApp/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.1
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace leetreveil.AutoUpdate.SampleApp.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/app/leetreveil.AutoUpdate.Updater/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.1
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace leetreveil.AutoUpdate.Updater.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/app/leetreveil.AutoUpdate.Updater/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/app/leetreveil.AutoUpdate.SampleApp/UpdateWindow.xaml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 | An update for SampleApp is available. It is reccomended that you install it as soon as possible.
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/src/app/leetreveil.AutoUpdate.Framework/FileDownloader.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Net;
3 |
4 | namespace leetreveil.AutoUpdate.Framework
5 | {
6 | public class FileDownloader
7 | {
8 | private readonly Uri _uri;
9 |
10 | public FileDownloader(string url)
11 | {
12 | _uri = new Uri(url);
13 | }
14 |
15 | public byte[] Download()
16 | {
17 | using (var client = new WebClient())
18 | return client.DownloadData(_uri);
19 | }
20 |
21 | public void DownloadAsync(Action callback)
22 | {
23 | using (var client = new WebClient())
24 | {
25 | client.DownloadDataCompleted += (sender, args) => callback(args.Result);
26 | client.DownloadDataAsync(_uri);
27 | }
28 | }
29 |
30 | public void DownloadAsync(Action finishedCallback, Action