强制 MSI 在安装时覆盖程序集
圣诞快乐,StackOverflowians!
我开始使用 Inno Setup 分发位于 .NET GAC 的程序,但由于其各种缺点,我想在下一个版本中切换到 MSI。不幸的是,这似乎对我现有的用户来说是一个主要麻烦......当然,我必须坚持要求我的用户在安装新版本之前手动卸载以前的版本。但好像即使把以前的版本完全卸载了,还是有问题。
我不知道是否是我配置错误,或者 Inno Setup 只是这样愚蠢,但看起来 Inno 并没有完全删除程序集。其结果是,当我尝试运行 MSI 安装程序时,即使在卸载之后,我也会在日志中看到以下内容: 由于程序集已存在,因此正在跳过程序集组件的安装:{guid}
那么我在这里该怎么办?有什么方法可以强制 MSI 覆盖程序集,即使它们已经存在?
Merry Christmas, StackOverflowians!
I started out distributing my .NET GAC-located program using Inno Setup, but due to its various shortcomings, I want to switch over to MSI for the next version. Unfortunately, it seems like this is going to be a major hassle for my existing users... Of course, I'm going to have to insist that my users manually uninstall the previous version before installing the new one. But it seems like even if the previous version is completely uninstalled, it's still problematic.
I don't know if it's something I misconfigured, or if Inno Setup is just stupid this way, but it seems like Inno does not fully remove the assemblies. The result of this is that when I try to run my MSI installer, I see the following in the log, even after uninstallation:skipping installation of assembly component: {guid} since the assembly already exists
So what do I do here? Is there any way I can force MSI to overwrite the assemblies even if they already exist?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用相同的强名称 (AssemblyVersion) 但使用更高的文件版本 (AssemblyFileVersion) 构建 DLL。请注意,您的类是 100% 向后兼容的,因为旧的 DLL 将被替换。
Build your DLL's with the same strong name ( AssemblyVersion ) but with a higher File Version ( AssemblyFileVersion ). Be careful that your classes are 100% backwards compatible as the old DLL will be replaced.