Wix: пользовательское действие для чтения текста версии из файла и установки условия запуска - PullRequest
0 голосов
/ 03 октября 2011

У меня возникла ситуация с Wix, которая кажется, что ее решение может быть комбинацией нескольких шагов. Я просто не знаю, что это за шаги или как их построить.

Моя установка зависит от определенной версии другой устанавливаемой программы (например, OtherApp v2.1.6). Мне нужно указать это как условие запуска.

Сложность в том, что единственное место, где указана версия при установке OtherApp, - это текстовый файл (version.dat). Поэтому мне нужно написать пользовательское действие, чтобы прочитать эту строку версии из файла данных и присвоить ее свойству или условию, все до Условий запуска.

Я пробовал командный файл, чтобы открыть этот текстовый файл и сравнить найденную версию с версией, которая передается в командный файл в качестве аргумента. Пакетный файл возвращает 0, если версия такая же или выше (при условии обратной совместимости), и 1, если версия старше. Однако я не смог заставить пользовательское действие правильно выполнить командный файл.

Я также безуспешно пробовал разные способы использования VBScript.

Кто-нибудь может дать какое-либо представление о том, как мне настроить этот сценарий? Я думал, что знаю, но обнаружил, что понятия не имею.

Спасибо за любую помощь!

1 Ответ

1 голос
/ 04 октября 2011

Ты на правильном пути.Настраиваемое действие для чтения файла TXT должно быть немедленным и выполняться перед стандартным действием LaunchCondition.Вы должны запланировать это настраиваемое действие в обеих последовательностях, InstallUISequence и InstallExecuteSequence - в случае, если ваша установка выполняется в тихом или базовом режиме пользовательского интерфейса, рассматривается только InstallExecuteSequence, в противном случае обе последовательности выполняются.Это пользовательское действие должно прочитать версию из файла и установить свойство MSI.Это свойство следует использовать позже в состоянии запуска.

Язык, на котором вы создаете свое пользовательское действие, не имеет большого значения.Так что смело выбирайте удобную вам технологию.Однако помните, что пользовательские действия VBScript отстой .: -)

Если ваше приложение является приложением .NET, это означает, что .NET является необходимым условием для вашей установки, и поэтому вы можете воспользоваться возможностью создания пользовательских действий в C #.DTF (API для общения с базой данных MSI, поставляемой с WiX) очень удобен.Например, чтобы установить свойство, вы можете использовать следующий синтаксис:

session["OTHER_APP_IS_INSTALLED"] = 1;
...