我知道有很多关于同样的信息的问题。我都读过了,但是我的脑子都转过来了,我不知道该走哪条路。另外,缺乏文件真的很伤人。
这是我的风景。我们正试图使用WIX为我们的应用程序创建一个安装程序,并将其发送给经销商以获取我们的产品信息。该应用程序包括我们产品的大约2000张图像和文档,以及通过更新的SQL数据库。数据变化如此频繁,以致于将这些2000作为内容文件保存在应用程序的项目中是非常不可取的。该应用程序依赖于.NET Framework3.5 SP1、SQLServerCE3.5、MicrosoftSyncFrame1.0和ADO.NET SyncServices2.0。
以下是应用程序的要求:
到目前为止,我们所取得的成就是,我们在解决方案中有一个积极的项目。我们已经在.wxs文件中手动指定了二进制文件。Web修改了.wixproj文件,以使用HeatDirectory任务从指定的位置收集数据(图像、文档和数据库)(这是损坏的,并产生了ICE38错误)。这似乎没问题,但还是有很多工作要做。我们必须手动更新数据,方法是在发布模式下运行程序并将其复制到指定的目录中。
我想看看其他人在这种情况下会怎么做。
如果有比我发现的更好的信息,请包括。我读过无数的文章,博客,堆叠溢出的问题,教程,维基等等。一切似乎都是零碎的。本教程很不错,但没有解释任何关于MSBuild和Votive的内容。我希望看到一个关于使用MSBuild和Votive以及所有WIX MSBuild目标的教程的开始。如果没有人知道这样的教程,我可以把它放在一起。我已经花了整整一周的时间收集信息和阅读。我也是MSBuild的新手,所以如果有人在MSBuild上有任何优秀的文章,请包括它们。
发布于 2009-08-18 01:41:37
关键是将不同类型的复杂性隔离到单独的合并模块中,并将它们作为构建的一部分完全放到MSI中。这样,改变的事情往往可以改变,而不会影响几乎没有改变的事情。
1)数据档案:
我们使用石蜡生成WiX,从而生成一个基于html + Flash的帮助系统的合并模块,该帮助系统由数千个文件组成(我无法说服客户转到CHM)。
将它们编译成一个合并模块。
2)程序集:假设这是一组更改较少的集合,只需手工完成一个合并模块,或使用带有正确文件和依赖项的WixEdit进行合并。
3)对于版本号,根据您的构建系统,有很多方法来管理。AssemblyInfoTask非常直接地确保您的所有程序集都有适当的版本化。如果您使用的是MSBuild扩展包,那么它有一些版本控制功能。
发布于 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文件。
发布于 2009-08-16 20:43:58
我会放弃CD传送(如此90年代),并与ClickOnce。这个解决方案似乎很适合,因为您已经使用了.NET框架。使用ClickOnce,您应该能够不断更新解决方案的内容,并将更新提供给您的核心内容。如果需要,请让我知道示例ClickOnce部署代码。
您可以找到更多的ClickOnce信息这里。
https://stackoverflow.com/questions/1180059
复制相似问题