55 lines
1.9 KiB
PowerShell
55 lines
1.9 KiB
PowerShell
param(
| |||
[Parameter(Mandatory=$true, HelpMessage="Full path to the MT5 Data Folder (e.g. C:\Users\User\AppData\Roaming\MetaQuotes\Terminal\...)")]
| |||
[string]$Mt5DataFolder
| |||
)
| |||
| |||
$ErrorActionPreference = "Stop"
| |||
| |||
# Project root directory (where this script is located)
| |||
$ProjectRoot = $PSScriptRoot
| |||
| |||
# Source directories in the project
| |||
$SourceInclude = Join-Path $ProjectRoot "MQL5\Include\SyntheticTestHarness"
| |||
$SourceScripts = Join-Path $ProjectRoot "MQL5\Scripts\SyntheticTestHarness"
| |||
| |||
# Target directories in MT5
| |||
$TargetInclude = Join-Path $Mt5DataFolder "MQL5\Include\SyntheticTestHarness"
| |||
$TargetScripts = Join-Path $Mt5DataFolder "MQL5\Scripts\SyntheticTestHarness"
| |||
| |||
function Create-MkLink {
| |||
param(
| |||
[string]$Target,
| |||
[string]$Source
| |||
)
| |||
| |||
if (Test-Path $Target) {
| |||
Write-Host "Symlink or folder already exists at: $Target" -ForegroundColor Yellow
| |||
return
| |||
}
| |||
| |||
# Verify if source directory actually exists in the project
| |||
if (-not (Test-Path $Source)) {
| |||
Write-Host "Warning: Source directory not found ($Source)" -ForegroundColor Red
| |||
return
| |||
}
| |||
| |||
# Create parent folder in destination if it does not exist (e.g. ensures MQL5\Include exists)
| |||
$ParentDir = Split-Path $Target -Parent
| |||
if (-not (Test-Path $ParentDir)) {
| |||
New-Item -ItemType Directory -Path $ParentDir | Out-Null
| |||
}
| |||
| |||
Write-Host "Creating symlink: $Target -> $Source" -ForegroundColor Cyan
| |||
| |||
# Executes cmd mklink (may require running as Administrator depending on Windows settings,
| |||
# although Windows 10/11 with Developer Mode enabled does not require it).
| |||
$cmd = "cmd /c mklink /D `"$Target`" `"$Source`""
| |||
Invoke-Expression $cmd
| |||
}
| |||
| |||
Write-Host "Installing symbolic links..." -ForegroundColor Green
| |||
| |||
Create-MkLink -Target $TargetInclude -Source $SourceInclude
| |||
Create-MkLink -Target $TargetScripts -Source $SourceScripts
| |||
| |||
Write-Host "Done!" -ForegroundColor Green
|