我正在尝试使用WiX工具集v3.7.1224.0创建一个可以与不同配置一起使用的安装程序。我已经有了一个可以正常工作的安装器,它是我在VS2010中用Votive构建的。安装程序在WixSqlExtension的帮助下创建一个MSSQL数据库。
在创建了数据库并指定了所有表之后,我希望安装程序使用一些值初始化表。此时,这些值将作为SqlString元素编译到msi中。我想将这些字符串外部化到一个配置文件中。配置文件将存储在自定义操作中使用InsertTemporary()方法和SOURCEDIR属性临时插入到SqlString表中的字符串。我还没有决定配置文件的格式,但它将是一个xml文件或一个简单的文本文件,其中每个sql字符串都在它自己的行中,或者分别在它自己的元素中,所以我可以解析该文件并为文件中的每个条目添加一个临时记录。
我希望将此配置文件集成到我的项目结构中。它应该被复制到项目的输出目录中,但不应该安装在最终用户的计算机上。我认为我可以通过将该文件添加到我的项目中,然后在Votive中更改该文件的高级属性来实现这一点。我将"Build Action“指定为"Content”,将"Copy to Output Directory“指定为"Always”。但是当我构建项目时,该文件不在项目的输出目录中。充其量,我也希望能够将包含多个配置文件的目录添加到项目输出目录中。
我有没有办法用Votive和Wix来实现这一点?使用MSBuild可以做到这一点吗?我必须如何修改.wixproj文件才能创建目录和文件?
发布于 2013-12-13 18:03:07
实际上,解决方案是修改该项目的wixproj文件。Wix使用MSBuild,可以在here中找到MSBuild的WIX目标的非常简短的描述。要在Visual Studio中编辑wixproj文件,请打开Wix项目的上下文菜单并将其卸载。打开卸载项目的上下文菜单并选择edit projectname.wixproj。
要在项目编译后复制文件,必须将Name属性设置为AfterBuild的新Target元素添加到wixproj文件的Project元素中。要复制文件,请为要复制到输出文件夹的每个文件指定一个Copy元素。将Copy元素放在Target元素中。阅读有关Copy语法here的信息。使用MSBuild可以做更多的事情,所以请看一下reference。
https://stackoverflow.com/questions/17408281
复制相似问题