68

我应该将要安装的所有文件包装在单个组件中吗?将多个文件放在一个组件中有什么好处?

4

2 回答 2

88

“每个组件一个文件”的一个原因是弹性。启动应用程序时,Windows Installer 可以检查是否缺少任何组件的密钥路径。如果缺少密钥路径,则重新安装/修复组件。

如果一个组件有多个文件,那么只有一个文件可以是 keypath。在 wix 中,您通过KeyPath=yesFile元素上进行设置来表明这一点。然后,其他文件将不会受到 Windows Installer 弹性的完全保护。只有在 keypath 文件丢失时才会重新安装它们。

“每个组件一个文件”的另一个原因是在将文件安装到它们可能已经存在的位置时(例如,应用程序升级,或安装到时c:\windows\system32)。Windows 安装程序通过检查密钥路径来确定是否需要安装组件。如果 keypath 是一个文件并且该文件已经存在(具有相同的版本或更高版本),则不会安装该组件。如果组件中的其他文件确实需要安装/升级,那将是一个问题。

于 2009-10-22T00:11:12.557 回答
9

我遵循 InstallShield 也使用的 Microsoft 方法:http: //msdn.microsoft.com/en-us/library/aa368269 (VS.85).aspx

上面的链接给出了这种方法的优点。

相关部分是:

  1. 为每个 .exe、.dll 和 .ocx 文件定义一个新组件。将这些文件指定为其组件的关键路径文件。
于 2011-08-08T18:08:02.997 回答