如何将包含多个文件的目录添加到wix项目输出文件夹?

时间:2013-07-01 15:33:32

标签: build msbuild wix votive

我正在尝试使用WiX Toolset v3.7.1224.0创建一个可以与不同配置一起使用的安装程序。我已经在VS2010中使用Votive构建了一个有效的安装程序。安装程序在WixSqlExtension的帮助下创建了一个MSSQL数据库。

在创建数据库并指定了所有表之后,我希望安装程序使用一些值初始化表。目前,这些值被编译为msi作为SqlString元素。我想将这些字符串外部化为配置文件。配置文件将存储使用InsertTemporary()方法和习惯中的SOURCEDIR属性临时插入SqlString表的字符串。我还没有决定配置文件的格式,但是它将是一个xml文件或一个简单的文本文件,其中每个sql字符串都在它自己的行上,或者分别在它自己的元素中,所以我可以解析文件并为文件中的每个条目添加临时记录。

我想将此配置文件集成到我的项目结构中。它应该被复制到项目的输出目录中,但不应该安装在最终用户的计算机上。我认为我可以通过将文件添加到我的项目然后在Votive中更改文件的高级属性来实现此目的。我将“构建操作”指定为“内容”,将“复制到输出目录”指定为“始终”。但是当我构建项目时,该文件不存在于项目的输出目录中。我最多也希望能够将包含多个配置文件的目录添加到项目输出目录中。

有什么方法可以用Votive和Wix实现这个目标吗?这可能与MSBuild一起使用吗?我如何修改.wixproj文件以创建目录和文件?

1 个答案:

答案 0 :(得分:1)

实际上,解决方案是修改该项目的wixproj文件。 Wix使用MSBuild,可以找到MSBuild的WIX目标的简短描述here。要在Visual Studio中编辑wixproj文件,请打开Wix项目的上下文菜单并将其卸载。打开卸载项目的上下文菜单,然后选择edit projectname.wixproj

要在编译项目后复制文件,必须将Target属性设置为Name的新AfterBuild元素添加到Project元素中。 wixproj文件。要复制文件,请为要复制到输出文件夹的每个文件指定一个Copy元素。将Copy元素放在Target元素中。阅读Copy语法here。使用MSBuild可以完成更多工作,因此请查看reference