在安装过程中复制应用程序文件 [WIX]

Copying application files during installation [WIX]

我有一个桌面应用程序,它的 HTML 界面包含大约 7500 个文件(大约 40MB) 现在我需要将应用程序文件复制到安装目录中。

哪种方法更好?

  1. 使用burn命令注册所有文件并将它们复制到安装目录
  2. 使用自定义操作将所有文件解压到目标目录
  3. 还有其他想法吗?

我在使用 1. 方法时遇到了问题 - installation/uninstallation 在旧机器 (win xp) 上花费了很多时间(超过 15 分钟)。为什么会这样?因为刻录必须注册所有文件?

自定义操作和解压缩是非常不受欢迎的机制,原因有很多:可靠性、清理/卸载、复杂性、访问权限等。 .. 请不要走那条路。

我不是特别喜欢用于 IIS 部署的 MSI(由于所有非版本化文件),但几乎没有其他更好的选择。您的应用程序似乎是桌面应用程序,所以您没有安装到 IIS?


MSI / Windows 安装程序MSI provides a few major corporate benefits (short version) (full length), but has a number of quirks, one of them being slow installation speed - especially on older systems and slow disks. There are some tricks to use to speed up MSI installations。我个人通常将 MSIFASTINSTALL 设置为 37(参见 link)。 link 中还有进一步的调整 - 不确定它们对您的情况是否有意义。

要求你的发行版有多大? Global, internal, small scale, large scale, etc... 您不必使用 MSI,特别是如果这是用于小规模分发并且用户将以交互方式安装。 MSI 是可靠的远程管理和静默、非交互式部署的至高无上的选择。有许多部署工具:How to create windows installer(MSI 和遗留工具)。

部署工具:您可以使用一种传统的安装程序技术来满足简单的要求 - 如果您发现它更好。甚至用于应用程序虚拟化的 APP-V - 如果它在您的环境中可用。这一切都取决于。我回答的一位用户选择了 WinRAR 所有东西:。不是我推荐的东西。

WiX 是个不错的选择 - 看来您已经在使用它了。我会使用 heat.exe 来创建您的包。每个组件使用一个文件 - 我喜欢使用 - 会使安装速度变慢。如果您对主要升级进行标准化,则可以为每个目录使用一个组件,以避免减慢安装速度。

无论您做什么 MSI / Windows 安装程序都会比其他部署技术有更多的开销 - 因为它更先进。

最后一个问题:您是在那些旧机器上的旧文件之上安装吗? MSI 的回滚功能意味着磁盘上的任何现有文件都将在安装期间备份到回滚文件夹中。这可能会使安装非常缓慢。也许尝试安装到一个空白文件夹(您可能已经这样做了)。虽然不是很好,但如果您确实在现有文件之上安装,您可以尝试将 DISABLEROLLBACK 属性 设置为 1 以进行测试安装。