使用WiX更新清单文件



我有一个应用程序的清单文件,它看起来像这样:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity name="xxx.exe" version="1.1.0.0" type="win32" processorArchitecture="x86" />
  <file name="xxxxxxxx.ocx" hashalg="SHA1">
    <comClass clsid="{4xxxxxxx76-D693-4156-93BA-B938A56F15D3}" description="" threadingModel="apartment" />
    <typelib tlbid="{8xxxxxx-3A75-4708-993D-6E0CD9564072}" version="1.0" helpdir="" flags="control,hasdiskimage" />
  </file>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity name="Assembly numero uno" version="1.1.0.0" type="win32" publicKeyToken="7XXXXXXXXXXXD" />
    </dependentAssembly>
  </dependency>
</assembly>

我想在</dependency>标签后面添加一个新的<dependency>部分。新的<dependency>应该是这样的:

<dependency>
  <dependentAssembly>
    <assemblyIdentity name="Assembly number two" version="1.1.0.0" type="win32" publicKeyToken="7XXXXXXXXXXXD" />
  </dependentAssembly>
</dependency>

如何使用Wix实现这一点?

首先,考虑在构建时修改清单。如果可能的话,它更可取——总是选择构建时的复杂性而不是安装时的复杂性。

只有在<dependency>元素内容取决于用户输入或目标系统状态的情况下,才将其保留到安装时间可能是有意义的。在这种情况下,您应该使用其中一个WiX选项来修改XML,可以是前面提到的XmlFile@OleksandrPshenychny,也可以是XmlConfig。我更经常使用后者,因为它似乎更灵活。

如果你决定在安装时修改清单,你仍然可以让你的生活更轻松。在构建时将XML模式添加到清单中,并且在安装时仅修改依赖于用户输入或系统状态的部分。假设它是assemblyIdentity/version属性。然后WiX的片段可能看起来像这样:

<util:XmlConfig Id="VersionChange" ElementPath="assembly/dependency/dependentAssembly/assemblyIdentity[[]@name='Assembly number two'[]]" File="$(var.Manifest)" Name="version" Action="create" Node="value" On="install" PreserveModifiedDate="yes" Value="1.1.0.0" />

注意方括号转义技术。

您可以使用带有XmlFile元素的WisUtilExtetion库来对XML文件执行一些操作。有关更多详细信息,请访问此链接

相关内容

  • 没有找到相关文章

最新更新