3
我想先卸載一個包,然後安裝該包的最新版本。簡單,你會想,但是當我包括我的DSC配置如下代碼:DSC包資源具有相同的密鑰屬性
### 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'
}
在創建.mof文件,我收到以下錯誤:
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'.
我不想使用腳本資源來處理我的卸載。我在這裏做錯了什麼?
我的意圖是卸載舊版本的軟件包,然後安裝最新版本的產品(該產品不斷在開發中更新)。這裏有一個更好的問題:Package資源會檢查.msi文件是否包含相同的完全安裝?我對此表示懷疑。我的理解是Package資源只會在軟件包不存在的情況下安裝,而不會在它過期時安裝。 –
爲了澄清,我正在設置一個QA VM的配置,它將獲取最新的Dev .msi文件並自動將它們安裝在QA vm上。 –
@SamersSalib如果您輸入產品ID,並且產品ID在包更新時發生變化,則可能會起作用。您還可以查看['xPSDesiredStateConfiguration'](https://github.com/PowerShell/xPSDesiredStateConfiguration)模塊中的'xPackage'資源,該模塊具有其他參數(如'Version'),可以使其運行更平穩。你現在做的方式是不正確的,並且會導致不斷的卸載和重新安裝,無論包是否更新。 – briantist