我有一个应用程序的清单文件,如下所示:
<?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实现这一目标?
答案 0 :(得分: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" />
注意方括号转义技术。
答案 1 :(得分:1)
您可以将WisUtilExtention库与XmlFile元素一起使用,以使用XML文件执行某些操作。有关详细信息,请访问this link