Installation Installshield未在小升级时更新相关DLL

Installation Installshield未在小升级时更新相关DLL,installation,windows-installer,installshield,Installation,Windows Installer,Installshield,我目前正在使用InstallShield部署.NET Winforms应用程序。我是InstallShield的新手,不喜欢学习曲线。Winforms应用程序有三个相关的DLL,它们在小升级期间不会得到更新。例如,对于小升级,我将版本从1.0.001更改为1.0.002。每个生成的包代码都会自动更改 我已尝试将dll添加到[INSTALLDIR],并将属性设置为“始终覆盖”。由于某些原因,这会导致升级也不会更新主exe 尝试更改产品代码以强制进行重大升级。它在旧版本的旁边安装了一个新版本,但新版

我目前正在使用InstallShield部署.NET Winforms应用程序。我是InstallShield的新手,不喜欢学习曲线。Winforms应用程序有三个相关的DLL,它们在小升级期间不会得到更新。例如,对于小升级,我将版本从1.0.001更改为1.0.002。每个生成的包代码都会自动更改

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

尝试更改产品代码以强制进行重大升级。它在旧版本的旁边安装了一个新版本,但新版本仍然有旧的dll

尝试将模式从“omus”更改为“vomus”。这根本没有效果

尝试使用重新安装=全部,重新安装模式=vomus。这并没有更新dll,还导致新安装失败,并显示消息“应用程序未标记为安装”

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

我注意到,当我查看这些dll文件的属性时,它们的文件版本为1.0.0.0,产品版本为1.0.0.0。我是否需要手动增加这些版本,以便InstallShield识别它们已更新

  • 每个文件使用一个组件,并将每个文件设置为其自己组件中的keyfile。这样可以避免各种组件引用和文件替换问题。请注意,多文件程序集必须共享作为一个“原子”文件系统单元的相同组件
  • 此外,还必须增加每个版本的版本号,或将其设置为emus,而不是默认的omus。永远不要使用amus
  • 我的建议是:使用文件版本更新-它更可靠。就像您声明使用的文件版本一样,它必须递增。我喜欢自动增加构建版本号(最后一位数字)。已经有一段时间了,但我想你只是用*替换这个数字,它会自动递增。我认为您可以从Visual Studio项目属性视图中执行此操作
  • 也许你也可以读一下这本书。基本上,版本化文件是比较版本的,对于未版本化文件,比较创建和修改日期戳,如果文件在磁盘上没有更改,则替换文件
  • 删除为所有文件启用的“始终覆盖”标志。如果您需要修补程序以及其他功能,此标志可能无法与修补程序配合使用
  • 当一个主要升级创建了两个并行安装时,它就不起作用了。剩下的是两种不同的产品同时安装。Installshield本身就如何设置主要升级提供了很好的内联帮助。您正在使用哪个版本的Installshield?与Visual Studio捆绑的版本可能不包含此帮助材料
  • 关于和“恢复的文件”的说明


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

    最后一个问题的答案是“是”,版本号必须增加。除非将REINSTALLMODE设置为等于emus(不建议作为真正的修复程序-只是一种解决方法)。是否更新AssemblyVersion和/或AssemblyFileVersion属性?我发现在visual studio中手动更新DLL的文件版本会导致获取DLL的更新副本。对程序集版本的更改似乎没有什么不同。Jeff,正如Chris提到的,请检查AssemblyFileVersion属性:@Glytzhkof谢谢。为自动更新每个DLL AssemblyFileVersion找到了一个很好的解决方案谢谢您的全面回答。这里有很多东西需要消化和尝试。我一步一步地手动将其中一个DLL的文件版本更改为1.0.0.1,而不更改IS中的任何内容。成功了;DLL已在下次升级时更新。相反,在[INSTALLDIR]中添加一个其他DLL会自动添加一个组件并使其成为密钥文件。但正如我上面提到的,升级之后无法更新DLL,也无法更新主exe。所以现在我将在visual studio中手动更新DLL文件版本。。。