代码之家  ›  专栏  ›  技术社区  ›  Brian Gillespie

加快wix编译速度

  •  4
  • Brian Gillespie  · 技术社区  · 16 年前

    我有一个Wix3.0安装程序,它正在构建88个稍有不同的版本(32位和64位的交叉产品、11个区域设置、4个版本(beta、retail、evaluation、different evaluation)。

    除了本地化的UI之外,每个构建的内容都略有不同,因此我不能只构建一个具有多个区域设置的配置。

    得到的msi大约是120MB。我已经在使用cabcache了。

    安装程序在每个版本中大约需要3-5分钟的时间来构建,从而导致整个构建时间相当长。

    在链接过程中,安装程序似乎受到严重的磁盘绑定(light.exe)。

    显然,加快磁盘速度会有所帮助。有人对如何安装一台能更快地启动这些安装程序的机器有什么建议吗?(或建议重新配置我的wix项目以更高效地构建?)

    4 回复  |  直到 14 年前
        1
  •  0
  •   Ondrej Tucny    16 年前

    拿一个固态硬盘。比如OCZ的内部RAID架构。SSD是十年来每位开发者的升级。如果交换是一个问题,还需要更多的RAM。

        2
  •  0
  •   Albin Sunnanbo    16 年前

    如果您有公共部分(未本地化),您可以用公共部分创建一个合并模块,然后将不同的内容添加到每个构建中。

        3
  •  0
  •   Christopher B. Adkins    16 年前

    我不确定您是否与正在安装的应用程序的开发人员有任何发言权或沟通,但如果您必须创建大量的MSI,主要是因为语言,您是否考虑只提供一种语言的MSI,将所有语言特定的文件传送到资源D?iDirectory,然后用户可以选择要使用的语言(但仅当他们需要默认语言以外的其他语言时才安装此语言)。另外,值得研究的是,以这样一种方式生产产品:用户可以从哪种语言中选择最好的语言,然后从一开始就安装所有语言。

    至于你关于加快建设的问题,那是一个棘手的问题。使用合并模块,我会马上排除,因为我看不到任何实际的收益。当然,更新硬件(如您所说)会带来一些结果,但我再次不确定您将实现多大程度的跳跃,因此很难判断会带来什么样的收益。我想最好是用细梳子检查一下你的WX,看看里面到底发生了什么。有时,您可以发现包开发过程中遗留下来的东西,或者以前的某个工具中遗留下来的东西,它们确实会减慢您的速度。一个例子是,我的公司最近从一个更自动化的安装创建实用程序切换到了wix(故意留下这个名称,因为我列出了它的问题:p),它自动创建了Windows下运行Windows时可能需要的每个文件夹。应用程序,以及公用文件文件夹、当前用户配置文件等等。我想我最终删除了100多个空目录,这些旧技术对我来说已经足够好了。这只是优化的一个例子。当你花时间真正回顾引擎盖下发生的事情时,你会发现令人惊讶的事情。

        4
  •  0
  •   Albin Sunnanbo    15 年前

    在wixproj安装文件中,在文件结束前添加此文件 <PropertyGroup> 标签

    <IncrementalGet>true</IncrementalGet>
    

    这将告诉WIX只编译在上一次生成之后更改的那些文件。

    推荐文章