2017-02-01 5 views
-1

У меня есть следующий код в моем WiX инсталлятор:Wix SetProperty если свойство не имеет значения

<Property Id="CONFIGPATH" /> 
<SetProperty Id="CONFIGPATH" After="AppSearch" Value="[INSTALLFOLDER]servers.cfg">NOT CONFIGPATH</SetProperty> 

Намерение состоит в том, что пользователь может передать пользовательские CONFIGPATH к установщику. Если они не передают собственный путь, используется путь по умолчанию, предназначенный для установки папки установки. Однако этот код не работает. SetProperty никогда не срабатывает.

Если вместо этого я пишу:

<Property Id="CONFIGPATH" /> 
<SetProperty Id="CONFIGPATH" After="AppSearch" Value="[INSTALLFOLDER]servers.cfg"></SetProperty> 

Свойство обновляется до (расчетной стоимости) [INSTALLFOLDER]servers.cfg правильно.

Почему это может быть?

ответ

0

По какой-то причине AppSearch еще слишком рано в процессе установки. Это было необходимо, чтобы изменить код на более поздний момент в последовательности:

<Property Id="CONFIGPATH" /> 
<SetProperty Id="CONFIGPATH" Sequence="execute" 
      Before="InstallFiles" 
      Value="[INSTALLFOLDER]servers.cfg">NOT CONFIGPATH</SetProperty> 
+2

Причина объясняется в записке для RemoveFolderEx (http://wixtoolset.org/documentation/manual/v3/xsd/util/removefolderex .html). «MSI не создает свойства для иерархии Directory в вашем пакете до тех пор, пока не будет включен в действие CostFinalize». Итак, если вы попытаетесь установить свойство до CostFinalize (AppSearch до этого), то INSTALLFOLDER фактически не имеет значения. Не совсем уверен, почему он обновляется до '[INSTALLFOLDER] servers.cfg', а не только' servers.cfg' –

+0

@BrianSutherland Чтобы уточнить, когда установлено значение 'After =" AppSearch ", свойство обновляется до вычисленного значения' [ INSTALLFOLDER] servers.cfg', что-то вроде 'c:/install/servers.cfg'. Просто «SetProperty» не срабатывает, когда присутствует условие «NOT CONFIGPATH». Это удивительно, если вы написали. Возможно, даже несмотря на то, что свойство задано до того, как существует иерархия каталогов, маркер '[INSTALLFOLDER] теперь разрешен к его значению? – Oliver

Смежные вопросы