Last active
April 9, 2019 15:02
-
-
Save ridomin/7250c9fb3fbc74593c7f97520a3fe771 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Based on https://www.visualstudio.com/docs/build/scripts/index | |
# Enable -Verbose option | |
[CmdletBinding()] | |
$VersionRegex = "\d+\.\d+\.\d+\.\d+" | |
$ManifestVersionRegex = " Version=""\d+\.\d+\.\d+\.\d+""" | |
if (-not $Env:BUILD_BUILDNUMBER) | |
{ | |
Write-Error ("BUILD_BUILDNUMBER environment variable is missing.") | |
exit 1 | |
} | |
Write-Verbose "BUILD_BUILDNUMBER: $Env:BUILD_BUILDNUMBER" | |
$ScriptPath = $null | |
try | |
{ | |
$ScriptPath = (Get-Variable MyInvocation).Value.MyCommand.Path | |
$ScriptDir = Split-Path -Parent $ScriptPath | |
} | |
catch {} | |
if (!$ScriptPath) | |
{ | |
Write-Error "Current path not found!" | |
exit 1 | |
} | |
# Get and validate the version data | |
$VersionData = [regex]::matches($Env:BUILD_BUILDNUMBER,$VersionRegex) | |
switch($VersionData.Count) | |
{ | |
0 | |
{ | |
Write-Error "Could not find version number data in BUILD_BUILDNUMBER." | |
exit 1 | |
} | |
1 {} | |
default | |
{ | |
Write-Warning "Found more than instance of version data in BUILD_BUILDNUMBER." | |
Write-Warning "Will assume first instance is version." | |
} | |
} | |
$NewVersion = $VersionData[0] | |
Write-Verbose "Version: $NewVersion" | |
$AssemblyVersion = $NewVersion | |
$ManifestVersion = " Version=""$NewVersion""" | |
Write-Host "Version: $AssemblyVersion" | |
Write-Host "Manifest: $ManifestVersion" | |
Write-Host "ScriptDir: " $ScriptDir | |
# Apply the version to the assembly property files | |
$assemblyInfoFiles = gci $ScriptDir -recurse -include "*Properties*","My Project" | | |
?{ $_.PSIsContainer } | | |
foreach { gci -Path $_.FullName -Recurse -include AssemblyInfo.* } | |
if($assemblyInfoFiles) | |
{ | |
Write-Host "Will apply $AssemblyVersion to $($assemblyInfoFiles.count) Assembly Info Files." | |
foreach ($file in $assemblyInfoFiles) { | |
$filecontent = Get-Content($file) | |
attrib $file -r | |
$filecontent -replace $VersionRegex, $AssemblyVersion | Out-File $file utf8 | |
Write-Host "$file.FullName - version applied" | |
} | |
} | |
else | |
{ | |
Write-Warning "No Assembly Info Files found." | |
} | |
# Try Manifests | |
$manifestFiles = gci .\ -recurse -include "Package.appxmanifest" | |
if($manifestFiles) | |
{ | |
Write-Host "Will apply $ManifestVersion to $($manifestFiles.count) Manifests." | |
foreach ($file in $manifestFiles) { | |
$filecontent = Get-Content($file) | |
attrib $file -r | |
$filecontent -replace $ManifestVersionRegex, $ManifestVersion | Out-File $file utf8 | |
Write-Host "$file.FullName - version applied to Manifest" | |
} | |
} | |
else | |
{ | |
Write-Warning "No Manifest files found." | |
} | |
Write-Host ("##vso[task.setvariable variable=AppxVersion;]$NewVersion") | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Would you have a script to change the app name according to branch name (so I can sideload the same app with different versions and settings)?