1

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

<?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 实现这一目标?

4

2 回答 2

2

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

<dependency>只有在元素内容取决于用户输入或目标系统状态的情况下,才将其留到安装时才有意义。在这种情况下,您应该使用 WiX 选项之一来修改 XML,或者XmlFile @OleksandrPshenychnyy 提到的,或者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" />

注意方括号转义技术。

于 2012-08-31T05:32:44.447 回答
1

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

于 2012-08-30T11:37:16.613 回答