1

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

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

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

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

4

1 回答 1

1

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

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

于 2013-12-13T10:03:07.193 回答