最近做的一个辅助工具,采用了ClickOnce方式进行了发布!之前也看了网上很多说法,有的说这种新的技术不是很稳定等等!我也研究了一下,觉得满足我现在的要求,就采用了这种方式。
使用vs2005自动发布,但是发现客户端这边下载软件了后,怎么也用不起来,后来查了MSDN后,发现其中数据导入导出的Excel文件没有被发布进去。由于对.net平台掌握的技术不是很熟,对这种发布方式也比较陌生!根据MSDN上的做法,居然去想去下载MageUI.exe这个工具,却怎么也找不到!仔细研究了很长时间才发现,原来MageUI.exe已经包含在.net2.0中了,实在是汗!!!
OK, 知道了这层关系后,就开始着手动重新编辑程序清单!
1. 首先使用VS2005自动发布的功能,发布一个版本!
2. 找到发布的虚拟目录,把缺少的文件放进发布版本的目录下
3. 进入.net 2.0的命令行,输入mageui.exe 打开UI界面后编辑清单。
4. 首先编辑应用程序的清单,打开后选择Files,勾上When populating add the .deploy extension to any file that does not have it。然后Populate一下,完了后保存一下,生成一个key。
5. 然后编辑发布清单,选择Application Reference中的Select Manifest,选择刚才生成的程序清单,保存后会提示你选择key,选择刚才生成的key就OK了!
这样就能解决丢失缺少的文件了!
@ 由于ClickOnce的发布选项中没有在桌面创建快捷方式的选项,而许多客户习惯于使用桌面快捷方式。下面是我在网上找到的一种解决方式,试了后还是可行的,所以把我试了结果拿来和大家一起分享!
ClickOnce程序的实际路径是不固定的,每当程序更新到新版本的时候,启动位置都会改变,这样传统的快捷方式创建方式就不好用了。
通过研究那个开始菜单中的快捷方式,我发现其实他就是一个文件,后缀是.appref-ms,而且里面的内容是文本格式,例如:
http://jeffrey_zhang/CaseTypeConversion/CaseTypeConversion.application#CaseTypeConversion.application, Culture=neutral, PublicKeyToken=674b8b3113eb047d, processorArchitecture=msil
可以看到,这里面没有存储实际的可执行文件的地址,是一个通用地址,即时有新版本发布,也一样好用。
有了这个发现,创建桌面快捷方式就很简单了:在桌面上创建一个后缀为.appref-ms的文本文件即可。
文本内容:
1、在自己的开发机器上发布一下
2、打开开始菜单,找到那个快捷方式文件,用记事本打开
需要注意的是:文本的编码格式是Unicodepublic static void CreateDesktopShortCut()
{
string path = System.Environment.GetFolderPath(Environment.SpecialFolder.StartMenu);
if (!path.EndsWith("\\"))
{
path += "\\";
}
path += @"Programs\Jeffrey Zhang"; //Jeffrey Zhang 为开始菜单中的名字
if (System.IO.Directory.Exists(path))
{
string desktop = System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
if (!desktop.EndsWith("\\"))
{
desktop += "\\";
}
foreach (String file in System.IO.Directory.GetFiles(path))
{
System.IO.FileInfo fi = new System.IO.FileInfo(file);
if (!System.IO.File.Exists(desktop + fi.Name))
{
fi.CopyTo(desktop + fi.Name);
}
}
}
}
转载于:https://www.cnblogs.com/jeffrey_zhang/archive/2008/12/01/1345004.html