2016-03-24 4 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

Мое намерение состоит в том, чтобы удалить старую версию пакета, а затем установить более новую версию продукта (которая постоянно обновляется в процессе разработки). Вот лучший вопрос: будет ли ресурс пакета проверять, содержит ли файл .msi ту же самую точную установку? Я сомневаюсь в этом. Я понимаю, что ресурс пакета будет устанавливать пакет только в том случае, если он не существует, а не когда он устарел. –

+0

Чтобы уточнить, я настраиваю конфигурацию виртуальной машины QA, которая будет извлекать последние файлы Dev .msi и автоматически устанавливать их на QA vm. –

+0

@SamersSalib, если вы вводите идентификатор продукта, а идентификатор продукта изменяется при обновлении пакета, тогда он может работать. Вы также можете посмотреть ресурс 'xPackage' в модуле [' xPSDesiredStateConfiguration'] (https://github.com/PowerShell/xPSDesiredStateConfiguration), который имеет дополнительные параметры (например, «Версия»), которые могли бы сделать этот запуск более плавным. То, как вы делаете это сейчас, неверно, и приведет к постоянной деинсталляции и переустановке, независимо от того, обновлен ли пакет или нет. – briantist