19

我正在尝试使用 WiX 创建带有 UI 的安装程序。

我的 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]\

我怎样才能让它评估显示的变量?

注意:如果我离开它们,然后单击下一步,安装并完成它就可以了。只是看起来很糟糕。

4

2 回答 2

42

Binder 变量可以使这非常容易,而无需在定义预处理器变量时搞砸。它会很像这样:

<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 的主题中。

于 2013-06-22T22:04:31.430 回答
9

在配置文件中定义变量。

例如,创建一个名为 config.wxi 的文件,其中包含以下内容:

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

$(var.Manufacturer)然后使用和引用 .wxs 文件中的变量$(var.ProductName)

于 2013-06-05T17:58:41.927 回答