Wix Installer - 如何在安装路径中显示[Manufacturer]的值?

时间:2013-06-05 17:55:57

标签: wix wix3.7

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

我的安装文件是使用以下设置的:

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

在&lt; Product&gt;中部分,我正在定义:

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

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

当我运行安装程序并进入“目标文件夹”面板时,我看到:

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

如何评估显示变量?

注意:如果我离开它们,请单击“下一步”,“安装并完成”。它看起来很糟糕。

2 个答案:

答案 0 :(得分:37)

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.)语法记录在WiX.chm中的Linker (light)主题中。

答案 1 :(得分:9)

在配置文件中定义变量。

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

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

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