ClickOnce 错误:部署标识与订阅不匹配

Posted

技术标签:

【中文标题】ClickOnce 错误:部署标识与订阅不匹配【英文标题】:ClickOnce Error: The deployment identity does not match the subscription 【发布时间】:2011-03-07 05:11:03 【问题描述】:

我正在使用Visual Studio 2008 SP1。

我在本地网络的共享文件夹中使用 ClickOnce 在内部部署了一个 Windows 窗体应用程序。

测试证书 pfx 将于 2035 年到期。

我已多次将更新发布到内部共享文件夹。

请注意,该项目仅设置为“签署 ClickOnce 清单”,而不签署程序集。

现在,我再次发布我的应用程序的新版本。

当用户点击他们的图标来运行应用程序时,我们会得到这个 错误(它总是在使用测试证书部署之前更新)。

实施网址: file:///C:/Documents%20and%20Settings/Usuario.NOTARIAS3/Men%C3%BA%20Inicio/Programas/GrupoBackup/Expediente%20Electr%C3%B3nico.appref-ms%7C Dirección URL del Proveedor de la implementación : file://192.168.13.111/compartida/AdministradorWin.application La 激活 C:\Documents and Settings\Useuario.NOTARIAS3\Menú Inicio\Programas\GrupoBackup\Expediente Electrónico.appref-ms|迪奥 como resultado una excepción。 Se Detectaron los siguientes mensajes de 错误: + 部署标识与订阅不匹配 操作进度状态 * [2/20/2008 11:23:21 AM] : 的激活 C:\Documents and Settings\Usuario.NOTARIAS3\Menú Inicio\Programas\GrupoBackup\Expediente Electrónico.appref-ms|有 开始了。 * [2/20/2008 11:23:21 AM]:执行必要的更新 按照部署的规定进行检查。

错误详情

[21/06/2010 20:33:10] System.Deployment.Application.DeploymentException (SubscriptionState) La identidad de la implementación 与 suscripción 不谋而合。 来源:System.Deployment Seguimiento de la pila: en System.Deployment.Application.SubscriptionStore.CheckUpdateInManifest(SubscriptionState subState、Uri updateCodebaseUri、AssemblyManifest 部署、版本 currentVersion) zh System.Deployment.Application.ApplicationActivator.PerformDeploymentUpdate(SubscriptionState& subState, String& errorPageUrl) zh System.Deployment.Application.ApplicationActivator.ProcessOrFollowShortcut(字符串 shortcutFile, String& errorPageUrl, TempFile& deployFile) zh System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri,布尔 isShortcut,字符串 textualSubId,字符串 deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String&errorPageUrl) zh System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(对象 州)

我使用 regedit 来搜索这个键:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall\7e3a7433abfe6213

PC 未更新

AppId 文件://192.168.13.111/COMPARTIDA/AdministradorWin.application#AdministradorWin.app,文化=中性, PublicKeyToken=4b005ceeffd565b0,处理器架构=msil

版本 = 1.0.0.14

文件名 = Expediente Electrónico

发布者 = GrupoBackup

文件夹名称 = GrupoBackup

PC 已更新(卸载-重新安装,但我想避免它)

AppId 文件://192.168.13.111/compartida/AdministradorWin.application#AdministradorWin.application,文化=中性, PublicKeyToken=4b005ceeffd565b0,处理器架构=msil

版本 = 1.0.0.30

文件名 = Expediente Electrónico

发布者 = GrupoBackup

文件夹名称 = GrupoBackup

SuiteName=OGF 套件

PC 未更新 - PC 更新的变化是:

1.) 套件名称是新值(我在 Visual Studio 的属性“发布”选项卡中设置)

2.) 版本

和 3.)

AdministradorWin.app

来自文件://192.168.13.111/COMPARTIDA/AdministradorWin.application#AdministradorWin.app,

AdministradorWin.application,

来自 文件://192.168.13.111/compartida/AdministradorWin.application#AdministradorWin.application,

如果我卸载然后从头开始重新安装应用程序,一切正常。但是,我试图避免这样做。

我在尝试部署之前成功的项目时收到此错误。

我删除了所有清单后重新尝试了,但仍然没有任何乐趣。

有没有办法解决这个问题?

在发布选项中 -> 清单

使用应用程序清单获取信任信息未选中。

【问题讨论】:

【参考方案1】:

