从 packages.config 迁移到 PackageReference 后 VS2019 MSI 安装程序错误 2727

VS2019 MSI Installer error 2727 after migration from packages.config to PackageReference

我在 Visual Studio 2019 的 .NET Framework 4.7.1 上有一个控制台应用程序 运行,带有 Microsoft Visual Studio 安装程序项目(MSI 安装程序)。

packages.config 迁移到 PackageReference 后,.msi 安装程序 returns 以下收集所有安装程序输入并开始安装后出错。

The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2727.

.msi 在迁移之前创建的安装程序工作正常。可执行文件和项目在迁移后工作正常。问题仅出在安装程序上。从 VS 2019 项目和生成的 .msi 文件安装时可以重现该问题。

Windows 事件查看器和安装程序日志中存在错误:

远程计算机上的事件查看器

Product: XXXXX -- The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2727. The arguments are: _0024F16DE39F4B7D9BF184AC802A7310, ,

- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
  <Provider Name="MsiInstaller" /> 
  <EventID Qualifiers="0">10005</EventID> 
  <Level>2</Level> 
  <Task>0</Task> 
  <Keywords>0x80000000000000</Keywords> 
  <TimeCreated SystemTime="2021-10-21T19:14:41.779642800Z" /> 
  <EventRecordID>18270804</EventRecordID> 
  <Channel>Application</Channel> 
  <Computer>XXXXXX.com</Computer> 
  <Security UserID="S-1-5-21-3296303954-3414968290-1573956784-1136" /> 
  </System>
- <EventData>
  <Data>Product: XXXXXX -- The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2727. The arguments are: _0024F16DE39F4B7D9BF184AC802A7310, ,</Data> 
  <Data>(NULL)</Data> 
  <Data>(NULL)</Data> 
  <Data>(NULL)</Data> 
  <Data>(NULL)</Data> 
  <Data>(NULL)</Data> 
  <Data /> 
  <Binary>7B41433031463831372D434435302D343530332D423239342D3844334438453538323844417D</Binary> 
  </EventData>
  </Event>

本地计算机上的 MSI 安装程序登录

MSI (c) (4C:5C) [16:58:07:070]: PROPERTY CHANGE: Adding INSTALLLEVEL property. Its value is '1'.
MSI (c) (4C:5C) [16:58:07:070]: Note: 1: 2727 2: _7F06229DCDB74690AC0D18DBD0357B3B 
DEBUG: Error 2727:  The directory entry '_7F06229DCDB74690AC0D18DBD0357B3B' does not exist in the Directory table
DEBUG: Error 2835:  The control ErrorIcon was not found on dialog ErrorDialog
The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2835. The arguments are: ErrorIcon, ErrorDialog, 
The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2727. The arguments are: _7F06229DCDB74690AC0D18DBD0357B3B, , 
MSI (c) (4C:5C) [16:58:08:457]: Product: XXXXX -- The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2727. The arguments are: _7F06229DCDB74690AC0D18DBD0357B3B, , 

日志中没有其他内容具有值 _7F06229DCDB74690AC0D18DBD0357B3B。此值在安装之间是相同的。这不是安装程序属性中的 ProductCodeUpgradeCode

设置

我尝试了什么:

所有代码都已备份,因此我可以返回 package.config,但我不希望这样做,除非找不到解决方案。

注:不知为何,迁移后的.msi几乎是迁移前.msi的两倍

更新

安装程序在 Select 安装文件夹 对话框之前失败(失败时不显示)。

这是安装程序失败之前的屏幕。

我还尝试将分支恢复到迁移之前的状态,但恢复不起作用,因为迁移更改仍然存在并阻止安装程序工作。我不得不删除所有文件并从 Git 恢复它们,以最终删除迁移的包并让安装程序正常工作。

解决方案最终是删除旧的安装程序项目,迁移到 PackageReference,然后创建一个新的安装程序项目。

基于 Git,唯一的区别是 .vdproj 文件中的引用。新安装程序比第一个大,但其他一切都一样。

问题

安装程序在从 packages.config 迁移到 PackageReference.

后停止工作

解决方案

  1. 删除安装程序项目(确保您有备份)。
  2. 进行迁移。
  3. 创建一个新的安装程序项目。

原因

自动迁移不会更新 Installer 项目中的 .dll 引用