在Wix中,如何避免对安装目录中已存在的文件的文件源进行硬编码?

时间:2013-07-09 20:39:13

标签: wix wix3 dynamics-gp

在我的.wxs文件中,我有以下文件声明。该文件已存在于安装目录中。它没有从源目录复制。我需要在安装期间使用util:XmlConfig更新它。 XmlConfig部分正在运行。

<File Id="AppConfig" Name="Dynamics.exe.config" Source="C:\Program Files (x86)\Microsoft Dynamics\GP2010\Dynamics.exe.config" />

问题是我无法假设文件总是存在于同一位置。我真的很想简单地引用它:

<File Id="AppConfig" Name="[#INSTALLDIR]\Dynamics.exe.config" />

然而,这失败并显示以下消息:

> light.exe ....
The system cannot find the file 'SourceDir\....\[#INSTALLDIR]\Dynamics.exe.config'

我怎么说“文件已经存在于安装目录中,在安装过程中使用该文件,并且现在不对其进行验证”?

1 个答案:

答案 0 :(得分:0)

目录可以使用括号表示法,就好像它们是常规属性一样。如果您不需要安装Dynamics.exe.config但只需使用XmlConfig元素访问它,则只需引用该目录,而无需使用File元素:

<Component Id="Dynamics.exe.config" KeyPath="yes" Guid="*">
  <util:XmlConfig Id="Dynamics.exe.config.XmlConfig1"
                  On="install"
                  Action="..."
                  File="[INSTALLDIR]\Dynamics.exe.config"
                  ...
                  />
  <util:XmlConfig Id="Dynamics.exe.config.XmlConfig2"
                  On="install"
                  Action="..."
                  File="[INSTALLDIR]\Dynamics.exe.config"
                  ...
                  />
</Component>