Wix: пользовательское действие для чтения текста версии из файла и установки условия запуска
У меня есть ситуация с Wix, которая кажется, что ее решение может быть комбинацией нескольких шагов. Я просто не знаю, что это за шаги или как их построить.
Моя установка зависит от определенной версии другой устанавливаемой программы (например, OtherApp v2.1.6). Мне нужно указать это как условие запуска.
Сложность в том, что единственное место, где указана версия в установке OtherApp, - это текстовый файл (version.dat). Поэтому мне нужно написать пользовательское действие, чтобы прочитать эту строку версии из файла данных и назначить ее свойству или условию, все до Условий запуска.
Я пробовал командный файл, чтобы открыть этот текстовый файл и сравнить найденную версию с той, которая передается в командный файл в качестве аргумента. Пакетный файл вернул бы 0, если версия такая же или выше (при условии обратной совместимости), и 1, если версия старше. Тем не менее, я не смог получить пользовательское действие для правильного выполнения командного файла.
Я также пробовал разные способы использования VBScript без успеха.
Кто-нибудь может дать какое-либо представление о том, как я должен настроить этот сценарий? Я думал, что знаю, но я обнаружил, что понятия не имею.
Спасибо за любую помощь!
1 ответ
Вы на правильном пути. Настраиваемое действие для чтения файла TXT должно быть немедленным и выполняться перед стандартным действием LaunchCondition. Вы должны запланировать это настраиваемое действие в обеих последовательностях, InstallUISequence и InstallExecuteSequence - в случае, если ваша установка выполняется в тихом или базовом режиме пользовательского интерфейса, рассматривается только InstallExecuteSequence, в противном случае запускаются обе последовательности. Это пользовательское действие должно прочитать версию из файла и установить свойство MSI. Это свойство следует использовать позже в состоянии запуска.
Язык, на котором вы создаете свое собственное действие, на самом деле не имеет значения. Так что смело выбирайте удобную вам технологию. Однако помните, что пользовательские действия VBScript - отстой.:-)
Если ваше приложение является приложением.NET, это означает, что.NET является необходимым условием для вашей установки, и поэтому вы можете воспользоваться возможностью создания пользовательских действий в C#. DTF (API для общения с базой данных MSI, поставляемой с WiX) очень удобен. Например, чтобы установить свойство, вы можете использовать следующий синтаксис:
session["OTHER_APP_IS_INSTALLED"] = 1;