MSI升级仅复制安装文件夹中的DLL,并在第一次启动时复制其余DLL

时间:2011-07-05 09:05:49

标签: installer windows-installer setup-deployment

我有一个使用msi安装程序部署的应用程序。它是版本2.安装此安装的最新版本时,安装程​​序会将所有内容复制到程序文件夹(dlls,exe,resourcefiles)中。

但是当将此应用程序从版本1升级到2时,会发生一些奇怪的事情。升级很好,它会删除以前的文件并将DLL复制到文件夹中并完成安装向导。

当我现在查看安装文件夹时,只有DLL存在。 当我第一次从开始菜单运行应用程序时,它会触发MSI快捷方式,安装程序会再次显示以进行一些配置。现在它复制可执行文件和资源文件并启动应用程序。

为什么安装程序不会复制升级中的所有内容?我希望这是行为,因为第一次启动此应用程序的用户可能没有足够的访问权限进行此类操作

1 个答案:

答案 0 :(得分:0)

在升级过程中,Windows Installer使用file versioning rules来确定是否安装了文件。要在升级期间安装所有文件,您可以确保:

  • 所有文件都放在components中,其中有一个版本化文件作为关键成员
  • 与旧安装相比,所有关键成员文件的文件版本都更高

Windows Installer根据其关键成员评估是否安装组件。因此,如果密钥成员文件的版本高于计算机上的版本,则安装该组件。

另一种解决方案是将File表中的Version列设置为较高的值,例如65535.65535.65535.65535。这样,Windows Installer将始终认为MSI中的文件比目标计算机上安装的文件更新。