将文件名设置为属性

时间:2017-11-28 19:31:19

标签: wix windows-installer

我有一个安装文件的合并模块。我想在MSI创建期间使用传递给合并模块的属性。类似的东西:

<Configuration Name='FileNameProperty'
               Format='Text'
               DefaultValue='[FileNameProperty]' />

<Substitution Table='CustomAction'
              Row='SetFileName'
              Column='Target'
              Value='[=FileNameProperty]' />

<CustomAction Id='SetFileName'
              Property='MYFILENAME'
              Value='[MYFILENAME]' />

<InstallExecuteSequence>
  <Custom Action='SetFileName'
          Before='LaunchConditions'>1</Custom>
</InstallExecuteSequence>

...

<File Name="[MYFILENAME]"
      Source="my-file.exe" />

目前我正在使用自定义操作,即Type 51,它在将属性值替换为其他元素属性(例如ServiceInstall DisplayName)时起作用。但是,在这种情况下,文件部署为[MYFILENAME]。

我查看了MSDN提供的其他自定义操作,但无法找到适合这种情况的任何内容。任何建议或想法,如果这是可能的?

我的最后一个选择是为文件名的每个变体包含文件元素,并根据条件选择所需的文件,但我想避免这种情况。

1 个答案:

答案 0 :(得分:1)

文件名未经过格式化,因此无法使用属性。如果您使用多个文件,WiX的智能出租车可确保副本不占用您机柜中的额外空间。