c# - 使用新证书更新 ClickOnce 应用程序使 Windows 认为这是一个不同的应用程序
问题描述
我已经看过但并没有真正解决我的问题的类似帖子:
- ClickOnce 证书更新部署- 用户收到我没有收到的错误。
- 如何续订过期的 ClickOnce 证书?- 我不能更新我的证书,因为它不是测试证书。
- Clickonce publish with expired certificate - 这个非常接近,但答案并没有解决我的问题,可能是因为提到的文章已有 9 年历史,并且针对不同版本的 .NET。
我试图在Microsoft上问这个问题,但只得到了似乎是自动回复的信息,所以我会在这里试试运气。
大约一年前,我购买了一个证书,我一直用它来签署我的 ClickOnce 部署的 WinForms 应用程序。由于它即将到期,我使用与以前相同的数据购买了一个新的(尽管我不小心使用了不同的邮政编码;我将在下面再次提到这一点)。我正在使用测试 Web 位置来测试使用旧证书的发布,然后使用新证书发布更新以查看用户体验。根据这篇文章,如果我使用的是 VS 2010 和 .NET 4.0,用户应该可以正常获取更新。我使用 VS 2017 和 .NET 4.6.2,所以我想这也应该适用于我的情况。
除了当我发布更新时,我收到以下警告:
该应用程序使用与服务器上现有应用程序不同的密钥进行签名。你想覆盖它吗?
如果我仍然发布它,我在安装产品的机器上看不到任何更新提示,如果我手动下载并安装新版本,它会与旧版本并排安装,并带有“- 1" 附加到产品名称后。我认为当您安装两个具有相同名称的独立 ClickOnce 应用程序时会发生这种情况。所以 Windows 认为这是一个不同的应用程序,而不是对现有应用程序的更新。
我打开了新旧生成的清单文件 ( MyApplication.exe.manifest
) 并注意到元素的publicKeyToken
不同之处:assemblyIdentity
<asmv1:assemblyIdentity name="MyApplication.exe" version="1.2.3.4" publicKeyToken="44de2eab9d920cfd" language="neutral" processorArchitecture="amd64" type="win32" />
对比
<asmv1:assemblyIdentity name="MyApplication.exe" version="1.2.3.4" publicKeyToken="6fec920a5f1bbb2b" language="neutral" processorArchitecture="amd64" type="win32" />
此外,该publisherIdentity
元素包含不同的邮政编码,因为我错误地在旧证书和新证书上使用了不同的邮政编码(尽管我确实要求支持人员在任何地方使用相同的数据,无论我输入什么,因为我都是从同一个供应商处购买的)。当我比较使用相同证书的两个版本时,这两个差异不存在。
所以我的问题可以简化为两个问题:
- 是否
publicKeyToken
确定应用程序的身份,如果它们不同,那么 Windows 会将它们视为单独的应用程序(这将解释这里发生的事情)? - 是用于生成的
PostalCode
属性(这可以解释为什么我的 publicKeyTokens 不同)?publisherIdentity
publicKeyToken
如果两者都是肯定的,那么至少我会知道我到底为什么会遇到这个问题,我猜希望购买具有正确邮政编码的新证书可以解决它。但是我不想购买另一个证书只是为了看看是否可以修复它,所以我想知道是否有人对此有一些经验或对 ClickOnce 这方面的工作原理有所了解。
解决方案
推荐阅读
- scala - 如何为每个对应的唯一列值分配唯一 ID?
- java - 405 Method Not Allowed with first rest API in legacy application
- python - 将熊猫图中的 xtick 标签更改为不同的日期格式
- r - 如何在R中溶解折线
- docker - /usr/bin/env: 'node\r': 没有这样的文件或目录
- angular - Angular 5 中的 sass-loader 和 bootstrap 问题
- php - Eloquent 模型作为建造者回归
- r - R Highcharter hcaes- 仅按 1 个因素放样的面积图...具有 2 个分组因素
- javascript - Electron - 我如何理解应用程序何时在 Mac OS 上运行,它是否与文件类型有关?
- amazon-web-services - AWS Managed elastic Search restore - 节点与索引设置不匹配