2014-10-28 5 views
0

Я создаю патч, который обновит мою MSI, построенную в WiX. У меня есть один компонент, который имеет только sqlupdatescript, который обрабатывает все мои изменения в базе данных.Компонент Wix не будет обновляться после исправления

Когда мне нужно обновить свой DB, я добавлю еще один sqlscript в этот компонент. Проблема в том, что если я создаю патч, который ТОЛЬКО имеет добавленный sqlscript в этом компоненте, патч ничего не сделает. Если я сделаю изменение в файле (в рамках той же функции), то также будет запущен sqlscript.

Ожидается ли такое поведение в WiX?

ответ

0

Установщик Windows обнаруживает изменения об изменениях в ресурсе, отмеченном как KeyPath. Например, это может быть файл или раздел реестра. Я полагаю, что ваш компонент содержит один файл, который автоматически делает его ключевым путем. Таким образом, когда вы изменяете только скрипт, файл не изменяется, и установщик Windows не знает, что что-то было изменено. В противном случае он правильно обнаруживает изменение и применяет патч.

+0

Фактически, мой компонент не содержит файлов вообще. Только sqlscripts. Вы имеете в виду, что маркировка «keyfile» заставит wix увидеть изменение? Или мне нужно добавить поддельный файл, который я обновляю каждый раз, когда хочу просто запускать свои скрипты? – pezmannen

+0

Если это не элемент ключевого пути, то да, он не будет обнаружен как измененный, поэтому наилучшей практикой является наличие у каждого компонента одного ресурса, помеченного как ключ. Изменение скрипта, который не является ключевым путем, не будет обнаружен как нечто, что было изменено. Неразумно изменять отношения ключевого пути в патче, поэтому не изменяйте его до тех пор, пока не выполните основное обновление. – PhilDW

Смежные вопросы