使用InstallShield LE时,msi包含一个程序集的过期版本,但包含其他程序集的当前版本

本文关键字:程序集 过期 当前版本 版本 其他 包含 LE InstallShield msi 包含一 使用 | 更新日期: 2023-09-27 18:27:28

我在一个总共有大约10个项目的解决方案上使用Visual Studio 2010 InstallShield LE。

我已经为"文件"部分选择了主GUI的主要项目输出,安装到Program files的子目录中,非常标准。

我几周前建立了安装程序,并将其安装在我的测试机上,一切都很好。从那以后,我对解决方案中的每个项目都进行了更改。今天,我增加了我的程序集版本,并重新构建了我的安装项目以继续测试。

安装后,在程序文件安装目录中,我注意到我的项目的一个程序集仍然列出了以前的版本1.0.0.0,文件日期已经超过一个月了。目录中的其他程序集显示当前版本和当前修改日期。

我已经尝试删除我的解决方案目录中的每个bin和obj文件夹,以及安装程序项目文件夹。我重新安装了,但问题仍然存在。

我搜索了谷歌,但由于问题很奇怪,一个好的搜索短语一直难以捉摸。

显然,我需要程序集的最新版本包含在安装程序msi中。

感谢您的帮助或建议!

使用InstallShield LE时,msi包含一个程序集的过期版本,但包含其他程序集的当前版本

您需要做两件事:提取MSI中的实际文件以了解MSI中是否存在更新的二进制文件,以及获取安装的详细日志,以查找Windows Installer对包含有问题程序集的组件的描述。顺便说一句,每个程序集文件都是它自己组件的关键文件,不是吗?Windows安装程序只检查其路径的版本更新。

您需要阅读:

默认文件版本

注意:请确保您正在比较AssemblyFileVersion。重要的不是AssemblyVersion属性,而是AssemblyFileVersion属性。前者由GAC和强名称合约使用,而后者映射到Windows Native FileVersion结构。

我以前在VS安装项目中遇到过同样的问题。我会仔细检查您的解决方案中引用旧DLL项目的程序集引用。您只需要查看Properties窗口,就可以看到它所引用的版本。在我的情况下,它会引用另一个项目的bin文件夹中的DLL,而不是项目本身。

我知道你删除了所有的bin和obj文件夹,但这可能值得一试。

如果你找到了问题参考,只需删除并重新添加它,你就应该很好了。

转储InstallShield并使用WiX。。你永远不会回头。

WiX有例如UpgradeCode,可以帮助您控制功能的版本检查。