Bump version to 2.0.1, update deployment strategy for central SPFx deployment, and enhance error handling in PowerShell script

This commit is contained in:
Torsten Brendgen
2026-07-19 23:42:36 +02:00
parent dd79e85725
commit e75b11117f
6 changed files with 23 additions and 23 deletions

View File

@@ -4,7 +4,7 @@ Barrierearme, dreistufige Portalnavigation auf Basis von SharePoint Managed Meta
| Eigenschaft | Wert | | Eigenschaft | Wert |
|---|---| |---|---|
| Version | 2.0.0 | | Version | 2.0.1 |
| SharePoint Framework | SPFx 1.4.1 | | SharePoint Framework | SPFx 1.4.1 |
| Node.js | 8.17.0 | | Node.js | 8.17.0 |
| Zieloberfläche | Moderne SharePoint-Seiten | | Zieloberfläche | Moderne SharePoint-Seiten |
@@ -43,7 +43,7 @@ MegaMenuApplicationCustomizer
└── responsive Darstellung └── responsive Darstellung
``` ```
Das MegaMenu wird einmal pro Site Collection konfiguriert. PortalSettings speichert die zentrale Konfiguration im Property Bag des Root Webs und synchronisiert eine identische, web-scoped Runtime-Bindung auf das Root Web und alle vorhandenen Unterwebs. Das MegaMenu selbst enthält keine eigene Administrationsoberfläche. Das MegaMenu wird einmal pro Site Collection konfiguriert. Das Paket wird mit `skipFeatureDeployment: true` zentral über den App Catalog bereitgestellt, damit das SPFx-Bundle ohne eine App-Installation in jedem einzelnen Web verfügbar ist. PortalSettings speichert die zentrale Konfiguration im Property Bag des Root Webs. Eine Site-Collection-Action aktiviert das MegaMenu auf dem Root Web sowie auf vorhandenen und zukünftigen Unterwebs. Das MegaMenu selbst enthält keine eigene Administrationsoberfläche.
## Voraussetzungen ## Voraussetzungen
@@ -261,6 +261,12 @@ MegaMenu/
## Versionshistorie ## Versionshistorie
### 2.0.1
- Zentrale SPFx-Bereitstellung mit `skipFeatureDeployment: true`.
- Das MegaMenu-Paket muss nicht mehr als App in jedem Unterweb installiert werden.
- Feature-Framework-Registrierung aus dem Paket entfernt; die Aktivierung erfolgt zentral über PortalSettings oder das Deploymentskript.
### 2.0.0 ### 2.0.0
- Neue Application-Customizer-ID `c0abbffb-355d-4d4e-bd38-9e15fb811506`, um alte On-Premises-Manifest- und Loader-Zuordnungen sicher zu umgehen. - Neue Application-Customizer-ID `c0abbffb-355d-4d4e-bd38-9e15fb811506`, um alte On-Premises-Manifest- und Loader-Zuordnungen sicher zu umgehen.

View File

@@ -3,22 +3,9 @@
"solution": { "solution": {
"name": "mega-menu-client-side-solution", "name": "mega-menu-client-side-solution",
"id": "f4660e06-ce08-43ee-bfb7-5c4464e01133", "id": "f4660e06-ce08-43ee-bfb7-5c4464e01133",
"version": "2.0.0.0", "version": "2.0.1.0",
"includeClientSideAssets": true, "includeClientSideAssets": true,
"skipFeatureDeployment": false, "skipFeatureDeployment": true
"features": [
{
"title": "MegaMenu extension registration",
"description": "Registers the MegaMenu Application Customizer in the host web.",
"id": "1e4fdc74-8053-48b2-a15b-e975d61eb71f",
"version": "2.0.0.0",
"assets": {
"elementManifests": [
"elements.xml"
]
}
}
]
}, },
"paths": { "paths": {
"zippedPackage": "solution/mega-menu.sppkg" "zippedPackage": "solution/mega-menu.sppkg"

View File

@@ -64,8 +64,15 @@ try {
foreach ($web in $site.AllWebs) { foreach ($web in $site.AllWebs) {
try { try {
$webUrl = $web.Url
$userCustomActions = $web.UserCustomActions
if ($null -eq $userCustomActions) {
throw ('UserCustomActions konnten fuer das Web nicht geladen werden: ' + $webUrl)
}
$actions = @( $actions = @(
$web.UserCustomActions | $userCustomActions |
Where-Object { Where-Object {
$_.ClientSideComponentId -eq $componentId -or $_.ClientSideComponentId -eq $componentId -or
$_.ClientSideComponentId -eq $legacyComponentId $_.ClientSideComponentId -eq $legacyComponentId
@@ -88,7 +95,7 @@ try {
} }
if (-not $currentAction) { if (-not $currentAction) {
$currentAction = $web.UserCustomActions.Add() $currentAction = $userCustomActions.Add()
$currentAction.Name = [Guid]::NewGuid().ToString('B') $currentAction.Name = [Guid]::NewGuid().ToString('B')
$created++ $created++
} }
@@ -105,7 +112,7 @@ try {
$currentAction.Update() $currentAction.Update()
$web.Update() $web.Update()
Write-Host ('MegaMenu synchronisiert: ' + $web.Url) -ForegroundColor Green Write-Host ('MegaMenu synchronisiert: ' + $webUrl) -ForegroundColor Green
} }
finally { finally {
$web.Dispose() $web.Dispose()

2
package-lock.json generated
View File

@@ -1,6 +1,6 @@
{ {
"name": "mega-menu", "name": "mega-menu",
"version": "2.0.0", "version": "2.0.1",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {

View File

@@ -1,6 +1,6 @@
{ {
"name": "mega-menu", "name": "mega-menu",
"version": "2.0.0", "version": "2.0.1",
"private": true, "private": true,
"main": "lib/index.js", "main": "lib/index.js",
"engines": { "engines": {

View File

@@ -40,7 +40,7 @@ export default class MegaMenuApplicationCustomizer
const debug: boolean = this._isDebugEnabled(); const debug: boolean = this._isDebugEnabled();
debugLog(debug, LOG_SOURCE, 'onInit started.', { debugLog(debug, LOG_SOURCE, 'onInit started.', {
componentId: UserCustomActionMegaMenuId, componentId: UserCustomActionMegaMenuId,
version: '2.0.0', version: '2.0.1',
properties: this.properties || {}, properties: this.properties || {},
pageUrl: window.location.href, pageUrl: window.location.href,
webUrl: this.context.pageContext.web.absoluteUrl, webUrl: this.context.pageContext.web.absoluteUrl,