Как Wix решает установить определенный файл?

Как я уже сказал в заголовке, вопрос в том, как Wix решает установить определенный файл?

Итак, у меня есть exe-файл, и когда я что-то меняю в exe-файле и пересобираю его, он не будет переустановлен, если я не изменю версию. Но если я что-то изменю в файле ресурсов, файл ресурсов будет заменен, даже если я не изменю версию своего приложения. Итак, как wix решает, нужно ли ему заменить файл во время обновления или нет.

Я использую wix3.9. MajorUpgrade запланирован после InstallFinalize.


person Ivan Vasiljevic    schedule 30.06.2015    source источник


Ответы (1)


Файлы с версиями заменяются в зависимости от версии файла, да, но файлы данных заменяются в зависимости от того, указали ли вы хэш файла или нет. Я думаю, что WiX генерирует файлы hases по умолчанию, поэтому это правило перезаписи:

https://msdn.microsoft.com/en-us/library/aa370532(v=vs.85).aspx

и это правило установщика Windows, которое применяется ко всем настройкам MSI, а не решение WiX.

P.S. afterInstallFinalize не является идеальным местом. afterInstallExecute безопаснее, и общий результат будет таким же. Проблема в том, что после InstallFinalize означает, что новый продукт установлен. Если удаление старого продукта завершается сбоем и выполняется откат, в конечном итоге вы получите установленные как старые, так и новые продукты, иначе известный как беспорядок. afterInstallExecute делает все частью транзакции, поэтому вы устанавливаете исходный продукт, если его не удается удалить.

person PhilDW    schedule 30.06.2015
comment
Спасибо. Я обязательно изменю, когда запланирован MajorUpgrade. Я не знал, что это может поднять эту проблему. - person Ivan Vasiljevic; 01.07.2015