-
Notifications
You must be signed in to change notification settings - Fork 283
/
CustomAction.cs
59 lines (49 loc) · 2.08 KB
/
CustomAction.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
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Windows.Forms;
using Microsoft.Deployment.WindowsInstaller;
namespace MtApiSetupActions
{
public class CustomActions
{
private const string MtApiFile = "MtApi.ex4";
private const string TerminalFolder = @"\MetaQuotes\Terminal";
private const string Mql4Folder = "MQL4";
private const string InstalledExpertFolderProperty = "ExpertFolder";
private const string DestinationExpertFolder = @"\Experts\";
[CustomAction]
public static ActionResult InstallEx4File(Session session)
{
session.Log("Begin action InstallEx4File...");
var appDataFolder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
var metaquotesFolder = appDataFolder + TerminalFolder;
if (Directory.Exists(metaquotesFolder))
{
var foldersFound = Directory.GetDirectories(metaquotesFolder, Mql4Folder, SearchOption.AllDirectories);
Console.WriteLine(string.Join("\n", foldersFound));
foreach (var folder in foldersFound)
{
var srcFile = session[InstalledExpertFolderProperty] + MtApiFile;
var destFile = folder + DestinationExpertFolder + MtApiFile;
session.Log(string.Format("Try to copy from {0} to {1}", srcFile, destFile));
try
{
File.Copy(srcFile, destFile, true);
}
catch (Exception e)
{
session.Log(string.Format("Failed to copy MtApi4.ex4. {0}", e.Message));
}
session.Log(string.Format("MtApi.ex4 has been coppied to {0}", destFile));
}
}
else
{
session.Log("MetaTrader is not installed");
}
return ActionResult.Success;
}
}
}