我有一个由几个片段组成的Wix项目。其中一个片段具有数据库组件,另一个片段具有操作xml文件的组件。
当我包含XmlFile元素来操作文件时,不会创建由SqlDatabase定义的数据库。如果我注释掉XmlFile,那么数据库就会被创建。
以下是两个包含正在使用的片段的wix文件:
数据库:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:sql="http://schemas.microsoft.com/wix/SqlExtension">
<Fragment>
<DirectoryRef Id="TARGETDIR">
<Component Id="Database1Creation" Guid="GUID_HERE">
<sql:SqlDatabase Id="Database1"
Server="[DATABASE_SERVER]" Database="[DATABASE_NAME]"
CreateOnInstall="yes" ConfirmOverwrite="no"
DropOnUninstall="yes">
</sql:SqlDatabase>
</Component>
</DirectoryRef>
</Fragment>
</Wix>
Xml Manipulation:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:sql="http://schemas.microsoft.com/wix/SqlExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLDIR" Name="MyDirectory">
<Component Id="ServiceExecutables" Guid="GUID_HERE">
<File Id="File1" Name="File1.xml" Source="Source/File1.xml" />
<util:XmlFile Id="UpdateFile1" File="[INSTALLDIR]File1.xml" Action="setValue" ElementPath="//SomeContainer/SomeElement" Value="[SOME_VALUE]" />
</Component>
</Directory>
</Directory>
</Directory>
</Fragment>
</Wix>
还安装了其他一些东西,但它们似乎对问题没有任何影响(我已删除其他所有内容并测试了安装)。
在使用XmlFile时查看安装日志时,如果没有,它们几乎是彼此的精确副本,除了SqlDatabase调用将完全丢失,并且XmlFile调用将在其位置。
这里有一个已知错误吗?或者我在做一些我不应该做的事情?这不是我们应用程序的杀手,因为我可以将我在xml文件中放入的内容移动到注册表中,但我宁愿不这样做。
我正在使用Wix 3.5。
答案 0 :(得分:0)
好消息,构建1616修复此问题。尽快更新Wix。