Skip to content

Commit 4428e46

Browse files
committed
Installer
1 parent 0dd2351 commit 4428e46

File tree

5 files changed

+104
-2
lines changed

5 files changed

+104
-2
lines changed

DataCommander.Providers/MainForm.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
using Foundation.Diagnostics;
2222
using Foundation.Linq;
2323
using Foundation.Log;
24+
using Foundation.Setup;
2425
using Foundation.Threading;
2526
using Foundation.Windows.Forms;
2627

@@ -188,8 +189,7 @@ private void Timer_Tick(object sender, EventArgs e)
188189

189190
try
190191
{
191-
using (var webClient = new WebClient())
192-
remoteVersion = webClient.DownloadString("https://raw.githubusercontent.com/csbernath/DataCommander/master/DataCommander/Version.txt");
192+
remoteVersion = Installer.DownloadString("https://raw.githubusercontent.com/csbernath/DataCommander/master/DataCommander/Version.txt");
193193
}
194194
catch
195195
{

DataCommander.sln

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Foundation.NetStandard-2.0"
3434
EndProject
3535
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Foundation.NetFramework-4.7.1", "Foundation.NetFramework-4.7.1\Foundation.NetFramework-4.7.1.csproj", "{B8934B63-D579-4EE8-B352-13134EB8CC54}"
3636
EndProject
37+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Setup", "Setup\Setup.csproj", "{D0807533-BBFD-4EF4-B255-E3677CC915D5}"
38+
EndProject
3739
Global
3840
GlobalSection(SolutionConfigurationPlatforms) = preSolution
3941
ClientRelease|Any CPU = ClientRelease|Any CPU
@@ -340,6 +342,26 @@ Global
340342
{B8934B63-D579-4EE8-B352-13134EB8CC54}.Test|Any CPU.Build.0 = Release|Any CPU
341343
{B8934B63-D579-4EE8-B352-13134EB8CC54}.Test|x86.ActiveCfg = Release|Any CPU
342344
{B8934B63-D579-4EE8-B352-13134EB8CC54}.Test|x86.Build.0 = Release|Any CPU
345+
{D0807533-BBFD-4EF4-B255-E3677CC915D5}.ClientRelease|Any CPU.ActiveCfg = Release|Any CPU
346+
{D0807533-BBFD-4EF4-B255-E3677CC915D5}.ClientRelease|Any CPU.Build.0 = Release|Any CPU
347+
{D0807533-BBFD-4EF4-B255-E3677CC915D5}.ClientRelease|x86.ActiveCfg = Release|Any CPU
348+
{D0807533-BBFD-4EF4-B255-E3677CC915D5}.ClientRelease|x86.Build.0 = Release|Any CPU
349+
{D0807533-BBFD-4EF4-B255-E3677CC915D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
350+
{D0807533-BBFD-4EF4-B255-E3677CC915D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
351+
{D0807533-BBFD-4EF4-B255-E3677CC915D5}.Debug|x86.ActiveCfg = Debug|Any CPU
352+
{D0807533-BBFD-4EF4-B255-E3677CC915D5}.Debug|x86.Build.0 = Debug|Any CPU
353+
{D0807533-BBFD-4EF4-B255-E3677CC915D5}.NDoc|Any CPU.ActiveCfg = Debug|Any CPU
354+
{D0807533-BBFD-4EF4-B255-E3677CC915D5}.NDoc|Any CPU.Build.0 = Debug|Any CPU
355+
{D0807533-BBFD-4EF4-B255-E3677CC915D5}.NDoc|x86.ActiveCfg = Debug|Any CPU
356+
{D0807533-BBFD-4EF4-B255-E3677CC915D5}.NDoc|x86.Build.0 = Debug|Any CPU
357+
{D0807533-BBFD-4EF4-B255-E3677CC915D5}.Release|Any CPU.ActiveCfg = Release|Any CPU
358+
{D0807533-BBFD-4EF4-B255-E3677CC915D5}.Release|Any CPU.Build.0 = Release|Any CPU
359+
{D0807533-BBFD-4EF4-B255-E3677CC915D5}.Release|x86.ActiveCfg = Release|Any CPU
360+
{D0807533-BBFD-4EF4-B255-E3677CC915D5}.Release|x86.Build.0 = Release|Any CPU
361+
{D0807533-BBFD-4EF4-B255-E3677CC915D5}.Test|Any CPU.ActiveCfg = Debug|Any CPU
362+
{D0807533-BBFD-4EF4-B255-E3677CC915D5}.Test|Any CPU.Build.0 = Debug|Any CPU
363+
{D0807533-BBFD-4EF4-B255-E3677CC915D5}.Test|x86.ActiveCfg = Debug|Any CPU
364+
{D0807533-BBFD-4EF4-B255-E3677CC915D5}.Test|x86.Build.0 = Debug|Any CPU
343365
EndGlobalSection
344366
GlobalSection(SolutionProperties) = preSolution
345367
HideSolutionNode = FALSE
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
using System;
2+
using System.Diagnostics;
3+
using System.IO;
4+
using System.IO.Compression;
5+
using System.Net;
6+
using System.Threading.Tasks;
7+
8+
namespace Foundation.Setup
9+
{
10+
public static class Installer
11+
{
12+
public static string DownloadString(string address)
13+
{
14+
using (var webClient = new WebClient())
15+
return webClient.DownloadString(address);
16+
}
17+
18+
public static async Task Download(Uri address, string setupExeFileName)
19+
{
20+
var guid = Guid.NewGuid();
21+
var directory = Path.Combine(Path.GetTempPath(), $"Foundation.Setup.{guid}");
22+
var zipFilenName = $"{guid}.zip";
23+
24+
using (var webClient = new WebClient())
25+
await webClient.DownloadFileTaskAsync(address, zipFilenName);
26+
27+
var sourceArchiveFileName = Path.Combine(directory, zipFilenName);
28+
ZipFile.ExtractToDirectory(sourceArchiveFileName, directory);
29+
30+
File.Delete(sourceArchiveFileName);
31+
32+
var processStartInfo = new ProcessStartInfo();
33+
processStartInfo.WorkingDirectory = directory;
34+
processStartInfo.FileName = setupExeFileName;
35+
processStartInfo.Arguments = Environment.CurrentDirectory;
36+
Process.Start(processStartInfo);
37+
}
38+
39+
public static void Start(string sourceDirectory, string targetDirectory, string exeFileName)
40+
{
41+
var backupDirectory = $"{targetDirectory}.Backup";
42+
Directory.Move(targetDirectory, backupDirectory);
43+
Directory.Move(sourceDirectory, targetDirectory);
44+
Directory.Delete(backupDirectory);
45+
46+
var processStartInfo = new ProcessStartInfo();
47+
processStartInfo.WorkingDirectory = targetDirectory;
48+
processStartInfo.FileName = exeFileName;
49+
processStartInfo.Arguments = Environment.CurrentDirectory;
50+
Process.Start(processStartInfo);
51+
}
52+
}
53+
}

Setup/Program.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using System;
2+
using Foundation.Setup;
3+
4+
namespace Setup
5+
{
6+
class Program
7+
{
8+
static void Main(string[] args)
9+
{
10+
var sourceDirectory = Environment.CurrentDirectory;
11+
var targetDirectory = args[0];
12+
Installer.Start(sourceDirectory, targetDirectory, "DataCommander.exe");
13+
}
14+
}
15+
}

Setup/Setup.csproj

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>netcoreapp2.0</TargetFramework>
6+
</PropertyGroup>
7+
8+
<ItemGroup>
9+
<ProjectReference Include="..\Foundation.NetStandard-2.0\Foundation.NetStandard-2.0.csproj" />
10+
</ItemGroup>
11+
12+
</Project>

0 commit comments

Comments
 (0)