我想替换安装程序安装的文件。在下面的代码中,“OneCoreFiles”组件应该首次安装文件(这是有效的),组件“ConfigCopyFile”应该替换该配置文件。
但是代码没有按预期工作。首先执行组件'ConfigCopyFile',然后执行'OnecoreFiles'。我希望它以另一种方式工作。
我还在学习WIX,并认为Feature元素中的组件按声明它们的顺序执行。
代码段:
<Component Id="ConfigCopyFile" Guid="{98E61055-5A84-4003-90D1-7A67677D7465}">
<Condition>CONFIGFILEEXISTS</Condition>
<CopyFile Id="ConfigFileId" SourceProperty="CONFIGFILEEXISTS" DestinationProperty ="INSTALLDIR"/>
</Component>
<Feature Id="ProductFeature" Title="OneCore Features" Level="1">
<ComponentRef Id="LogEntries" />
<ComponentGroupRef Id="OneCoreFiles" />
<ComponentRef Id="AppDBConfiguration" />
<ComponentRef Id="SqlServerConfiguration" />
<ComponentRef Id="OracleConfiguration" />
<ComponentRef Id="IISConfiguration" />
<ComponentRef Id="ConfigCopyFile" />
</Feature>
这一定很容易解决。我错过了什么。请指教。
答案 0 :(得分:4)
你正在以错误的方式思考WiX。它不是脚本语言。这是一种表示Windows Installer数据库的方式,这些数据库本质上是声明性的而不是必需的。如果我列出了一堆组件和文件,那么文件将被复制的顺序是不确定的。我只是说需要安装这些文件而不是如何安装它们。
Windows Installer确实公开了驱动事物顺序的序列表(例如创建文件夹然后复制文件),但它不会微控制到该文件之前复制此文件的级别。
Suggested InstallExecute Sequence