RFC:节省流量网页平台安装(WebPI)线下模式


[原文发表地址]RFC: Web Platform Installer (WebPI) with an offline feed mode for bandwidth savings

[原文发表时间]2011-09-24 07:45

我的妻子今晚正在斯威士兰王国。如果她是那里的开发者,希望通过网页平台安装来获取Visual Studio或者其他大流量下载,那她就得耐心地等待3G的网速了。如果顺利,她的ASDL最大速度会到512kbps,已经是上限了。我曾经也讨论过非洲国家及其它国家(比如新西兰)连接受限,实在是不好玩。我曾跟我太太说我很高兴能在国外生活,但是我需要我的网路。你钟爱的工具不能保证网速,这实在是说不出的痛苦。

我最热衷的就是确保产品可用,且能为顾客方便使用,工作会议中我还常常提醒Redmond Reality Distortion Field里的人,不是世界上每个人都拥有35megabit光纤速度的。

我们也试着把所有的东西都公开化透明化(可以说没有任何秘密),经常结果就是这样:他们在不确定是否安装之前就不会公布任何东西。那还是很不错的,至少我很理解。

不过,当我听WebPI团队的人告诉我说他们正在研究线下WebPI应用时,我今天就得把这个消息和亲爱的读者你们分享一下了。事情是这样的,我在查看开发者机子的每日构建。这不是终极体验,只是一项日常工作。他们正在考虑把这个一起加进去,但是他们要我放许多免责声明。免责声明!那就是了。介于这是个每日构建,问题总比答案多,所以我会向你展示它是如何工作的,同时再添加一些我的个人评论。

线下网页平台安装

问题是,网页平台安装假定的是你和公司的另50个人享用同样的网络,都能达到50次同样的x gig。它还假定了你的系统IS是连接到网络的。这对我们来说就是浪费的。

我觉得最理想的是有人拥有网速,然后又有充足的时间把他们想要的应用都下载下来,然后放在DVD或者网络分享上,然后所有的使用者就去点线下缓存就好了。公司可以每月刷新一下共享和种子。

WebPI中的产品都有一个“应用ID”或者产品ID。你得知道你想安装的东西的应用ID。比如,使用线下网页平台安装时,如果你想一次点击完成“所有网页内容”安装,你就要使用这个URL:http://www.microsoft.com/web/gallery/install.aspx?appid=VWDorVS2010SP1Pack

看到“VWDorVS2010SP1Pack”部分了吗?那就是网页平台安装所需的应用ID。其中的所有东西都有一个应用ID,你可以把那些都串在一起。比如,你可以让http://www.microsoft.com/web/gallery/install.aspx?appid=MVC来为VS2010获取ASP.NET MVC 3。你可以通过逗号“,”分隔添加多个应用ID,以便获取多个产品和附属。

我正在测试一款叫做wpiutil.exe的线下指令行工具,不过我的计划是要和网页平台安装指令行工具融合起来。所以,尽管我显示的是两个工具,但请把他们看成是一个。

你可以在Atom Feed中找到网页平台安装所需的应用ID。主要的feed在https://go.microsoft.com/?linkid=9767054中,找起来有点麻烦,不过有指令行工具可以帮你找到你想要的东西。

我可以运行WebpiCmdLine.exe /list:all然后获取一大堆产品和应用裂变,收集我想要安装或者之后要线下缓存的ID

Current language of installers is English

--Previously Installed Products
ID Title
----------------------------------------
AppFabric Windows Server AppFabric
AppFabricSetup Windows Server AppFabric Setup
*SNIP*
MVC2 ASP.NET MVC 2
MVC3 ASP.NET MVC 3 (Visual Studio 2010)
MVC3Loc ASP.NET MVC 3 Tools Update Language Packs
MVC3Runtime ASP.NET MVC 3 Runtime
*SNIP*
--Applications
ID Title
----------------------------------------
AcquiaDrupal Acquia Drupal
Atlas Atlas
*SNIP*
Umbraco Umbraco CMS
WordPress WordPress

Scott反馈:我告诉团队我觉得这些应用ID还可以再GUI的这个页面上。我们可以在界面上添加“产品ID:”,就像这样:

An example Product Details page that could potentially include more data

所以现在我可以做这个:

C:\>wpiutil.exe /create-shadow /shadow-path:c:\webpicache /product-ids:MVC3;IISExpress
Loading products in webpi feeds ...
Creating shadow for following products:
MVC3
NETFramework4
WindowsImagingComponent
MVC3Installer
IISExpress
Processing feed: 'https://go.microsoft.com/?linkid=9767054'
Processing resources ...
Processing product entries ...
Processing product entry: 'MVC3Installer'.
Processing product entry: 'MVC3'.
Processing product entry: 'NETFramework4'.
Processing product entry: 'IISExpress'.
Processing product entry: 'WindowsImagingComponent'.
Done.

看到工具是怎么把附属也一起获取到的吗?以下是本地创建的文件夹结构:

The folder structure created by WebPI that has all the installers and custom feed

现在我可以把指令行工具放到我的新自定义feed中区了。我的自定义feed只有我下载的东西。这是下属设置,虽然我假定一个公司是可以把所有东西都做一下备份,储存在服务器上的。

C:\>WebpiCmdLine.exe /xml:"C:\webpicache\feeds\shadowfeeds\shadow-webproductlist.xml" /List:All
Successfully loaded metadata from feed C:\webpicache\feeds\shadowfeeds\shadow-webproductlist.xml
Current language of installers is English
--Available Products
ID Title
----------------------------------------
MVC3Installer ASP.NET MVC 3 Tools Update Installer
IISExpress IIS 7.5 Express
MVC3 ASP.NET MVC 3 (Visual Studio 2010)
NETFramework4 Microsoft .NET Framework 4

然后我会这样安装产品:

C:\>WebpiCmdLine.exe /xml:"C:\webpicache\feeds\shadowfeeds\shadow-webproductlist.xml" /Products:MVC3

以下是我个人的一些反馈信息,无序排列:

· 指令行中的Visual的反馈信息应该更多些,因为这是在速度较慢的网络(就算是3G也是一样)上运行的,连更新文本区都只有56meg中的345kb。

· 指向本地feed,讲网页平台GUI完全转换为线下。

· 指令行工具在和vs相关的完全路径上应该更智能一些,UNC也一样,或者运行公司自定义内部WebPI服务器。

· 也许可以考虑使用BITS(背景网络转换服务),比如Windows更新,这样同行们就可以在背景中运行了。

· “影子”不是个很好的名字,因为它听上去像Windows中的影子复制功能。就称为线下就好了。

· 在用户如何为产品创建自定义feed上,可以多添加一些文档。就像NuGet为Visual Studio 2010产品获取库一样,WebPI需要MSI的feed和附属。

· 在断线后应该智能延续,重试工作到一半的下载。

· 应该有组政策支持,这样IT管理者就能在大企业中控制WebPI工作,加载文件了。

· 如果运行时没有全路径,应该有像 c:\webpicache or .\webpicache 这样的智能默认路径。

现在,你可以给团队提些建议了,这样就能一起完善未来最终版本的产品和最终方向了。

从我向你展示的内容来说,亲爱的读者,我给你们的问题是:

· 这个功能好吗?

· 会帮到你吗?

· 它有没有实际用处?

· 它是GUI好还是指令行好?

· 还有什么遗漏的吗?

· 有什么是必须涵盖的,有什么是多余的?

讨论一下吧。他们会听的哦!

Comments (0)

Skip to main content