VS2015 Extension Manager 不报告 MSI 安装扩展的更新

VS2015 Extension Manager not reporting update for MSI-intalled extension

我写了 a Visual Studio extension,它使用 MSI 安装。安装将 extension.vsixmanifest 文件放在正确的位置,并且扩展按预期出现在扩展管理器中:

问题是,当我在 Visual Studio 图库上发布新版本时,扩展管理器没有报告。我通过创建新安装程序并编辑现有页面来添加新版本。每个新的安装程序都有一个新的 ProductCode、PackageCode 和 ProductVersion(我更新了 MSI 安装项目和包含的版本号 extension.vsixmanifest),但是相同的 UpgradeCode; 'upgrade' 提交示例可以在 GitHub here.

上找到

问题似乎是,当 Visual Studio Extension Manager 查询 the extensions service 我的扩展的最新版本时,它 returns 一个空字符串 - 与您查询的结果相同带有无效的扩展标识符:

示例中查询成功的两个分机是NuGet client tools for VS2015 and the SQL Server Compact/SQLite Toolbox.

我错过了什么?

可能您可能还需要提高 ProductVersion 并注意安装程序项目中升级 Table 中正确的版本条件。如果这无助于尝试使用完整详细日志 (msiexec /i installer.msi /l*v logfile.log) 调查此安装问题,这可能会提供一些线索。在最坏的情况下,您可能想在 RemoveFiles table 中添加一个条目以删除此文件(在部署文件之前的安装过程中),但这听起来很讨厌,我宁愿避免它。

我认为这不是您的安装程序配置的问题,假设您的安装程序实际上升级了您的产品。如果我对你的问题理解正确,那么这是 Extension Manager 的问题。

您是否尝试过从新版本字符串中删除结尾的 .0? 3 点版本与 4 点版本比较时可能会有 poor/unexpected 比较结果。

您也可以尝试进行更极端的版本号更改(升级主要版本)以查看 Extension Manager 是否能够识别它。

哦哦哦哦KAY。我已经解决了这个问题,结果证明这是 Visual Studio 图库页面编辑器的问题。

添加扩展程序时,会显示一个 VSIX ID 框:

当你编辑一个扩展时(我正在使用Chrome),那个方框消失了!

它仍在 DOM 中,但已隐藏,无法查看。因此,我从未在表单中输入我的扩展的 VSIX ID,它没有关联的值,因此扩展服务没有 return 该 ID 的版本号。 Extension Manager 使用扩展服务查找已安装扩展的最新版本,因此它没有报告我的新版本。

如果您取消选择然后重新选择扩展支持的 Visual Studio 版本之一,VSIX ID 框会重新出现,所以我已经能够以这种方式分配 ID。该服务现在 return 是一个版本号,因此扩展管理器显示可用更新: