-
Notifications
You must be signed in to change notification settings - Fork 2.7k
/
build.ps1
106 lines (90 loc) · 3.07 KB
/
build.ps1
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
param (
[Parameter()]
[ValidateSet('Debug', 'Release')]
[string]
$Configuration = 'Release',
[Parameter()]
[ValidateNotNullOrEmpty()]
[string]
$OutputPath = 'release',
[Parameter()]
[bool]
$SelfContained = $True,
[Parameter()]
[bool]
$PublishSingleFile = $True,
[Parameter()]
[bool]
$PublishReadyToRun = $False
)
Push-Location (Split-Path $MyInvocation.MyCommand.Path -Parent)
if ( Test-Path -Path $OutputPath ) {
rm -Recurse -Force $OutputPath
}
New-Item -ItemType Directory -Name $OutputPath | Out-Null
Push-Location $OutputPath
New-Item -ItemType Directory -Name 'bin' | Out-Null
cp -Recurse -Force '..\Storage\i18n' '.' | Out-Null
cp -Recurse -Force '..\Storage\mode' '.' | Out-Null
cp -Recurse -Force '..\Storage\stun.txt' 'bin' | Out-Null
cp -Recurse -Force '..\Storage\nfdriver.sys' 'bin' | Out-Null
cp -Recurse -Force '..\Storage\aiodns.conf' 'bin' | Out-Null
Invoke-WebRequest -Uri 'https://raw.githubusercontent.com/Loyalsoldier/geoip/release/Country.mmdb' -OutFile 'bin\GeoLite2-Country.mmdb'
#cp -Recurse -Force '..\Storage\GeoLite2-Country.mmdb' 'bin' | Out-Null
cp -Recurse -Force '..\Storage\tun2socks.bin' 'bin' | Out-Null
cp -Recurse -Force '..\Storage\README.md' 'bin' | Out-Null
Pop-Location
if ( -Not ( Test-Path '.\Other\release' ) ) {
.\Other\build.ps1
if ( -Not $? ) {
exit $lastExitCode
}
}
cp -Force '.\Other\release\*.bin' "$OutputPath\bin"
cp -Force '.\Other\release\*.dll' "$OutputPath\bin"
cp -Force '.\Other\release\*.exe' "$OutputPath\bin"
if ( -Not ( Test-Path ".\Netch\bin\$Configuration" ) ) {
Write-Host
Write-Host 'Building Netch'
dotnet publish `
-c $Configuration `
-r 'win-x64' `
-p:Platform='x64' `
-p:SelfContained=$SelfContained `
-p:PublishTrimmed=$PublishReadyToRun `
-p:PublishSingleFile=$PublishSingleFile `
-p:PublishReadyToRun=$PublishReadyToRun `
-p:PublishReadyToRunShowWarnings=$PublishReadyToRun `
-p:IncludeNativeLibrariesForSelfExtract=$SelfContained `
-o ".\Netch\bin\$Configuration" `
'.\Netch\Netch.csproj'
if ( -Not $? ) { exit $lastExitCode }
}
cp -Force ".\Netch\bin\$Configuration\Netch.exe" $OutputPath
if ( -Not ( Test-Path ".\Redirector\bin\$Configuration" ) ) {
Write-Host
Write-Host 'Building Redirector'
msbuild `
-property:Configuration=$Configuration `
-property:Platform=x64 `
'.\Redirector\Redirector.vcxproj'
if ( -Not $? ) { exit $lastExitCode }
}
cp -Force ".\Redirector\bin\$Configuration\nfapi.dll" "$OutputPath\bin"
cp -Force ".\Redirector\bin\$Configuration\Redirector.bin" "$OutputPath\bin"
if ( -Not ( Test-Path ".\RouteHelper\bin\$Configuration" ) ) {
Write-Host
Write-Host 'Building RouteHelper'
msbuild `
-property:Configuration=$Configuration `
-property:Platform=x64 `
'.\RouteHelper\RouteHelper.vcxproj'
if ( -Not $? ) { exit $lastExitCode }
}
cp -Force ".\RouteHelper\bin\$Configuration\RouteHelper.bin" "$OutputPath\bin"
if ( $Configuration.Equals('Release') ) {
rm -Force "$OutputPath\*.pdb"
rm -Force "$OutputPath\*.xml"
}
Pop-Location
exit 0