【问题标题】:Installing very large files安装非常大的文件
【发布时间】:2013-04-17 07:00:32
【问题描述】:

我有一个 MSI 包,除了程序组件外,它还安装了一个大型数据库文件。此文件不包含在包中,但在 msi 文件旁边提供。到目前为止,此设置没有问题。现在数据库增长到大于 2 GB 的大小。这会在安装时引发错误(在 Win7 机器上测试):

“写入文件时出错:[数据库文件的路径]。请检查您是否有该文件夹的权限。”

搜索互联网显示 Windows Installer 似乎对大于 2GB 的文件有问题。作为解决方案,建议不要将文件包含在 MSI 中,而是将其与 MSI 一起解压缩。这就是我们已经在做的事情。因此建议的解决方案不起作用。

有没有办法使用 Windows Installer 安装大于 2 GB 的文件?这个限制对我来说似乎有点过时了。

P.S.:如果有帮助,安装是使用 WIX 构建的,但任何关于在 msi 数据库本身中修改内容的提示都非常感谢

【问题讨论】:

  • 另一种选择是使用脚本生成架构,然后使用 bcp 导入数据。我为我的一个安装程序执行此操作,对于在 SqlServer 上部署时约为 1GB 的数据库,生成的 msi 约为 60MB。诚然,在 cab 压缩设置为高的情况下,构建需要大约 5 小时,但如果您使用 mszip,它会快得多,但不会那么小(我们只是每晚构建,所以这不是问题)。将涉及大量迁移工作,但它将解决您达到的 2GB 限制(除非您有 1 x 2GB 表!)

标签: wix windows-installer large-files


【解决方案1】:

Windows 安装程序确实有一些旧限制。 FileSize 的表定义限制为 2GB,Windows Installer 使用压缩文件压缩限制为 4GB 的数据(尽管您可以使用 cab-splitting 绕过它)。

我很确定您已经在 Windows 安装程序中达到了真正的最大值,但是如果您有更新版本的 WiX 工具集 (v3.7+),您可以查看 cab-splitting 是否适合您。要尝试将您可能拥有的任何 Media 元素替换为:

<MediaTemplate MaximumCabinetSizeForLargeFileSplitting='200' />

这将创建尽可能多的 200MB 文件柜来容纳您的内容。剩下的唯一问题是当文件大于 2GB 时 Windows Installer 是否会理解该文件。祝你好运!

【讨论】:

  • 感谢您的回答。我尝试使用这个新功能,但遇到了其他一些问题。我的软件包包括来自第三方公司的合并模块。 标记需要 DiskID 属性。编译时出现错误“LGHT0357:只应编写 Media 和 MediaTemplate 表之一。”互联网搜索没有任何帮助。因此,我什至不明白数据库可能被打包在哪里。从包中删除合并模块会引发与我使用 的旧配置相同的错误:要打包的文件太大。
  • MediaTemplate 很可能还没有很好地支持合并模块。将是对 WiX 工具集的一个很好的增强。
猜你喜欢
  • 1970-01-01
  • 2013-05-07
  • 1970-01-01
  • 2015-11-05
  • 2015-03-24
  • 1970-01-01
  • 2017-04-29
  • 1970-01-01
  • 2011-12-14
相关资源
最近更新 更多