gpt4 book ai didi

c# - VS2008 安装项目 : Uninstalling the previous MSI

转载 作者:可可西里 更新时间:2023-11-01 08:03:39 27 4
gpt4 key购买 nike

我有一个 VS2008 安装项目,它创建了一个安装 WinForms 应用程序 (C#) 的 setup.msi。

每次我更新版本号,用户都必须先卸载旧版本,然后才能安装新版本。否则我们会收到可怕的“此产品的另一个版本已安装”消息。

这是我在构建新版本的安装程序时已经在做的事情:

  • 设置RemovePreviousVersions=true 和DetectNewerInstalledVersion=true
  • 增加 AssemblyVersion(正在部署的 exe)
  • 增加版本(安装项目的)
  • 生成新的ProductCode(根据VS提示,Version改变时)
  • 保持UpgradeCode不变

但它仍然拒绝卸载以前的版本。那么,我错过了什么?或者我做错了什么?

谢谢!

最佳答案

半回答我自己的问题,只是为了任何感兴趣的人的利益:

首先,我找到了一个 incredibly useful article关于 MSI 更新的工作原理。

其次,我找到了InstEd ,一个相当不错的免费软件 MSI 编辑器,它向我展示了我的 MSI 文件没有明显的错误。 (是的,如果我不介意下载整个 Windows SDK 来获取它,我可以改用 Orca。)

第三,令人恼火的是,原来的问题似乎已经自行解决,我无法再重现它。如果它回来了,如果我再次修复它,我会在这里添加评论!

无论如何,所有这一切带来了一个新的——可以说是更糟糕的——问题:MSI 现在声称更新应用程序但实际上并没有安装任何东西!解决方法如下:

  • AssemblyVersion 无关紧要,但是AssemblyFileVersion 绝对确实:如果您希望安装新文件,它必须递增。 (与 VS2005 相比,这是 VS2008 中的一个变化。例如,参见 Microsoft 上的 thisdiscussion组。)
  • 但是,AssemblyFileVersion 不能像 AssemblyVersion 那样自动递增能够。将其设置为 1.9.*(或随便)只会导致错误。解决方案,来自StackOverflow这次是设置AssemblyVersion 自动递增,和然后打开 AssemblyInfo.cs 并删除AssemblyFileVersion 属性共。这将强制文件版本等于程序集版本。

关于c# - VS2008 安装项目 : Uninstalling the previous MSI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2072856/

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