【问题标题】:Wix Installer - how can I show the value of [Manufacturer] in the install path?Wix Installer - 如何在安装路径中显示 [Manufacturer] 的值?
【发布时间】:2013-06-01 13:16:23
【问题描述】:

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

我的 INSTALLFOLDER 是这样设置的:

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

部分,我定义:

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

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

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

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

如何让它评估显示的变量?

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

【问题讨论】:

    标签: wix wix3.7


    【解决方案1】:

    在配置文件中定义变量。

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 应用实例转换时,这似乎不起作用——安装不同实例时,我仍然得到默认的 ProductName。
      • @arathorn 你有实例转换的解决方案吗?当我应用实例转换时,我遇到了类似的问题并获得了默认产品名称。
      • 对我来说可悲的是,当分配给 Product/@Manufacturer 时,这只会吐出字符串值“!(bind.property.Manufacturer)”
      猜你喜欢
      • 2021-12-16
      • 2018-02-09
      • 2013-12-17
      • 2022-08-09
      • 2018-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多