Автоматическое обновление и управление обновлениями для установщика Windows XML (WiX)

Я использовал InstallShield LE в Visual Studio 2010, но он сильно ограничен и иногда содержит ошибки. Я посмотрел на платные версии InstallShield, но у них слишком много ограничений для такой цены.

Поэтому я решил перейти на WiX. У меня был некоторый опыт с этим несколько лет назад. Было довольно легко создать простой установщик, используя SharpDevelop с инструментами WiX.

Сейчас пытаюсь собрать решения и инструменты для WiX. По сути, мне нужно получить следующую функциональность (запрошенную моим клиентом):

  • когда я запускаю программу установки, она должна проверить текстовый файл на сервере и посмотреть, доступна ли более новая версия.Если это так, то установщик должен иметь возможность загрузить обновленный пакет установщика и запустить его (есть ли какие-либо утилиты для загрузки в WiX?)

  • , решая зависимости. Основной зависимостью моего приложения является .NET 4 (который сам зависит от установщика Windows 3). Установщик должен предложить пользователю загрузить и установить их автоматически

  • , регистрируя процесс установки, а также собирая файл журнала процесса установки зависимостей. Я не хочу, чтобы пользователь искал различные файлы .log в случае сбоя установки .NET4 или WindowsInstaller3. Вся информация должна быть собрана в одном месте, и если что-то пойдет не так, я должен показать пользователю специальное всплывающее диалоговое окно с возможностью сохранить полный файл журнала установки и отправить его мне

  • установщик должен иметь возможность определить, есть ли более новая версия моего приложения уже установлена, и отображать осмысленное индивидуальное сообщение об ошибке перед выходом

  • установщик должен иметь возможность определить, установлена ​​ли уже более старая версия моего приложения. и предложить пользователю выйти из установки или удалить предыдущую версию и установить новую версию. Кстати, незначительные обновления компонентов не планируются, я предпочитаю переустанавливать все заново (думаю, это серьезное обновление с точки зрения WindowsInstaller).Installshield LE не помог мне из-за этого, он просто показал окно ошибки с сообщением о другом продукте, но не предложил удалить его

  • в случае обновления, установщик должен быть в состоянии определить, если некоторые из компонентов приложения находятся в use (запущенные процессы приложений) и отображать пользовательское сообщение об ошибке, а не просто какое-то загадочное «Установка не удалась»

Я читал, что управление обновлениями может быть немного болезненным, даже если я оставлю свой UpgradeCode нетронутым, потому что этот код хранится в реестре Windows в сжатом виде, а также, если пользователь переименует загруженный файл, он может быть обнаружен WindowsInstaller как совершенно новый продукт ... или, может быть, это только в случае с файлами WindowsInstaller .msi, и у WiX есть некоторая хитрость для избежать этой проблемы?

О загрузке обновлений - мне нужна эта функция и в самом приложении. Я не уверен, как реализовать это эффективно, поэтому я могу повторно использовать один и тот же код/утилиту загрузчика обновлений как в установщике WiX, так и в моем приложении.

Можно ли удовлетворить все эти требования, используя существующие в настоящее время инструменты WiX, или, может быть, мне нужно будет написать код некоторых компонентов с нуля?

7
задан Kara 23 January 2014 в 05:20
поделиться