GitHub Action: MSI-Release per WiX v4 auf Windows-Runner
- .github/workflows/release.yml: baut bei v*-Tags ein MSI und veröffentlicht es als GitHub Release - installer/Intune-Manager.wxs: WiX v4 Package-Definition (Program Files, Startmenü-Shortcut) - installer/License.rtf: Lizenztext für den Installer-Dialog Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
name: Build & Release MSI
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*'
|
||||
|
||||
jobs:
|
||||
build-msi:
|
||||
runs-on: windows-latest
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Extract version (strip leading v)
|
||||
id: ver
|
||||
shell: pwsh
|
||||
run: |
|
||||
$tag = "${{ github.ref_name }}"
|
||||
$ver = $tag.TrimStart('v')
|
||||
# WiX requires 4-part version (Major.Minor.Patch.Build)
|
||||
if ($ver -notmatch '^\d+\.\d+\.\d+\.\d+$') { $ver = "$ver.0" }
|
||||
echo "VERSION=$ver" >> $env:GITHUB_OUTPUT
|
||||
echo "TAG=$tag" >> $env:GITHUB_OUTPUT
|
||||
|
||||
- name: Prepare staging directory
|
||||
shell: pwsh
|
||||
run: |
|
||||
$stage = "${{ runner.temp }}\stage"
|
||||
New-Item -ItemType Directory -Force $stage | Out-Null
|
||||
# Copy everything except .git, .github, installer
|
||||
Get-ChildItem -Path . -Exclude '.git','.github','installer' |
|
||||
Copy-Item -Destination $stage -Recurse -Force
|
||||
|
||||
- name: Install WiX Toolset v4
|
||||
shell: pwsh
|
||||
run: |
|
||||
dotnet tool install --global wix
|
||||
wix extension add WixToolset.UI.wixext --global
|
||||
|
||||
- name: Build MSI
|
||||
shell: pwsh
|
||||
run: |
|
||||
$stage = "${{ runner.temp }}\stage"
|
||||
$installerDir = "${{ github.workspace }}\installer"
|
||||
$msiName = "IntuneManager-${{ steps.ver.outputs.TAG }}.msi"
|
||||
wix build installer\Intune-Manager.wxs `
|
||||
-d Version=${{ steps.ver.outputs.VERSION }} `
|
||||
-d SourceDir=$stage `
|
||||
-d InstallerDir=$installerDir `
|
||||
-o $msiName
|
||||
echo "MSI_NAME=$msiName" >> $env:GITHUB_OUTPUT
|
||||
id: build
|
||||
|
||||
- name: Create GitHub Release
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
name: "Intune Manager ${{ steps.ver.outputs.TAG }}"
|
||||
body: |
|
||||
## Intune Manager ${{ steps.ver.outputs.TAG }}
|
||||
|
||||
### Installation
|
||||
1. `IntuneManager-${{ steps.ver.outputs.TAG }}.msi` herunterladen
|
||||
2. Doppelklick → Installer folgen
|
||||
3. Intune Manager über das Startmenü starten
|
||||
|
||||
### Voraussetzungen
|
||||
- Windows 10/11
|
||||
- PowerShell 5.1 oder 7+
|
||||
- `Microsoft.Graph.Authentication` Modul (wird beim ersten Start automatisch angeboten)
|
||||
files: "IntuneManager-${{ steps.ver.outputs.TAG }}.msi"
|
||||
generate_release_notes: false
|
||||
Reference in New Issue
Block a user