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
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"
|
||||||
|
xmlns:ui="http://wixtoolset.org/schemas/v4/wxs/ui">
|
||||||
|
|
||||||
|
<Package Name="Intune Manager"
|
||||||
|
Manufacturer="Wende IT"
|
||||||
|
Version="$(var.Version)"
|
||||||
|
UpgradeCode="9F3A2B1C-4D5E-6F70-8192-A3B4C5D6E7F8"
|
||||||
|
Scope="perMachine"
|
||||||
|
Language="1031">
|
||||||
|
|
||||||
|
<SummaryInformation Description="Intune Manager – Web Edition" />
|
||||||
|
<MajorUpgrade DowngradeErrorMessage="Eine neuere Version von Intune Manager ist bereits installiert." />
|
||||||
|
<MediaTemplate EmbedCab="yes" />
|
||||||
|
|
||||||
|
<ui:WixUI Id="WixUI_InstallDir" InstallDirectory="INSTALLFOLDER" />
|
||||||
|
<WixVariable Id="WixUILicenseRtf" Overridable="yes" Value="$(var.InstallerDir)\License.rtf" />
|
||||||
|
|
||||||
|
<Feature Id="Main" Title="Intune Manager" Level="1">
|
||||||
|
<ComponentGroupRef Id="AppFiles" />
|
||||||
|
<ComponentRef Id="StartMenuShortcut" />
|
||||||
|
</Feature>
|
||||||
|
|
||||||
|
<!-- Installation directory -->
|
||||||
|
<StandardDirectory Id="ProgramFiles64Folder">
|
||||||
|
<Directory Id="INSTALLFOLDER" Name="Intune Manager" />
|
||||||
|
</StandardDirectory>
|
||||||
|
|
||||||
|
<!-- All application files (harvested from staging dir) -->
|
||||||
|
<ComponentGroup Id="AppFiles" Directory="INSTALLFOLDER">
|
||||||
|
<Files Source="$(var.SourceDir)\**" />
|
||||||
|
</ComponentGroup>
|
||||||
|
|
||||||
|
<!-- Start Menu shortcut -->
|
||||||
|
<StandardDirectory Id="ProgramMenuFolder">
|
||||||
|
<Directory Id="AppMenuDir" Name="Intune Manager">
|
||||||
|
<Component Id="StartMenuShortcut" Guid="B2C3D4E5-F6A7-8901-BCDE-F12345678901">
|
||||||
|
<Shortcut Id="AppShortcut"
|
||||||
|
Name="Intune Manager"
|
||||||
|
Description="Intune Manager Web-Frontend starten"
|
||||||
|
Target="[INSTALLFOLDER]Run.cmd"
|
||||||
|
WorkingDirectory="INSTALLFOLDER" />
|
||||||
|
<RemoveFolder Id="RemoveAppMenuDir" Directory="AppMenuDir" On="uninstall" />
|
||||||
|
<RegistryValue Root="HKCU"
|
||||||
|
Key="Software\WendeIT\IntuneManager"
|
||||||
|
Name="installed"
|
||||||
|
Type="integer"
|
||||||
|
Value="1"
|
||||||
|
KeyPath="yes" />
|
||||||
|
</Component>
|
||||||
|
</Directory>
|
||||||
|
</StandardDirectory>
|
||||||
|
|
||||||
|
</Package>
|
||||||
|
</Wix>
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{\rtf1\ansi\deff0
|
||||||
|
{\fonttbl{\f0 Arial;}}
|
||||||
|
\f0\fs20
|
||||||
|
Intune Manager \endash{} Web Edition\par
|
||||||
|
\par
|
||||||
|
Copyright (c) 2026 Wende IT\par
|
||||||
|
\par
|
||||||
|
Dieses Werkzeug wird intern bereitgestellt. Eine Weitergabe an Dritte ist nicht gestattet.\par
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user