【问题标题】:Deployment project not updating .exe部署项目未更新 .exe
【发布时间】:2009-04-30 11:40:51
【问题描述】:

我有一个带有单个 .exe 文件作为主要输出的 Winforms 项目。我正在使用部署项目来分发它,但是安装新版本时.exe文件没有更新,这意味着我必须要求用户手动卸载然后安装新版本。

这就是我正在做的事情:

  • 我在输出项目(这是部署项目的主要输出)上增加程序集版本
  • 我增加了部署项目版本(并在出现提示时更新产品代码)
  • 部署项目设置为删除以前的版本
  • .exe 上的“永久”属性设置为 False

我确定我以前成功地做到了这一点,但我现在似乎无法做到。我究竟做错了什么?

编辑:我通过更改项目属性中的 file 版本使其工作,如this answer

【问题讨论】:

  • +1 以获得良好且有效的解决方案。很有帮助。
  • 9 年后我很高兴我问了这个问题,因为我完全忘记了如何做这些事情!

标签: c# winforms deployment


【解决方案1】:

很难说是什么原因造成的。您如何安装不删除以前版本的 MSI?我建议运行不使用详细日志记录的安装。我会像这样从命令行运行它:

msiexec /i "project.msi" /l*v "c:\install.log"

/l 告诉 msiexec(它是安装程序服务)创建一个日志,* 告诉它记录所有内容,v 告诉它使用详细模式。

运行它,并查看日志文件,它应该会告诉您失败的原因和原因。您也可以在此处发布该日志文件,我敢打赌我们可以一起找到一些东西。

其他问题: 日志文件使安装程序看起来像是认为无事可做。当您声明更新文件版本时,您在更新什么?您如何部署要包含的文件?您是否将它们作为“主要输出”包含在安装项目中,还是直接包含程序集?你是让它确定依赖关系并自动包含它们,还是包含一个项目输出?

更新请参阅这篇文章,了解自动升级 MSI 需要更改的内容。 Question 511789

【讨论】:

  • 我在日志中发现了这个:文件:C:\Program Files (x86)\Company\Project\Project.exe;不会覆盖;不会打补丁;现有文件的版本相同 我必须做什么才能看到文件已更改??
  • 现在查看文件。编辑原始问题并将日志链接放在那里,以便其他人更容易找到它。
  • 感谢您的帮助,我想我现在可以正常工作了。我确实注意到你提到的问题是:“升级代码永远不应该改变”
【解决方案2】:

在把我的头撞在墙上几个小时后,终于弄明白了。

我的问题与这个问题相同,最终解决起来非常简单。上面的两个答案使我朝着正确的方向前进,并帮助我找出了问题,但简而言之。

如果您将 RemovePreviousVersion 设置为 true,则问题很可能出在程序集信息按钮下的应用程序设置中。

我按照上述答案中显示的 mohlsen 运行日志,msiexec /i "project.msi" /l*v "c:\install.日志” 并以相同的响应结束,不会覆盖;不会打补丁;现有文件的版本相同

Inverse 为我指明了正确的方向,但也让我对 MFC 参考感到有点失望。我正在编写一个 Windows 应用程序,最后将两个和两个放在一起,然后转到应用程序选项卡下我正在编写的应用程序的属性。有一个名为“程序集信息”的按钮,可以指向程序集版本和文件版本。我增加了这些,现在我的 .exe 文件更新了。

所以你必须做两件事,增加你正在编写的应用程序中的实际程序集版本以及安装包的版本。

【讨论】:

  • 增加程序集版本有帮助。
【解决方案3】:

您的应用程序的可执行文件可能没有更新,因为您没有增加 MFC 项目中的 VERSION 信息资源。

仅仅增加安装项目版本是不够的。见下文:

http://msdn.microsoft.com/en-us/library/6fkzft86.aspx

“设置 API 也使用版本信息。”

【讨论】:

  • 我有一个 MFC 项目?这是 C#
【解决方案4】:

另一个提示:如果您打开项目的 AssemblyInfo.cs 文件,并将 AssemblyVersion 更改为

[程序集:AssemblyVersion("1.0.*")]

然后每次构建项目时都会自动更新程序集版本信息。然后从同一文件中注释掉或删除 AssemblyFileVersion 条目,因此文件版本默认与程序集版本相同。这意味着文件版本会在您每次构建时自动更新,因此您只需更新安装程序版本即可按预期覆盖文件。

【讨论】:

    【解决方案5】:

    您是否在应用程序运行时尝试更新?如果是这样,那将是不可能的。你需要想一个更好的方法,比如使用一个小的外部应用程序来杀死当前正在运行的进程,然后安装更新,然后重新启动新版本。

    【讨论】:

      【解决方案6】:

      您可以尝试对解决方案进行重建。您也可以在使用时清洁它。如果您更改的只是内容文件,我可以看到会发生这种情况。如果没有,则无视。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-30
        • 2023-03-12
        • 2020-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多