这里写自定义目录标题
ClickOnce踩坑记录
开发环境:
win10+vs2019+.net 4.5.2
发布时异常:
ERROR: 要在“系统必备”对话框中启用“从与我的应用程序相同的位置下载系统必备组件”,必须将“Microsoft .NET Framework 4.7.2 (x86 和 x64)”项的文件“Dot…
解决办法:
下载以下两个framework安装包:
-
NDP452-KB2901907-x86-x64-AllOS-ENU.exe
此包放到路径:C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\DotNetFX452 -
NDP452-KB2901907-x86-x64-AllOS-CHS
此包放到路径:C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\DotNetFX452\zh-Hans -
注意放到相应版本对应的文件夹中即可
安装时异常
-
大部分安装时报错都可以通过新建一个项目调用原项目执行文件,将原项目所有文件当做新项目内容(.csproj文件支持通配符"<Content Include"OldDir**.")添加然后发布新项目来解决.
-
如果在项目发布后变更了项目生成时的.net版本旧程序更新会报错,解决办法是让客户卸载后重装应用.
-
为文件 xxx.dll 计算出的哈希值与清单中的指定值不同。
原因:文件在上传过程中被串改,使得服务器上的文件MD5值与本地发布的不同.
解决办法:重新上传报错文件. -
连到系统上的设备没有发挥作用。 (异常来自 HRESULT:0x8007001F)
排查办法:重新发布一版然后直接在开发机器上运行.application 一般会直接报出问题所在.(比如文件名过长等) -
事务未完成。文件名可能太长。请缩短文件名,然后重试。 + 系统找不到指定的路径。 (异常来自 HRESULT:0x80070003);
解决办法:用ClickOnce发布的应用程序注意目录不能太深,因为ClickOnce默认安装路径就已经很深了. -
双击setup.exe后没反应:可能是网络太差 待超时时间达到后会报安装错误.
-
现象:程序安装后出现找不到一个xml文件(ClickOnce打包时都是包含了的);查看安装后的目录发现会部署成两个目录(epc…tion。。。和 epc.exe。。。)看上去主要文件是相同的;
疑惑:为什么安装后会把程序多拷贝一份,而且一份存在该xml文件但实际执行的exe是另一目录下的
解惑:因为ClickOnce安装时会把数据文件和其它程序文件的文件夹分开;在打包时ClickOnce会将数据库文件和xml文件自动识别为数据文件(可在发布选项卡中的应用程序文件里修改成“包括”即可) -
安装时报错:不允许对应用程序文件和程序集进行 HTTP 重定向。无法下载 xxx.exe
分析:可能是因为发布时直接发布的exe和dll原文件,有些系统的安全设置导致的无法直接下载.exe和.dll文件
解决办法:重新发布成.deploy后缀