Voeg build script en workflows toe
This commit is contained in:
93
scripts/Build-And-UpdateReadme.ps1
Normal file
93
scripts/Build-And-UpdateReadme.ps1
Normal file
@@ -0,0 +1,93 @@
|
||||
param(
|
||||
[Parameter(Mandatory=$true)]
|
||||
[string]$AppPath,
|
||||
[string]$DownloadLink = "",
|
||||
[switch]$BuildIntuneWin
|
||||
)
|
||||
|
||||
Write-Host "== Start Build-And-UpdateReadme.ps1 voor $AppPath =="
|
||||
|
||||
# 1. Lees meta.json uit
|
||||
$metaPath = Join-Path $AppPath 'app-meta.json'
|
||||
if (-not (Test-Path $metaPath)) { throw "meta.json niet gevonden ($metaPath)" }
|
||||
$meta = Get-Content $metaPath | ConvertFrom-Json
|
||||
|
||||
$displayName = $meta.displayName
|
||||
$instructies = $meta.instructions
|
||||
$publisher = $meta.publisher
|
||||
$installScript = $meta.installScript
|
||||
$uninstallCmd = $meta.uninstallCommand
|
||||
$detection = $meta.detection
|
||||
$icon = $meta.icon
|
||||
$description = $meta.description
|
||||
|
||||
# 2. Zoek een EXE/MSI in files/
|
||||
$exeOrMsi = Get-ChildItem -Path (Join-Path $AppPath 'files') -Include *.exe,*.msi -File | Select-Object -First 1
|
||||
if (-not $exeOrMsi) {
|
||||
Write-Warning "Geen EXE of MSI gevonden in $AppPath\files"
|
||||
$appVersion = "onbekend"
|
||||
} else {
|
||||
if ($exeOrMsi.Extension -ieq ".msi") {
|
||||
$appVersion = (Get-ItemProperty $exeOrMsi.FullName).VersionInfo.ProductVersion
|
||||
} else {
|
||||
$appVersion = (Get-Item $exeOrMsi.FullName).VersionInfo.FileVersion
|
||||
if (-not $appVersion) { $appVersion = (Get-Item $exeOrMsi.FullName).VersionInfo.ProductVersion }
|
||||
}
|
||||
if (-not $appVersion) { $appVersion = "onbekend" }
|
||||
}
|
||||
|
||||
# 3. (Optioneel) Build .intunewin bestand
|
||||
if ($BuildIntuneWin) {
|
||||
$intuneUtilPath = "$env:GITHUB_WORKSPACE/scripts/IntuneWinAppUtil.exe"
|
||||
if (-not (Test-Path $intuneUtilPath)) {
|
||||
Write-Host "Download de nieuwste IntuneWinAppUtil.exe"
|
||||
Invoke-WebRequest -Uri "https://github.com/microsoft/Microsoft-Win32-Content-Prep-Tool/releases/latest/download/IntuneWinAppUtil.exe" -OutFile $intuneUtilPath
|
||||
}
|
||||
$outputFolder = Join-Path $AppPath 'build'
|
||||
if (-not (Test-Path $outputFolder)) { New-Item -Path $outputFolder -ItemType Directory | Out-Null }
|
||||
& $intuneUtilPath -c (Join-Path $AppPath 'files') -s $installScript -o $outputFolder
|
||||
$packageName = "$($displayName.ToLower().Replace(' ', ''))-$appVersion.intunewin"
|
||||
$srcIntunewin = Get-ChildItem -Path $outputFolder -Filter *.intunewin | Select-Object -Last 1
|
||||
if ($srcIntunewin) {
|
||||
Rename-Item -Path $srcIntunewin.FullName -NewName $packageName -Force
|
||||
}
|
||||
} else {
|
||||
$outputFolder = Join-Path $AppPath 'build'
|
||||
$packageName = "$($displayName.ToLower().Replace(' ', ''))-$appVersion.intunewin"
|
||||
}
|
||||
|
||||
# 4. README.md genereren
|
||||
$uninstText = if ($uninstallCmd) { "**Uninstall:** $uninstallCmd`n" } else { "" }
|
||||
$detectText = if ($detection) {
|
||||
"**Detectie:** type `${($detection.type)}` - pad `${($detection.path)}``n"
|
||||
} else { "" }
|
||||
$iconText = if (($icon) -and (Test-Path "$AppPath/$icon")) {
|
||||
"`n"
|
||||
} else { "" }
|
||||
|
||||
$readme = @"
|
||||
# $displayName
|
||||
|
||||
$iconText
|
||||
**Versie:** $appVersion
|
||||
|
||||
**Laatste intunewin package:** $DownloadLink
|
||||
|
||||
**Uitgever:** $publisher
|
||||
$uninstText$detectText
|
||||
**Beschrijving:** $description
|
||||
|
||||
## Installatie-instructies
|
||||
$instructies
|
||||
|
||||
## Changelog
|
||||
- Versie $appVersion : automatische build door GitHub Actions op $(Get-Date -Format 'yyyy-MM-dd HH:mm')
|
||||
"@
|
||||
|
||||
Set-Content -Path (Join-Path $AppPath 'README.md') -Value $readme -Encoding UTF8
|
||||
|
||||
Write-Host "::set-output name=app_version::$appVersion"
|
||||
Write-Host "::set-output name=package_name::$packageName"
|
||||
Write-Host "::set-output name=build_dir::$outputFolder"
|
||||
Write-Host "::set-output name=app_name::$($displayName.ToLower().Replace(' ', ''))"
|
||||
Write-Host "::set-output name=icon::$icon"
|
||||
Reference in New Issue
Block a user