Wix Installer - как я могу показать значение [Manufacturer] на пути установки? - программирование
Подтвердить что ты не робот

Wix Installer - как я могу показать значение [Manufacturer] на пути установки?

Я пытаюсь создать установщик с пользовательским интерфейсом, используя WiX.

Мой INSTALLFOLDER настроен следующим образом:

<Directory Id="TARGETDIR"
           Name="SourceDir">
  <Directory Id="ProgramFiles64Folder">
    <Directory Id="ManufacturerFolder"
               Name="[Manufacturer]">
      <Directory Id="INSTALLFOLDER"
                 Name="[ProductName]" />
    </Directory>
  </Directory>
</Directory>

В <Product> раздел, я определяю:

<UIRef Id="WixUI_InstallDir" />
<UIRef Id="WixUI_ErrorProgressText" />

<Property Id="WIXUI_INSTALLDIR"
          Value="INSTALLFOLDER" />

Когда я запускаю установщик и перехожу на панель "Папка назначения", я вижу:

Install Service to: 
C:\Program Files\[Manufacturer]\[ProductName]\

Как я могу оценить переменные для отображения?

Примечание: если я оставлю их, нажмите "Далее", "Установить и завершить". Это выглядит просто плохо.

4b9b3361

Ответ 1

Определите переменные в файле конфигурации.

Например, создайте файл с именем config.wxi, содержащий следующее:

<?xml version="1.0" encoding="utf-8"?>
  <Include>
    <?define Manufacturer = "Company Name" ?>
    <?define ProductName = "Product Name" ?>
  </Include>

Затем укажите переменные в вашем .wxs файле с помощью $(var.Manufacturer) и $(var.ProductName).

Ответ 2

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

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="ProgramFiles64Folder">
    <Directory Id="ManufacturerFolder" Name="!(bind.property.Manufacturer)">
      <Directory Id="INSTALLFOLDER" Name="!(bind.property.ProductName)" />
    </Directory>
  </Directory>
</Directory>

Синтаксис !(bind.) описан в разделе Linker (light) в WiX.chm.