加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

为什么我的WiX安装程序需要一个空的CreateFolder有条件地更新Xml

发布时间:2020-12-16 08:08:30 所属栏目:百科 来源:网络整理
导读:TL; DR:为什么我需要一个空的 CreateFolder /元素在这个条件组件中,以使其工作? 我将一个简单的基于WiX的安装程序用于内部应用程序。此安装程序需要部署标准配置文件(正常的.NET .config文件),然后使用在命令行上传递给msiexec的属性来自定义它。 其中一
TL; DR:为什么我需要一个空的< CreateFolder />元素在这个条件组件中,以使其工作?

我将一个简单的基于WiX的安装程序用于内部应用程序。此安装程序需要部署标准配置文件(正常的.NET .config文件),然后使用在命令行上传递给msiexec的属性来自定义它。

其中一个自定义是仅在已定义RUNTIME属性时创建特定应用程序设置。这里是WiX组件:

<Component Id="C.Rbnz.Fsis.CollectionPeriodService.exe.config.runtime"
             Guid="(71E6D273-427D-41FD-865A-FB55E9F0988C)">
    <Condition>
      <![CDATA[RUNTIME]]>
    </Condition>

    <CreateFolder/>

    <util:XmlFile Id="X.Runtime.1"
                  Action="createElement"
                  ElementPath="/configuration/appSettings"
                  File="[#F.Rbnz.Fsis.CollectionPeriodService.exe.config]"
                  Name="add"
                  Sequence="2"/>

    <util:XmlFile Id="X.Runtime.2"
                  File="[#F.Rbnz.Fsis.CollectionPeriodService.exe.config]"
                  ElementPath="/configuration/appSettings/add[[]not(@key)[]]"
                  Action="setValue"
                  Name="key"
                  Value="RunTime"
                  Sequence="3"/>

    <util:XmlFile Id="X.Runtime.3"
                  File="[#F.Rbnz.Fsis.CollectionPeriodService.exe.config]"
                  ElementPath="/configuration/appSettings/add[[]@key='RunTime'[]]"
                  Action="setValue"
                  Name="value"
                  Value="[RUNTIME]"
                  Sequence="4"/>

  </Component>

这个工作就像我想要的 – 如果在命令行上为msiexec指定了RUNTIME,则创建新的元素;如果没有,没有发生。

为什么我必须有空的< CreateFolder />在这个组件?

在我试图让这个工作,我发现“Wix Condition Statement”,它显示了一个工作组件,但不解释为什么< CreateFolder />是必要的。

删除< CreateFolder />给我这个错误:

ICE18: KeyPath for Component: ‘C.Rbnz.Fsis.CollectionPeriodService.exe.config.runtime’ is Directory: ‘INSTALLDIR’. The Directory/Component pair must be listed in the CreateFolders table.

这是,我敢肯定,一旦你知道这是什么意思,相当信息。

每个组件都有一个关键路径;最常见的是一个文件。您的组件没有文件或其他键路径,因此WiX将其默认为目录。 Windows安装程序然后来了,说具有目录键路径的组件必须确保创建目录,即使其他事情将这样做。这是一个愚蠢的规则与一个容易解决。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读