Pipelinetask zur Anpassung der Config pro Produktautomatisierung

Hallo allerseits,

ich möchte gerne über eine Variable, welche ich pro Produktautomatisierung setzen kann, das Verhalten der Deinstallation der Vorversion eines Pakets steuern.

Dazu müssen ja für M42 Empirum-Pakete folgende Files angepasst werden:

Setup.inf - AskUninstallOld=0
neo42PackageConfig.json –> UninstallOld: false

Da diese ja mit jedem Paketimport nach Updates aus dem APD immer wieder zurückgesetzt werden, möchte ich das ganze über einen Pipelinetask anpassen. Allerdings wäre es schön, wenn ich das für jede Produktautomatisierung seperat steuern könnte. Da ich den Bedarf tatsächlich nur bei einigen Paketen habe. Und deshalb die Werte nicht global für alle Pakete anpassen will.

Wie könne man das am besten lösen?

Ich habe hier in der Community schon einige Hinweise auf Pipeline-Tasks gelesen, um INI-Files zu editieren, aber mir ist nicht klar, wie ich da über eine Variable die Verbindung zu den Produktautomatisierungen hinbekomme.

Freundliche Grüße
Patrick

Hi Patrick,

es reicht, wenn die neo42PackageConfig.json vor dem Setup.inf Wrapper angepasst wird.
Hierfür gibt es auch einen Communityeintrag:

Das Skript von meinem Kollegen muss also nur um die Abfrage der Variable erweitert werden:

[CmdletBinding()]
[OutputType([void])]
param (
    [Parameter(Mandatory = $true)]
    [string]$Path,

    [Parameter(Mandatory = $true)]
    [ValidateSet(0,1)]
    [int]$AskUninstallOld
)

if (-not (Test-Path $Path)) {
    throw "Datei nicht gefunden: $Path"
}

$jsonData = Get-Content -Raw -Path $Path | ConvertFrom-Json
$jsonData.UninstallOld = [bool]$AskUninstallOld
$jsonData | ConvertTo-Json -Depth 100 | Set-Content -Path $Path -Encoding UTF8

Das Skript abspeichern und z.B. im GeneralDirectory ablegen. Anschließend kann die Pipeline wie folgt angepasst werden:

  1. Eine neue Variable innerhalb der Pipeline anlegen (z.B. AskUninstallOld)

  1. Nach dem Entpacken das Skript ausführen lassen:

    Skript:
    <Global.GeneralDirectory>\AskUninstallOld.ps1
    Parameter: -Path „<Phase.PackagePath><Run.Version>\neo42PackageConfig.json“ -AskUninstallOld <Phase.AskUninstallOld>
  2. Package Config refresh Task nachfolgend einreihen:

Beim Ausführen der Pipeline kann die Variable mit 0 oder 1 gesteuert werden.

Das war jetzt einfach eine Quick&Dirty Lösung, um den Wert in der Json anzupassen - es gibt keine Prüfung, welcher Wert vorher gesetzt wurde! Daher das Ganze nur als Ansporn :wink: