-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathMainInstallerHelper.cs
106 lines (80 loc) · 2.56 KB
/
MainInstallerHelper.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
using System;
using System.Collections;
using System.ComponentModel;
using System.IO;
using System.IO.Compression;
using System.Reflection;
using System.Text;
using System.Windows;
namespace ScanX.InstallHelpers
{
[RunInstaller(true)]
public partial class MainInstallerHelper : System.Configuration.Install.Installer
{
public MainInstallerHelper()
{
InitializeComponent();
}
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
}
protected override void OnBeforeInstall(IDictionary savedState)
{
CleanUp();
base.OnBeforeInstall(savedState);
}
protected override void OnAfterInstall(IDictionary savedState)
{
base.OnAfterInstall(savedState);
var zipPath = Path.Combine(GetPath(), "Scanx.zip");
var protocolFolderPath = GetProtocolFolderPath();
ZipFile.ExtractToDirectory(zipPath, protocolFolderPath);
string servicePath = Path.Combine(protocolFolderPath, "ScanX.Protocol.exe");
ServiceHelper.InstallService(servicePath);
ServiceHelper.StartService();
}
protected override void OnBeforeUninstall(IDictionary savedState)
{
ServiceHelper.StopService();
base.OnBeforeUninstall(savedState);
}
protected override void OnAfterUninstall(IDictionary savedState)
{
base.OnAfterUninstall(savedState);
ServiceHelper.DeleteService();
try
{
var path = GetProtocolFolderPath();
if (Directory.Exists(path))
Directory.Delete(path, true);
}
catch (Exception)
{
}
}
private string GetPath()
{
var result = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
return result;
}
private string GetProtocolFolderPath()
{
var baseDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var result = Path.Combine(baseDir, "Protocol");
return result;
}
private void CleanUp()
{
try
{
ServiceHelper.StopService();
ServiceHelper.DeleteService();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
}