最近玩ClickOnce的时候发现很多问题,在晚上暂时还没有找到解决方案,折腾了好久,现将发现的问题以及对应的解决方式记录一下方便以后查看。
使用ClickOnce发布安装包,在安装的时候安装路径是不可以选的,安装和升级都又ClickOnce控制,这对我们来说无疑是又方便,又麻烦,方便是因为不用自己去管理版本,麻烦是因为有些客制的调整没办法通过设置去完成。在此记录最近使用ClickOnce所遇到的问题,方便以后查看。
1、安装路径:
一般在C:\Users\Administrator\AppData\Local\Apps\2.0\下面,我的软件完整的安装路径是
C:\Users\Administrator\AppData\Local\Apps\2.0\GQQ062BH.LQV\OPAEOXDT.LM2\spee..tion_d5d2484ff1d604dc_0001.0000_058e94505641e003,后面的三个层级的文件夹可能会有不同,但是在2.0的文件夹下面应该都可以找到我们的程序。
2、当安装的时候提示“已经安装一个相同的应用程序,请先卸载其他版本才可以安装”:
这种可以先找到之前安装的路径下面有一个manifests文件夹有一些跟程序相关的文件,将他们删除即可。
3、安装和更新的窗口语言不是中文的
当计算机上面已经安装了.net Framework,但是没有安装.net Framework中文的语言包时会出现这种现象。解决方式下载安装对应版本的中文语言包,微软官方下载地址
4、设置程序的公司名、产品名、版权等
和其他WinForm程序一样, 在解决方案管理器中右键对应项目 -> 属性 -> 应用程序 ->程序集信息中设置
5、修改安装/更新的时候显示发布者和产品名称
在解决方案管理器中右键对应项目 -> 属性 -> 发布 -> 选项 -> 说明
6、创建各种快捷方式
因为ClickOnce的设置没办法设置创建各种快捷方式,所以只能通过代码创建,代码如下:
//获取程序开始菜单中的快捷方式路径
//Application.CompanyName 和 Application.ProductName 需要先在项目属性中设置
string menuShortcut = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Programs),string.Format(@"{0}\{1}.appref-ms",Application.CompanyName,Application.ProductName));
//获取要生成快捷方式的路径(例如:桌面快捷方式)
string desktopShortcut = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop),Path.GetFileName(menuShortcut));
//判断桌面快捷方式是否存在,不存在则创建
if(!File.Copy(desktopShortcut))
{
File.Copy(menuShortcut,startupShortcut);
}