【问题标题】:How do I ensure my winform application deployment overwrites old versions如何确保我的 winform 应用程序部署覆盖旧版本
【发布时间】:2010-02-08 13:12:31
【问题描述】:

我从 VS2008 部署项目中为我的项目创建了一个 msi 安装包。但是在升级安装时我遇到了问题,以前安装的版本不会被覆盖。如何确保覆盖以前安装的版本?

【问题讨论】:

    标签: c# winforms deployment


    【解决方案1】:
    1. 在 Visual Studio 的解决方案资源管理器中选择您的安装项目
    2. 打开属性窗口
      • 不要右键单击并选择属性。
      • 选择视图 - 属性窗口
    3. 将 RemovePreviousVersions 设置为 true
    4. 将版本增加到更高的数字
    5. 在即将出现的消息框中选择是

    如果您构建并部署了此新设置,则会删除版本号较旧的设置。

    重要提示:设置版本号完全独立于您的应用程序或程序集版本号!

    【讨论】:

    • 如果这对我有用! “安装版本号完全独立”是什么意思?
    • @JohnB:也许您忽略了第一个要点中的选择您的安装项目。如果您选择了安装项目并查看属性窗口,您会在底部找到一个版本号。对于将要发布的每个构建,这必须递增,并且此数字与您的应用程序和/或程序集的版本号无关。
    【解决方案2】:

    (奥利弗的回答是正确的,但我想添加图片和更多细节)

    在您的解决方案中选择设置项目,然后打开属性窗格(工具箱旁边的选项卡):

    • 确保DetectNewerInstalledVersion 为真(默认设置)
    • InstallAllUsers 设置为true
    • RemovePreviousVersions 设置为true
    • 更新 Version 号码并按 Enter 键
    • 回车后,Visual Studio 会询问您是否要为ProductCode 生成新的 GUID,点击是

    此外,您需要更新解决方案中每个项目的版本号,因为安装程序只会替换DLL的版本数字已增加:

    • 打开每个项目的 AssemblyInfo.cs 并更新 AssemblyVersionAssemblyFileVersion 编号

    或者更好的方法:

    • 从每个项目的 AssemblyInfo.cs中删除AssemblyVersionAssemblyFileVersion
    • 用这两行链接到解决方案中的VersionInfo.cs文件
    • 以上步骤:The Right Way To Version Your Assemblies

    右键单击设置项目并选择Properties(一个不同的Properties对话框):

    • Windows Installer 4.5 设置为 先决条件,而不是 Visual Studio 默认的 Windows Installer 3.1

    我不确定是否所有这些步骤都是必要的,可能还有其他设置方法,但上述步骤对我有用。

    【讨论】:

      【解决方案3】:

      Windows Installer 已对您的文件进行内置检查,以确保版本高于该文件的先前版本。如果不是,Windows Installer 不会覆盖它。有关 Windows Installer 如何处理版本控制的更多详细信息,请查看此 MSDN 文章:

      http://msdn.microsoft.com/en-us/library/aa368599%28VS.85%29.aspx

      【讨论】:

        【解决方案4】:

        我们需要将我们的 msi 文件的 REINSTALLMODE 属性设置为 amus。

        以下是了解更多“amus”含义的链接 http://msdn.microsoft.com/en-us/library/aa371182%28VS.85%29.aspx

        有两种方法可以做到这一点。

        1. 使用 .NET SDK 自带的 msiexec.exe(如果你有 VS 2005 或 VS 2008 自带的,只要浏览到 Visual Studio 的命令提示符就可以找到它)

        找到 msiexec.exe 后,只需键入以下命令即可将安装程序的 REINSTALLMODE 属性设置为 amus。

        msiexec.exe /i foo.msi REINSTALLMODE=amus

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-01-17
          • 1970-01-01
          • 1970-01-01
          • 2013-10-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多