我正在尝试安装XML文件(Tomcat上下文文件)并使用WiX将文件复制到Tomcat \ config \ Catalina \中的另一个位置。 在将文件复制到Tomcat之前,我想在Context xml中编辑一些值。在这里,我使用WixUtilExtension中的标记修改了xml。
以下是我完成的内容:
<SetProperty Id="CopyLocation" Value="[%CATALINA_HOME]\conf\Catalina\" Before="AppSearch" Sequence="execute"/>
<DirectoryRef Id="INSTALLDIR">
<Directory Id="dirA99A3925C98F7E949CF98F783959A0E0" Name="MyInstallFolder">
<Component Id="cmp318E197D1FB960F5622BEB6879276359" Guid="{FFF02817-FA29-40B7-927A-E943C08A8774}">
<File Id="fil6674D3AD50416393E3C992B211173485" KeyPath="yes" Source="$(var.installfolder)\MyContext.xml" />
<util:XmlFile Id="DocBase" Action="setValue" Permanent="yes" File="[#fil6674D3AD50416393E3C992B211173485]"
ElementPath="//Context" Name="docBase"
Value="[INSTALLDIR]InstallFolder" SelectionLanguage="XPath" Sequence="1"/>
<CopyFile Id="Copy_File" DestinationProperty="CopyLocation" DestinationName="MyContext.xml" FileId="fil6674D3AD50416393E3C992B211173485"/>
</Component>
</Directory>
</DirectoryRef>
以下是XML示例:
<Context path="/XERService" docBase="NoValue">
</Context>
问题是我能够修改安装到安装路径的文件,但复制到Tomcat的文件没有更改。
答案 0 :(得分:2)
这是因为DuplicateFiles操作的默认序列(映射到CopyFile的MSI操作)发生在SchedXmlFiles操作之前。您应该可以通过指定以下内容来覆盖它:
<InstallExecuteSequence>
<Custom Action="SchedXmlFile" Before="DuplicateFiles" />
</InstallExecuteSequence>