关于ClickeOnce手动部署的问题

chanQ 2008-09-04 10:34:54
ClickOnce手动部署发布出错:

在利用.net自带的清单生成工具mageUI.exe来手动生成应用程序清单和部署清单,2个清单均用.pfx签名过。
在客户端运行程序时,报了如下错误:

System.Deployment.Application.DeploymentException (SubscriptionState)
- 部署标识与预订不匹配。
- 源: System.Deployment
- 堆栈跟踪:
在 System.Deployment.Application.SubscriptionStore.CheckUpdateInManifest(SubscriptionState subState, AssemblyManifest deployment, Version currentVersion)
在 System.Deployment.Application.ApplicationActivator.PerformDeploymentUpdate(SubscriptionState subState)
在 System.Deployment.Application.ApplicationActivator.ProcessOrFollowShortcut(String shortcutFile, TempFile& deployFile)
在 System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut)
在 System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)

组件存储事务详细信息
没有可用的事务信息。

...全文
242 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuizhui 2010-04-12
  • 打赏
  • 举报
回复
将以前安装的程序 全部删除,然后在下载安装试试看行不?
chanQ 2008-09-07
  • 打赏
  • 举报
回复
没有更换过pfx证书
royal1 2008-09-06
  • 打赏
  • 举报
回复
使用 MageUI.exe 部署ClickOnce 应用程序

打开一个VS命令提示或Windows SDK命令提示,并定位到将要在其中存储ClickOnce文件的目录。

创建一个名为“bin”的子目录,将所有应用程序文件(包括可执行文件、程序集、资源和数据文件)全部复制到该目录中。

创建一个子目录,该子目录以部署的当前版本命名。如果是首次部署应用程序,则可以选择“1.0.0.0”。

将 \“bin”目录移到步骤 2 中创建的目录下。

启动图形工具 MageUI.exe。

从菜单中依次选择“文件”、“新建”和“应用程序清单”,创建一个新的应用程序清单。

在默认的“名称”选项卡中,输入此部署的名称和版本号。并为“发行者”提供一个值,在部署应用程序时该值将作为“开始”菜单中该应用程序的快捷方式链接的文件夹名。

选择“应用程序选项”选项卡并单击“将应用程序清单用于信任信息”。这将为此 ClickOnce 应用程序启用第三方署名。

选择“文件”选项卡,然后单击“应用程序目录”文本框旁边的“浏览”按钮。

选择在步骤 2 中创建的包含应用程序文件的目录,然后在文件夹选择对话框中单击“确定”。

单击“填充”按钮,向文件列表中添加所有应用程序文件。如果应用程序包含多个可执行文件,可以从“文件类型”下拉列表中选择“入口点”,将此部署的主可执行文件标记为启动应用程序。(如果应用程序只包含一个可执行文件,MageUI.exe 将为您标记该文件)。

选择“所需的权限”选项卡,然后选择需要应用程序断言的信任级别。默认级别为“完全信任”,此级别将适用于大多数应用程序。

从菜单中依次选择“文件”、“保存”,保存应用程序清单。保存时,系统会提示您对应用程序清单进行签名。

如果已将证书作为文件存储在文件系统上,请使用“作为证书文件签名”选项,然后使用省略号(“...”)按钮从文件系统中选择证书。如果证书保存在可通过您的计算机访问的证书存储区中,请选择“使用存储的证书签名”选项,再从提供的列表中选择证书。

从菜单中依次选择“文件”、“新建”和“部署清单”以创建部署清单,然后在“名称”选项卡中,提供名称和版本号(在此示例中为 1.0.0.0)。

切换到“更新”选项卡,指定此应用程序的更新频率。如果应用程序使用 ClickOnce 部署 API 自己检查更新,请清除标记为“此应用程序应检查更新”的复选框。

切换到“应用程序引用”选项卡。通过单击“选择清单”按钮,然后选择在前面的步骤中创建的应用程序清单,可以预填充此选项卡中的所有值。

选择“保存”,将部署清单保存到磁盘。保存时,系统会提示您对应用程序清单进行签名。单击“取消”保存清单但不对它进行签名。

向客户提供所有应用程序文件。

此时,客户必须使用他自己的自行生成的证书对部署清单签名。例如,如果客户为 Adventure Works 公司工作,他可以使用 MakeCert.exe 工具生成一个自签名证书。接着,使用 Pvk2pfx.exe 工具将 MakeCert.exe 生成的文件合并到可以传递给 MageUI.exe 的 PFX 文件。

makecert -r -pe -n "CN=Adventure Works" -sv MyCert.pvk MyCert.cer
pvk2pfx.exe -pvk MyCert.pvk -spc MyCert.cer -pfx MyCert.pfx

生成证书后,客户此时可以通过在 MageUI.exe 中打开部署清单并保存它来对部署清单签名。出现签名对话框后,客户选择“作为证书文件签名”选项,然后选择已经保存在磁盘上的 PFX 文件。

客户为其用户部署该应用程序。

royal1 2008-09-06
  • 打赏
  • 举报
回复
你是不是更换过.pfx数字证书

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