WIX MSBuild自动化帮助 – 解决方案最佳实践

我知道有很多关于同样信息的问题.我已经读完了所有内容,但是我的大脑全都转过身来,我不知道要走哪条路.加上缺乏文档真的很痛.

这是我的场景.我们正在尝试使用WIX为我们的应用程序创建一个安装程序,以便我们的产品信息向我们的经销商发送.该应用程序包括大约2000个我们产品的图像和文档以及通过Microsoft Sync Framework更新的SQL CE数据库.数据经常变化,将这些2000作为内容文件保存在应用程序的项目中是非常不受欢迎的.该应用程序依赖于.NET Framework 3.5 SP1,SQL Server CE 3.5,Microsoft Sync Framework 1.0和ADO.NET Sync Services 2.0.

以下是该应用程序的要求:

>经销商将每年在CD上获得应用程序以获取任何更新(应用程序或数据更新).
>应用程序必须从互联网更新自己以获取任何新图像,文档或数据.
>如果客户端计算机上不存在先决条件,则必须先安装它们.
>应该使用尽可能少的人工交互从MSBuild脚本生成完整的安装程序(我们不希望手动更新2000文件列表).

到目前为止我们所取得的成就是我们的解决方案中有一个Votive项目.我们在.wxs文件中手动指定了二进制文件. Web已修改.wixproj文件以使用HeatDirectory任务从指定位置收集我们的数据(图像和文档和数据库)(这已损坏并发出ICE38错误).这似乎没事,但仍然是很多工作.我们必须通过在发布模式下运行程序并将其复制到指定目录来手动更新数据.

我希望看到其他人会在这种情况下做什么.

>您如何安排有关2000数据文件的解决方案?您是否会创建一个自定义构建脚本来从服务器获取当前数据,或者将它们作为内容文件包含在主项目中?
>如何让WIX包含所有项目输出(包括引用的程序集)和所有数据文件?如果您有任何完整的样品,那就太棒了.我所发现的只是这里和那里的小片段,而不是从头到尾的整个例子.
>您将如何处理版本号?你会把它们作为常量放在构建脚本中并通过$(var.VersionNumberName)引用它们吗?您是否可以从正在部署的项目中自动获取版本号?如果是这样,怎么样?

如果有比我发现的更好的信息,请包括.我读过很多文章,博客,Stackoverflow问题,tuturial,维基等.一切似乎都是点点滴滴.本教程很好,但没有解释任何有关MSBuild和Votive的内容.我想看看开始使用MSBuild和Votive以及所有WIX MSBuild目标的教程.如果没有人知道这样的教程,我可以把它们放在一起.我已经花了整整一周收集信息和阅读.我也是MSBuild的新手,所以如果有人在MSBuild上有任何好文章,请加入它们.

最佳答案 关键是将不同类型的复杂性隔离到单独的合并模块中,并将它们作为构建的一部分一起放入MSI中.通过这种方式,经常变化的事情可以改变,而不会影响几乎不会发生变化的事情.

1)对于数据文件:

我们使用Paraffin来生成WiX,因此合并模块用于基于html Flash的帮助系统,该系统包含数千个文件(我无法说服客户转到CHM).

将它们全部编译成合并模块.

2)程序集:假设这是一个不经常更改的集合,只需手动或使用WixEdit创建合并模块,并使用正确的文件和依赖项.

3)对于版本号,有很多方法可以根据您的构建系统来管理它. AssemblyInfoTask是一种非常直接的方法,可以确保所有程序集的版本都适当.如果您使用TFS,MSBuild扩展包有一些版本控制的东西.

点赞