2016-03-24 53 views
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'.

我不想使用腳本資源來處理我的卸載。我在這裏做錯了什麼?

回答

1

你的配置通常應該是冪等的,所以這沒有多大意義。每次應用配置時(每30分鐘或任何設置),您都將卸載並重新安裝軟件包。

MSI安裝程序應該支持自動升級,這意味着您只需確保安裝(更新的)MSI。

+0

我的意圖是卸載舊版本的軟件包,然後安裝最新版本的產品(該產品不斷在開發中更新)。這裏有一個更好的問題:Package資源會檢查.msi文件是否包含相同的完全安裝?我對此表示懷疑。我的理解是Package資源只會在軟件包不存在的情況下安裝,而不會在它過期時安裝。 –

+0

爲了澄清,我正在設置一個QA VM的配置,它將獲取最新的Dev .msi文件並自動將它們安裝在QA vm上。 –

+0

@SamersSalib如果您輸入產品ID,並且產品ID在包更新時發生變化,則可能會起作用。您還可以查看['xPSDesiredStateConfiguration'](https://github.com/PowerShell/xPSDesiredStateConfiguration)模塊中的'xPackage'資源,該模塊具有其他參數(如'Version'),可以使其運行更平穩。你現在做的方式是不正確的,並且會導致不斷的卸載和重新安裝,無論包是否更新。 – briantist