2016-03-24 3 views
3

Ich versuche, zuerst ein Paket zu deinstallieren, dann installieren Sie die neueste Version desselben Pakets. Einfach Sie würden denken, aber wenn ich den folgenden Code in meiner DSC-Konfiguration:DSC Paketressource haben identische Schlüsseleigenschaften

### remove old product setup 
    Package removeOldProduct { 
     Ensure = 'Absent' 
     Name = 'My Product Name' 
     Path = "" 
     ProductId = "" 
    } 
    ### now install the latest product setup 
    Package productSetup { 
     Ensure = 'Present' 
     Name = 'My Product Name' 
     Path = "$productShare\Repository\product.msi" 
     ProductId = "" 
     Arguments = "ACCEPT_EULA=1 /q" 
     DependsOn = '[Package]MsSql' 
    } 

Während die MOF-Datei zu erstellen, erhalte ich folgende Fehlermeldung:

Test-ConflictingResources : A conflict was detected between resources '[Package]productSetup and '[Package]removeOldProduct in node 'myNodeServer'. Resources have identical key properties but there are differences in the following non-key properties: 'Path;Ensure;Arguments'.

Ich will nicht Verwenden Sie eine Skript-Ressource, um meine Deinstallation zu verarbeiten. Was mache ich hier falsch?

Antwort

1

Ihre Konfiguration sollte im Allgemeinen idempotent sein, das macht also wenig Sinn. Sie würden das Paket jedes Mal deinstallieren und neu installieren, wenn die Konfiguration angewendet wird (alle 30 Minuten oder was auch immer es eingestellt ist).

Ein MSI-Installationsprogramm sollte die automatische Aktualisierung unterstützen, was bedeutet, dass Sie nur die Installation des (neueren) MSI sicherstellen würden.

+0

Meine Absicht ist es, die ältere Version des Pakets zu deinstallieren und dann die neuere neueste Version eines Produkts zu installieren (das ständig in der Entwicklung aktualisiert wird). Hier ist eine bessere Frage: Wird die Package-Ressource überprüfen, ob die .msi-Datei die gleiche genaue Installation enthält? Ich bezweifle das. Ich verstehe, dass die Paket-Ressource das Paket nur installieren wird, wenn es nicht existiert, nicht wenn es veraltet ist. –

+0

Um dies zu verdeutlichen, richte ich eine Konfiguration einer QA-VM ein, die die neuesten Dev .msi-Dateien holt und sie automatisch auf dem QA-VM installiert. –

+0

@SamersSalib Wenn Sie eine Produkt-ID eingeben und sich die Produkt-ID ändert, wenn das Paket aktualisiert wird, funktioniert es möglicherweise. Sie können sich auch die Ressource 'xPackage' im Modul '' xPSDesiredStateConfiguration'' (https://github.com/PowerShell/xPSDesiredStateConfiguration) ansehen, das zusätzliche Parameter (wie 'Version') enthält, die diesen Lauf reibungsloser ablaufen lassen. Die Art, wie Sie es jetzt tun, ist jedoch nicht korrekt und führt zu einer konstanten Deinstallation und Neuinstallation, unabhängig davon, ob das Paket aktualisiert wurde oder nicht. – briantist

Verwandte Themen