我安装了 clickonce 应用程序。
它使用的是sha1签名算法。证书过期了,我决定将其更改为 EV Sha384 证书。
我使用 Sha256 签名算法重新签名了我的库和清单。
我的应用程序不使用 clickonce 自动更新。当用户单击桌面上的 appref-ms 文件时,我以编程方式执行此操作。
更新成功,我可以看到 appref-ms 文件中的 publickey 指向新的 sha256 密钥。
但是当我更新后第一次单击 appref-ms 或部署清单文件时,它显示我单击一次安装弹出窗口。单击“安装”按钮,不安装任何内容,只需打开我已经更新的应用程序即可。
我想知道为什么要这样做?如何单击 appref-ms 或部署清单文件检查以显示安装弹出窗口?它检查注册表中有什么东西吗?
Clickonce 使用注册表来存储并检查它是全新安装还是更新。
更改证书时单击一次将其视为全新安装。根据微软的说法,它应该在较新的 .NET 版本中修复,但似乎围绕 clickonce 的整个基础设施并没有真正集中。
有一些方法可以缓解它,但它们不是很干净。因此建议拥有一个可以扩展的签名证书。