您是否将目标 CPU 从 Any CPU 更改为 x86

如果您更改了此设置,则必须重新安装应用程序。

【讨论】:

这发生在我身上。我把它改回 CPUAny 然后它又工作了。稍后我将其改回并让用户重新安装。 我今天就是这样做的。将其更改为 AnyCPU - 现在客户说,即使在卸载后,问题仍然存在。 #难倒【参考方案2】:

当您说以下内容时,您的意思是什么? “更改:我设置了套件名称值;版本和 #AdministradorWin.app,与 #AdministradorWin.application”。

这是我感兴趣的最后一点。您是否更改了程序集名称?

有一些设置构成了部署的标识。目标 CPU(如上面 zezespecial 所述)、安装 URL 和程序集名称是其中的三个。你改变了这些吗?您对部署还做了哪些其他更改?

【讨论】:

如果你改回来,它会解决问题吗?我无法想象这实际上会导致问题,但值得一试。 哪些设置构成了部署的标识?我也有类似的问题 部署提供者 URL(如果填写则使用 UpdateURL;如果没有,如果填写,则使用安装 URL;如果没有,则使用发布文件位置)。目标 CPU。名称(与程序集名称匹配)。您可以在部署清单 (.application) 中看到它们。他们不再使用证书(公钥令牌),这就是为什么您可以更改证书而无需卸载和重新安装。回复到底是什么问题? 啊哈,感谢您的洞察力。就我而言,“InstallFrom”和“InstallURL”设置被意外修改了。我把它改回来了(谢谢 SVN!)它现在可以工作了。【参考方案3】:

'检查发布 -> 安装文件夹 URL' 并确保它没有设置错误(有时它只在发布过程中显示)

“检查发布 -> 更新...”并确保更新位置没有设置错误。

绝对确保将这两个设置为与发布文件夹位置相同。您需要勾选“应用程序应检查更新 - 在应用程序启动之前”。

我必须这样做才能解决我的问题。

【讨论】:

我已将更新位置从 IP 地址(最初是什么)更改为 DNS 名称,当我将其更改回来时,此问题已解决...【参考方案4】:

在我的例子中,使用 Azure DevOps Pipelines,生成清单的项目设置以某种方式意外设置为 false。我在比较项目文件的源代码控制历史版本时注意到了这一点。我的解决方法是手动(重新)将此属性组插入到 csproj 项目文件中:

<PropertyGroup>
    <GenerateManifests>true</GenerateManifests>
</PropertyGroup>

【讨论】:

使用 Azure DevOps Pipelines 的示例? yml ?【参考方案5】:

发布 clickonce 更新后出现“部署标识与订阅不匹配”错误。

我通过以下方式解决了这个问题:

    删除 clickonce 部署文件夹内容(使用“setup.exe”)。

    删除本地(在用户 PC 上)clickonce 安装缓存。最简单的方法是删除文件夹的所有内容:“C:\Users\[username]\AppData\Local\Apps\2.0”,但这将删除所有 clickonce 应用安装。

    重新编译并重新发布 clickonce 部署。

    在客户端计算机上重新安装 clickonce 应用程序。

这为我解决了。

真正清除客户端 clickonce 安装缓存(上面的#2)已经多次为我解决了许多不同但类似的问题。

【讨论】:

如果您有更多 200 台 PC 客户端,如何使用 powershell 或 bat 单击安装缓存? 我不太熟悉通过 powershell 进行批量/远程管理...但我认为您可以将登录脚本推送到远程计算机上,该脚本会删除缓存文件夹的内容(#2更多)。我刚刚在本地对此进行了测试,只要您的 clickonce 应用程序配置为在下次用户运行该应用程序时自动更新,安装和开始菜单图标就会保留。

以上是关于ClickOnce 错误:部署标识与订阅不匹配的主要内容,如果未能解决你的问题,请参考以下文章

nib 中的单元重用标识符与标识符不匹配

尝试 PostgreSQL 主从 WAL 复制时出现“主 PostgreSQL 标识符与从属 PostgreSQL 标识符不匹配”错误

找不到匹配的配置文件... appID xxx.xxx 与标识符 xxx.xxxTests 不匹配

Ad Hoc 应用程序标识符权利不匹配?

代码符号错误:应用程序标识符“com.reapptive.Floors2Go”与当前设置“com.reapptive.Floors2Go”不匹配

Google 发布/订阅订阅数据与应用不匹配