首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WIX MSBuild自动化帮助-解决方案最佳实践

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

Stack Overflow用户
提问于 2009-07-24 20:41:28
回答 4查看 2.7K关注 0票数 4

我知道有很多关于同样的信息的问题。我都读过了,但是我的脑子都转过来了,我不知道该走哪条路。另外,缺乏文件真的很伤人。

这是我的风景。我们正试图使用WIX为我们的应用程序创建一个安装程序,并将其发送给经销商以获取我们的产品信息。该应用程序包括我们产品的大约2000张图像和文档,以及通过更新的SQL数据库。数据变化如此频繁,以致于将这些2000作为内容文件保存在应用程序的项目中是非常不可取的。该应用程序依赖于.NET Framework3.5 SP1、SQLServerCE3.5、MicrosoftSyncFrame1.0和ADO.NET SyncServices2.0。

以下是应用程序的要求:

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

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

我想看看其他人在这种情况下会怎么做。

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

如果有比我发现的更好的信息,请包括。我读过无数的文章,博客,堆叠溢出的问题,教程,维基等等。一切似乎都是零碎的。本教程很不错,但没有解释任何关于MSBuild和Votive的内容。我希望看到一个关于使用MSBuild和Votive以及所有WIX MSBuild目标的教程的开始。如果没有人知道这样的教程,我可以把它放在一起。我已经花了整整一周的时间收集信息和阅读。我也是MSBuild的新手,所以如果有人在MSBuild上有任何优秀的文章,请包括它们。

EN

回答 4

Stack Overflow用户

发布于 2009-08-18 01:41:37

关键是将不同类型的复杂性隔离到单独的合并模块中,并将它们作为构建的一部分完全放到MSI中。这样,改变的事情往往可以改变,而不会影响几乎没有改变的事情。

1)数据档案:

我们使用石蜡生成WiX,从而生成一个基于html + Flash的帮助系统的合并模块,该帮助系统由数千个文件组成(我无法说服客户转到CHM)。

将它们编译成一个合并模块。

2)程序集:假设这是一组更改较少的集合,只需手工完成一个合并模块,或使用带有正确文件和依赖项的WixEdit进行合并。

3)对于版本号,根据您的构建系统,有很多方法来管理。AssemblyInfoTask非常直接地确保您的所有程序集都有适当的版本化。如果您使用的是MSBuild扩展包,那么它有一些版本控制功能。

票数 2
EN

Stack Overflow用户

发布于 2009-08-03 08:26:35

我也有过类似的情况,无法找到解决方案,因此以以下方式结束:

我编写了一个名为wixgen.exe的定制命令行程序,用于生成wxs清单文件。它非常特定于我们的实现,因为它只知道如何创建2种类型的wxs文件。一个用于IIS网站/虚拟目录部署,另一个用于Windows服务部署。

每次我们的持续集成服务器触发构建时,一个构建后任务运行wixgen和正确的args,为正在更改的项目生成一个新的manifest.wxs。它自动包含部署所需的所有文件。这些构建还使用技术的变体( at:http://richardsbraindump.blogspot.com/2007/07/versioning-builds-with-tfs-and-msbuild.html )对dll进行了版本化。

然后使用手动触发的独立构建来构建包含生成的wxs文件的wixproj项目并生成msi文件。

票数 0
EN

Stack Overflow用户

发布于 2009-08-16 20:43:58

我会放弃CD传送(如此90年代),并与ClickOnce。这个解决方案似乎很适合,因为您已经使用了.NET框架。使用ClickOnce,您应该能够不断更新解决方案的内容,并将更新提供给您的核心内容。如果需要,请让我知道示例ClickOnce部署代码。

您可以找到更多的ClickOnce信息这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1180059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档