Значения логического свойства Wix не работают - PullRequest
6 голосов
/ 02 октября 2011

У меня есть следующее свойство:

<Property Id="UPDATEDB">1</Property>

Флажок в пользовательском интерфейсе, привязанный к этому свойству:

<Control Id="updateDatabase" Type="CheckBox" CheckBoxValue="1" Height="15" Width="95" X="20" Y="74" Text="Update Database" Property="UPDATEDB" />

И пользовательское действие, которое делает что-то на основании значениясвойство

<CustomAction Id="RunDbMigration" Directory="INSTALLDIR" Return="check"
          ExeCommand='[DBMIGRATIONDIR]\DbMigration.exe' />

<InstallExecuteSequence>
  <Custom Action="RunDbMigration" After="InstallFinalize">UPDATEDB=1 AND NOT Installed</Custom>
</InstallExecuteSequence>

Если я пытаюсь передать значение 0 для UPDATEDB из командной строки:

msiexec /i "Setup.msi" /l* UPDATEDB=0

или

msiexec /i "Setup.msi" /l* UPDATEDB="0"

значение флажкав любом случае проверяется.Тем не менее, переданные 0, похоже, соблюдаются, а действие RunDbMigration не выполняется ...

Что здесь происходит?Почему это такая ракетостроение?

Ответы [ 3 ]

5 голосов
/ 03 октября 2011

Как уже упоминали другие, флажки не являются логическими в смысле 1/0, они логические в нулевом / не нулевом смысле.

Для сброса из командной строки - вы хотели бы использовать что-то вроде

msiexec /i "Setup.msi" /l* UPDATEDB=""

Скорее всего, ваше условие специально ищет значение 1, прежде чем выполнять пользовательское действие, поэтому ваш CA не запускается.

3 голосов
/ 02 октября 2011

Свойства установщика либо установлены в значение, либо не заданы. Внутренне значение - это просто строка, поэтому «0», «1», «true» и «false» одинаковы.

Элемент управления флажок проверяется, когда его свойство установлено в значение (неважно, что), и снимает флажок, когда его свойство пусто.

Эта командная строка устанавливает свойство и устанавливает флажок:

msiexec /i "Setup.msi" /l* UPDATEDB="0"

Эта командная строка не устанавливает свойство, поэтому флажок не установлен:

msiexec /i "Setup.msi" /l*
2 голосов
/ 02 октября 2011

Проблема в CheckBoxValue = "1" . Вы найдете решение для вашего вопроса здесь: http://windows -installer-xml-wix-toolset.687559.n2.nabble.com 1005 *

...