сравнение строк в условии - PullRequest
0 голосов
/ 17 февраля 2012

, когда я получаю свой тип архитектуры, подобный этому:

<Property Id="PLATTFORM">
            <RegistrySearch Id="myRegSearchPalttform"
                Root="HKLM"
                Key="SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
                Name="PROCESSOR_ARCHITECTURE"
                Type="raw">
            </RegistrySearch>
</Property>

и хочу проверить, является ли он "AMD64" следующим образом:

<?define myPlattform = [PLATTFORM] ?>  
<?if $(var.myPlattform) = AMD64 ?>
some stuff
        <?else ?>
some stuff
        <?endif ?>

, он не работаетКогда я устанавливаю значение static:

<?define stest = AMD64 ?>  
        <?if $(var.stest) = AMD64 ?>

, оно переходит в истинную область.Так почему же значение из реестра (есть значение AMD64) не совпадает с моей строкой подтверждения ????

Tanx заранее

1 Ответ

0 голосов
/ 20 февраля 2012

<?define myPlattform = [PLATTFORM] ?>

Возможно, потому что myPlattform является переменной препроцессора и назначается до того, как свойство PLATTFORM получит какое-либо значение. Если вы хотите условно установить различные компоненты, вы можете попробовать это следующим образом: Как использовать условия в функциях в WiX?

Этот вопрос, возможно, является дубликатом Есть ли способ присвоить переменной препроцессора значение свойства? .

Обновление: если ваша цель - установить место установки на основе архитектуры, а ваша архитектура определяется свойством «PLATTFORM» с помощью указанного вами поиска в реестре, тогда вы можете попробовать следующее:

<Property Id="PLATTFORM">
  <RegistrySearch Id="myRegSearchPalttform"
      Root="HKLM"
      Key="SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
      Name="PROCESSOR_ARCHITECTURE"
      Type="raw">
  </RegistrySearch>
</Property>

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="ProgramFilesFolder">
    <Directory Id="INSTALLFOLDER" Name="SomeValue" />
  </Directory>
</Directory>

<ComponentGroup Id="ProductComponentGroup">
  <Component Id="ProductComponent" Guid="INSERT-GUID-HERE" Directory="INSTALLFOLDER">
    <File Id="TestTextFile.txt" Source=".\TestTextFile.txt" KeyPath="yes"/>
  </Component>
</ComponentGroup>

<Feature Id="ProductFeature" Level="1">
  <ComponentGroupRef Id="ProductComponentGroup"/>
</Feature>

<SetDirectory Id="INSTALLFOLDER" Value="[ProgramFilesFolder]\SomeOtherValue">
  PLATTFORM="AMD"
</SetDirectory>

Примечание: смотрите, что я использовал элемент SetDirectory. Я обычно скачиваю еженедельные выпуски WiX и никогда не использовал этот элемент до тестирования приведенного выше примера. Поэтому я не уверен, какая версия SetDirectory была впервые представлена.

...