-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPublish-ProgramToInnoSetupInstaller.ps1
More file actions
55 lines (35 loc) · 2.46 KB
/
Publish-ProgramToInnoSetupInstaller.ps1
File metadata and controls
55 lines (35 loc) · 2.46 KB
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
$program = $args[0]
$baseName = "PointlessWaymarks.$program"
$ErrorActionPreference = "Stop"
$fossilCheckout = fossil info | Select-String -Pattern "checkout:" | ForEach-Object { $_.Line.Substring(9, $_.Line.Length - 9).Trim().Split(' ')[0] } | Select-Object -First 1
$fossilStatusBrief = fossil status -b
if ($fossilStatusBrief -match "dirty") {
$fossilStatusBrief = "Uncommitted_Changes"
} else {
$fossilStatusBrief = ""
}
Write-Host "Fossil Version: $fossilCheckout"
Write-Host "Fossil Status Brief: $fossilStatusBrief"
$fossilId = "$fossilCheckout`_$fossilStatusBrief"
Write-Host "Fossil Id: $fossilId"
dotnet clean .\PointlessWaymarks.slnx -property:Configuration=Release -property:Platform=x64 -verbosity:minimal
dotnet restore .\PointlessWaymarks.slnx -r win-x64 -verbosity:minimal
$vsWhere = "{0}\Microsoft Visual Studio\Installer\vswhere.exe" -f ${env:ProgramFiles(x86)}
$msBuild = & $vsWhere -latest -requires Microsoft.Component.MSBuild -find MSBuild\**\Bin\MSBuild.exe
& $msBuild .\PointlessWaymarks.slnx -property:Configuration=Release -property:Platform=x64 -verbosity:minimal
if ($lastexitcode -ne 0) {throw ("Exec: " + $errorMessage) }
$publishPath = "M:\PointlessWaymarksPublications\$baseName"
if(!(test-path -PathType container $publishPath)) {New-Item -ItemType Directory -Path $publishPath }
Remove-Item -Path $publishPath\* -Recurse
& $msBuild .\$baseName\$baseName.csproj -t:publish -p:PublishProfile=.\$baseName\Properties\PublishProfile\FolderProfile.pubxml -verbosity:minimal
if ($lastexitcode -ne 0) {throw ("Exec: " + $errorMessage) }
$exePath = "M:\PointlessWaymarksPublications\$baseName\$baseName.exe"
$fileVersionInfo = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($exePath)
# Calculate hour and minute from FilePrivatePart
$versionHour = [math]::Floor($fileVersionInfo.FilePrivatePart / 100)
$versionMinute = $fileVersionInfo.FilePrivatePart - ($versionHour * 100)
$versionDate = New-Object DateTime($fileVersionInfo.FileMajorPart, $fileVersionInfo.FileMinorPart, $fileVersionInfo.FileBuildPart, $hour, $minute, 0)
$publishVersion = "{0}-{1}-{2}-{3}-{4}" -f $versionDate.ToString("yyyy"), $versionDate.ToString("MM"), $versionDate.ToString("dd"), $versionHour.ToString("00"), $versionMinute.ToString("00")
Write-Host "Publish Version: $publishVersion"
& "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" ".\Publish-InnoSetupInstaller-$program.iss" /DVersion=$publishVersion /DScmCommit=$fossilId
if ($lastexitcode -ne 0) {throw ("Exec: " + $errorMessage) }