首页 > 解决方案 > 如何使用 WIX 使用 utils:XmlFile 修改组件 .xml 文件?

问题描述

我正在尝试创建一个安装程序,该安装程序还根据在单独对话框中输入的输入值安装 xml 文件。这里

</Component>
  <Component Id="ConfigXMLDocument">
    <File Id ="Config" KeyPath="yes" DiskId="1" Vital ="yes" Source="$(var.Server.ProjectDir)config.xml"/>
    <CreateFolder Directory="INSTALLFOLDER">
      <util:PermissionEx User="Users" ChangePermission="yes" GenericAll="yes"/>
    </CreateFolder>

    <util:XmlFile ElementPath ="root/Server/servername" File ="[INSTALLFORDER]config.xml" Sequence="1" Id ="SERVERNAME"
                   Action ="setValue" Value ="THIS VALUE IS NOT BEING SET"  SelectionLanguage="XPath"/>
    <util:XmlFile ElementPath ="root/Server/listenport" File ="[INSTALLFORDER]config.xml" Sequence="2" Id ="PORT"
                 Action ="setValue" Value ="THIS ONE EITHER"/>
  </Component>

问题是没有错误并且所有路径都正确解析,但安装的文件仍然与原始文件相同。如果我尝试更改任何其他 XML 文件,它可以工作,但不是安装的那个。

我在网上发现了类似的问题,但没有解决我的问题。

XmlFile 是否可能只是在安装文件之前更改文件?还有什么会导致这样的问题?

标签: wix

解决方案


这似乎不是一个问题,而是两个问题。第一个是使用文件ID而不是路径,所以我替换了这个

File ="[INSTALLFORDER]config.xml"
 

有了这个:

 File ="[#Config]"

但是还是不行,在安装过程中出现了安装程序找不到文件config.xml的错误,所以我把InstallExecuteSequence改成这样:

 <InstallExecuteSequence>
  <Custom Action="SchedXmlFile" After="InstallFiles" />
</InstallExecuteSequence>

UPD。这仍然无法正常工作。WIX 无法打开文件并出现错误:无法打开 XML 文件路径/config.xml,系统错误:-2147024786

错误似乎是 wix 由于某种原因无法识别 XML 文件中的 BOM:

<?xml version"1.0" encoding="UTF-8" ?>

所以我只是删除了它。

希望这可以帮助。


推荐阅读