Я использовал 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, или, может быть, мне нужно будет написать код некоторых компонентов с нуля?