您的位置:首页 > 其它

使用ClickOnce发布应用程序

2012-08-15 16:27 239 查看

需求

客户机与服务器之间的带宽小,在这样的环境下提高客户端下载安装文件的速度。





解决

ClickOnce本身支持“部分更新”的功能

ClickOnce在更新时会自动检测“manifeset”文件中各下载文件的指纹,只有指纹不一样的才会重新从服务器下载。

实现压缩下载

配置IIS压缩支持的文件类型

在“C:\Inetpub\AdminScripts”目录下建批处理文件“配置IIS压缩支持的文件类型.bat”并运行。以下为批处理文件内容:

cd C:\Inetpub\AdminScripts

@echo 启动对静态压缩与动态压缩的支持
cscript adsutil.vbs set w3svc/filters/compression/parameters/HcDoDynamicCompression true
cscript adsutil.vbs set w3svc/filters/compression/parameters/HcDoStaticCompression true

@echo 配置压缩支持的静态文件类型
cscript.exe adsutil.vbs set w3svc/Filters/Compression/GZIP/HcFileExtensions "htm" "html" "txt" "application" "manifest" "deploy" "exe" "dll"
cscript.exe adsutil.vbs set w3svc/Filters/Compression/DEFLATE/HcFileExtensions "htm" "html" "txt" "application" "manifest" "deploy" "exe" "dll"

@echo 重启IIS
IISRESET.EXE




打开IIS的压缩支持选项

打开“Internet 信息服务(IIS)管理器”。

展开“本地计算机”节点,右击“网站”节点选择属性打开属性对话框。

切换至“服务”选项卡,配置“HTTP压缩”区域。

勾选“压缩应用程序文件”与“压缩静态文件”

确保计算机用户“IIS_WPG”对此处指定的临时目录具有“读写”权限






测试

访问后观察指定的临时目录(默认为“C:\WINDOWS\IIS Temporary Compressed Files”)中有没有对应的压缩文件生成

只有静态文件(html、txt等)才会在此处留下痕迹,动态文件(asp、dll等)不会

使用fiddler手动构建HTTP请求,观察RESPONSE的头部信息中是否包含“Content-Encoding: gzip”

GET /clientes/ventas/Ventas_1_0_0_8/Ventas.exe.deploy HTTP/1.1
Accept: */*
Accept-Language: es-ar
Accept-Encoding: gzip, deflate
Host: youhost.yourdomain.com
Connection: Keep-Alive






意外

“配置压缩支持的文件类型”这一步骤执行后未得到预计的效果。“deploy”与“application”等文件类型依旧未能得到压缩支持。

于是打开文件“C:\WINDOWS\system32\inetsrv\MetaBase.xml”,查找“HcFileExtensions”,看到这两行命令确实没起到效果。

难道只能取消ClickOnce中的“使用'deploy'扩展名”发布选项?NO,看我使大招:

运行net stop iisadmin /y

打开文件“C:\WINDOWS\system32\inetsrv\MetaBase.xml”,查找“HcFileExtensions”,手动将这些文件类型加入并保存。

运行iisreset

备注

发现第一次访问时压缩依旧未启用,第二次访问时才开始启用压缩。





参考

How ClickOnce Performs Application Updates

Using HTTP Compression for Faster Downloads (IIS 6.0)

HOW TO Enable ClickOnce Compression on IIS

Enabling HTTP Compression (IIS 6.0)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: