gpt4 book ai didi

installation - Installshield 在次要升级时不更新相关 DLL

转载 作者:行者123 更新时间:2023-12-02 22:38:05 28 4
gpt4 key购买 nike

我目前正在使用 InstallShield 部署 .NET Winforms 应用程序。我是 InstallShield 的新手,不太喜欢学习过程。 Winforms 应用程序具有三个相关的 DLL,这些 DLL 在次要升级期间不会更新。例如,对于较小的升级,我将版本从 1.0.001 更改为 1.0.002。每次构建都会自动更改包代码。

我尝试将 dll 添加到 [INSTALLDIR] 并将属性设置为“始终覆盖”。由于某种原因,这会导致升级也不会更新主 exe。

尝试更改产品代码以强制进行重大升级。这与旧版本一起安装了新版本,但新版本仍然具有旧的 dll。

尝试将 ReinstallMode 从“omus”更改为“vomus”。这根本没有任何影响。

尝试使用 REINSTALL=ALL、REINSTALLMODE=vomus。这不会更新 dll,并且还会导致新安装失败,并显示应用程序“未标记为安装”的消息。

尝试将版本从 1.0.00x 更改为 1.1.00x。 dll 仍未更新。

我注意到,当我查看这些 dll 文件的属性时,它们的文件版本 = 1.0.0.0 和产品版本 1.0.0.0。我是否需要手动增加这些版本才能让 InstallShield 识别出它们已更新?

最佳答案

  1. 每个文件使用一个组件,并将每个文件设置为其自己的组件中的 key 文件。这可以避免各种组件引用和文件替换问题。请注意,多文件程序集必须共享相同的组件,因为它们旨在作为一个“原子”文件系统单元。
  2. 此外,您还必须增加每个构建或集的版本号 REINSTALLMODEemus 而不是默认的 omus。切勿使用 amus。
  3. 我的建议:进行文件版本更新 - 它更可靠。就像您声明使用的文件版本一样,它必须递增。我喜欢自动递增构建版本号(最后一位数字)。已经有一段时间了,但我认为你只需用 * 替换数字,它就会自动递增。我认为您可以从 Visual Studio 项目属性 View 执行此操作。
  4. 也许可以阅读 file versioning rules以及。本质上,版本化文件会进行版本比较,对于未版本化文件,会比较创建和修改日期戳,如果磁盘上未更改,则文件将被替换。 More sample info .
  5. 删除您为所有启用该标志的文件启用的“始终覆盖”标志。如果您需要补丁以及其他功能,此标志可能无法与补丁配合使用。
  6. 当重大升级创建两个并行安装时,它不起作用。您剩下的就是同时安装两种不同的产品。关于如何设置主要升级,Installshield 本身有很好的内联帮助。您使用的是哪个版本的 Installshield?与 Visual Studio 捆绑的版本可能不包含此帮助 Material 。

关于major upgrades的注释和“恢复的文件”:

关于经典重大升级问题的警告:请注意,在原始安装中设置为永久的已更改、未版本控制的文件可能会在重大升级期间被卸载,然后重新安装,从而给人留下它们已被删除的印象。已被替换,但它们实际上被删除并重新创建。这些通常是重要的设置文件,例如 XML 文件或类似文件 - 人们经常为这个问题而烦恼。主要升级本质上是一个序列。卸载旧产品,然后安装新产品,反之亦然。在前一种情况下,可以先卸载文件,然后重新创建。如果组件引用正确,则在后一种情况下不会发生这种情况,因为产品之间匹配的文件不会被卸载,而是会保留,然后在需要时覆盖(根据 file replacement / versioning rules )。

关于installation - Installshield 在次要升级时不更新相关 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24635098/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com