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

时间:2014-07-08 14:56:03

标签: installer windows-installer installshield

我目前正在使用InstallShield来部署.NET Winforms应用。我是InstallShield的新手,并没有享受到学习曲线。 Winforms应用程序有三个相关的DLL,它们在次要升级期间没有得到更新。对于次要升级,我将版本从1.0.001更改为1.0.002。正在为每个构建自动更改包代码。

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

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

尝试从" omus"更改ReinstallMode到" vomus"。这根本没有效果。

尝试使用REINSTALL = ALL,REINSTALLMODE = vomus。这并未更新dll,并且还导致新安装失败,并显示应用程序"未标记为安装"。

尝试将版本从1.0.00x更改为1.1.00x。 dll还没有更新。

我注意到当我查看这些dll文件的属性时,它们具有File Version = 1.0.0.0和Product Version 1.0.0.0。我是否需要手动增加这些版本,以便InstallShield能够识别它们已被更新?

1 个答案:

答案 0 :(得分:1)

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

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