VS2017 Installer项目输出不替换当前安装

VS2017 Installer project output does not replace the current installation

我有一个标准的 windows 表单应用程序,正在使用 VS2017 安装项目进行部署。使用 "File System" 打开安装项目时,我在应用程序文件夹中添加了以下内容:

  1. win 表单应用程序的主要输出。
  2. EPPlus 库的 dll。
  3. 一些 excel 个文件。

安装项目很好地提供了输出 .msi 包。问题是,当我 运行 在构建安装项目(当然是在构建源项目之后)和 运行 应用程序后输出 .msi 时,我看不到我的更新,甚至C:\Program Files .... 目录中的文件未被修改。我尝试更改产品代码并增加版本,但它不起作用。我的问题是:

  1. 除了重新删除和安装程序之外,有没有办法让安装程序包真正更新软件的安装?
  2. 无论我更新多少软件,如何避免#1 中的问题?
  3. 这是什么原因以及如何避免此错误"Another version of this product is already installed"?我不确定我做了什么让它弹出。
  4. 如果我希望源代码的某些部分位于单独的 dll 中,是不是就像添加一个 class 库项目并将其输出添加到安装项目一样简单?

非常感谢。

升级的方法是使用 RemovePreviousVersions 项目设置。步骤是:

  1. 增加安装项目的版本并接受更改,这将包括 ProductCode 的更改。
  2. 确保 RemovePreviousVersions 设置为 true。
  3. UpgradeCode(设置项目属性)需要相同,所以不要更改它。
  4. 增加需要更新的二进制文件的文件版本(这是更新版本化二进制文件的标准规则)。

生成的 MSI 将进行重大升级(在 Windows 安装程序术语中)并升级旧版本,将其替换为新产品 MSI。请注意,升级仅适用于相同的安装上下文。 Everyone 不会升级 Just me,因此这将导致 Programs 和 Features 中的两个条目。执行安装会创建一个详细的日志并搜索 FindRelatedProducts 条目会告诉您它是否找到了升级。 msiexec /I [msi 文件路径] /l*vx [文本日志文件路径]

这里有一个更长的解释: https://www.red-gate.com/simple-talk/dotnet/visual-studio/updates-to-setup-projects/?_ga=2.138201520.1662048302.1514485579-1682631157.1514485579

这是旧的但相关的。并且没有提到更新二进制文件版本的要求(早期的 VS 安装项目不需要)。