Files
intune-apps/scripts/Build-And-UpdateReadme.ps1
2025-04-29 13:29:32 +02:00

93 lines
3.4 KiB
PowerShell

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")) {
"![App logo]($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"