考虑使用Windows 10 Update Delivery Optimization之类的东西 [英] Thinking about using something like Windows 10 Update Delivery Optimization

查看:96
本文介绍了考虑使用Windows 10 Update Delivery Optimization之类的东西的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们有一个大型Windows窗体应用程序,可以定期更新。


新版本准备就绪后,公司运行该应用程序的每个人都必须下载它。


如果我们有50家公司,其中10台PC运行我们的产品,尺寸为200MB。达到50 * 10 * 200MB = 100,000MB。


相当可观。


如果相反我们可以获得50家公司的系统管理员怎么办?手动下载更新并将其推送到10台PC?现在我们只有50 * 200MB = 10,000MB。


然而,这将卸载我们公司对本地网络管理员的很多责任,并绕过我们应用程序自己的更新功能。


今天,我在考虑Windows 10的更新功能是如何工作的。


引用:


Windows Update Delivery Optimization允许您从Microsoft以外的来源获取Windows更新和Windows应用商店应用。如果您的Internet连接有限或不可靠,这可以帮助您更快地获得更新和应用程序。如果您拥有比一台PC更多的
,它可以减少使所有PC保持最新状态所需的Internet带宽量。 Delivery Optimization还会将PC上的更新和应用程序发送到本地网络上的其他PC或Internet上的PC。 



您可以选择仅从Microsoft下载更新,本地网络上的Microsoft和PC,或本地网络和Internet上的Microsoft和PC。


参考:  http://windows.microsoft .com / zh-CN / windows-10 / windows-update-delivery-optimization-faq


基本上,打开Windows 10 Update Delivery Optimization(WUDO)后,一台PC就可以收到更新文件,网络中的任何其他PC都可以复制该文件以自行更新。


我正在考虑在我们的应用程序中实现WUDO会涉及哪些步骤。 我猜想需要启用网络发现以及共享文件夹。


显然,网络管理员不希望每个季度都要提供他的凭据。更新被推出。


<是否有一篇MSDN文章讨论了企业如何实施WUDO而不是重新创建轮子?




~Jo


< hr>
避免Sears家居装修

解决方案

你好乔,


我不确定是否有这样的MSDN文章,但我会谈谈软件的一些想法更新。在我看来,Windows更新策略并不像想象的那么简单。


在互联网时代并不普遍,很多软件公司都会发布离线更新包,这个离线更新包实际上只需安装更新部件的内容,不会使用已安​​装的版本更改文件,
如ClickOnce。此外,安装程序还将修改一些系统配置以适应新版本的功能,如注册COM组件,修改注册表等。



现在互联网已经非常普遍,几乎所有软件都使用在线升级,具体实施,以下几种做法。



1.相对简单,通过HTTP协议为了检测是否有更新,是发送到服务器的本地版本号,服务器将返回一个配置文件,该文件指示是否有新版本,以及新版本的
下载地址,更新程序按照URL下载新版本的安装过程,然后执行安装过程,用户提示根据安装程序进行更新。



2.进一步,每次重新安装太麻烦,更新程序下载新版本的th e zip(zip / 7z),然后帮助用户解压缩到安装目录。现在客户端的设计是为了尽量减少对简单和
系统耦合的追求,即使是那种绿色软件也安装了基本的复制文件,所以新版本的文件可以用来更新。


3。如果一个软件卷比较大,比如大于10MB,每次下载一个完整的新版本,然后下载太慢,安装也会很慢。由于已经有本地版本的安装,每次更新都是
实际上并没有很多东西改变,那么有一个软件可以下载压缩文件更新包,然后解压缩安装目录来覆盖旧文件。



4.一些较大的软件更新频繁,每次更新EXE \DLLmodules都会更新,因此需要下载大型更新包。有人通过使用bsdiff算法来计算新旧版本和二进制版本之间的差异,如果新版本是修复bug修改了几行代码,那么bsdiff补丁也会产生几个KB,下载使用"bspatch"更新本地版本的二进制补丁。 Bsdiff算法库非常小,只有大约30 + KB是
易于集成到更新过程中。



5.有些软件甚至更大,那就是使用bsdiff补丁生成的内容仍然很棒,它提出了更多补丁算法,Chrome的方法,

软件更新:西葫芦




从介绍中,它比bsdiff补丁更小数量级,这个想法很聪明,对于那种基于代码的程序特别有效。很多时候我们只更改了几行代码,但是DLL模块已经改变了
a很多,主要是因为代码优化链接重新排序,如果你比较汇编代码差异会很小,Courgette把DLL反编译成了汇编代码,然后将旧版本的编译代码进行比较,得到差异,
旧版本的反编译补丁的更新版本然后编译成DLL。因此,如果您只更改几行代码,则可以在几十个字节上生成补丁。


6。随着更新包越来越多,更新下载和安装时间越来越长,导致用户等待很长时间,一些软件后台下载后台更新。所谓的后台下载是用户是否立即点
更新,只要在后台有新版本秘密下载到用户下来,有点流氓,但这是为了用户体验。然后后台更新它,正在运行程序,每个文件都被占用,无法更新。或Chrome
想出来,双目录更新,第一个副本的版本到另一个目录,然后更新下一个用户的新副本,以便在新版本直接启动时启动。例如,Chrome具有以下目录结构:

Chrome

  &NBSP; +申请

  &NBSP; &NBSP; &NBSP; +35.0.1916.153

  &NBSP; &NBSP; &NBSP; +35.0.1916.114

  &NBSP; &NBSP; &NBSP;   Chrome.exe

它使用版本号来做目录名,每次升级时更新新版本,旧版本在另一个目录中运行不受影响。下次启动最新版本的Chrome.exe时,总是加载DLL才能正常运行。
Chrome.exe是一个非常小的程序,用于检测下一版本的逻辑以加载最新版本的DLL,这样简单的程序本身几乎不需要更新。


总之,现代客户端升级过程已相当复杂,包括支持灰度版新版本的大容量检测,HTTP下载,MD5完整性检查,bsdiff / courgette二进制补丁更新,双目录迭代
升级和其他技术。 


希望它对您有所帮助。


最好的问候,


Bob



We have a large Windows Forms application that gets updated on a regular basis.

Once the new version is ready, everyone running the application at the company has to download it.

If we have 50 companies with 10 PCs running our product that is 200MB in size. that comes to 50*10*200MB=100,000MB.

Considerable.

What if instead we could just get the System Administrators at the 50 companies to manually download the update and push it out to their 10 PCs? Now we only have 50*200MB = 10,000MB.

However, this unloads a lot of our company's responsibility on to the local Network Administrators and also bypasses our application's own Update feature.

Today, I was thinking about how Windows 10's Update feature works.

Quote:

Windows Update Delivery Optimization lets you get Windows updates and Windows Store apps from sources in addition to Microsoft. This can help you get updates and apps more quickly if you have a limited or unreliable Internet connection. And if you own more than one PC, it can reduce the amount of Internet bandwidth needed to keep all of your PCs up-to-date. Delivery Optimization also sends updates and apps from your PC to other PCs on your local network or PCs on the Internet. 

You can choose to download updates only from Microsoft, Microsoft and PCs on your local network, or Microsoft and PCs on your local network and internet.

Reference: http://windows.microsoft.com/en-us/windows-10/windows-update-delivery-optimization-faq

Basically, with Windows 10 Update Delivery Optimization (WUDO) turned on, one PC can receive the update file, and any other PC in the network can copy that file over to update itself.

I'm trying to think of what sort of steps would be involved to implement WUDO in our application. I am guessing Network Discovery would need to be enabled, along with a Shared Folder.

Obviously, the Network Administrator does not want to have to go around providing his credentials every quarter when an update is pushed out.

Is there a MSDN article that talks about how corporations can implement WUDO instead of recreating the wheel?


~Joe


Avoid Sears Home Improvement

解决方案

Hi Joe,

I'm not sure if there are any such MSDN articles, But I will  talk about some ideas for software updates. In my opinion, Windows update strategy is not as simple as imagined.

In the era of the Internet is not prevalent, many software companies will be released offline update package, this offline update package actually just install the contents of the updated part, no changes files will not be changed with the installed version, such as ClickOnce. In addition, the installation program will also modify some of the system configuration to adapt to the new version of the function, such as register COM components, modify the registry, etc.

Now the Internet has been very prevalent, almost all software using online upgrades, specific implementation, the following several practices.

1. Relatively simple, through the HTTP protocol to detect whether there is an update, is the local version number sent to the server, the server will return a configuration file, which indicates whether there is a new version, and with a new version of the download address, update procedures in accordance with URL to download a new version of the installation process, and then the implementation of the installation process, the user prompts to be updated according to the installer.

2. Further step, each time to re-install too much trouble, update the program to download a new version of the zip (zip / 7z), and then help the user to extract to the installation directory. Now the client is designed to minimize the pursuit of simple and system coupling, the basic copy files are installed even if the kind of green software, so the new version of the file can be used to update.

3. If a software volume has been relatively large, such as greater than 10MB, each time downloading a complete new version, then download too slow, the installation is also slow. Since there is already a local version of the installation, each update is actually not a lot of things change, then there is a software to download a compressed file update package, and then extract the installation directory to overwrite the old file.

4. Some larger software updates are frequent, each update EXE\DLLmodules are mostly updated, so it is necessary to download a large update package. Someone calculate the differences between the new and old versions and the binary version by using bsdiff algorithm, if The new version is to fix the bug changed a few lines of code, then the bsdiff patch also produced a few KB, download the binary patch to update the local version with "bspatch". Bsdiff algorithm library is very small, only about 30 + KB is easy to integrate into the update process.

5. Some software even larger, that is generated using bsdiff patch is still great, it came up with a more to the patch algorithm, Chrome's method, Software Updates: Courgette

From the introduction, it is smaller than bsdiff patch generated by an order of magnitude, the idea is quite clever, for the kind of code-based program is particularly effective. Very often we only changed a few lines of code, but the DLL module has changed a lot, mainly because the code optimization link reordering, if you compare the assembly code differences will be very small, Courgette put the DLL decompile into the assembly code, And then the old version of the compilation code compared to get the difference, the updated version of the old version of the anti-compiled patch and then compiled into DLL. So if you only change a few lines of code, then the patch may be generated on the dozens of bytes.

6. With the update package is growing, update download and installation time is longer and longer, causing users to wait for a long time, some software background download background update. The so-called background download is whether the user points immediately update, as long as there is a new version in the background secretly downloaded to the user down, a little rogue, but this is to the user experience. Then the background update it, is running the program, each file is occupied, can not be updated. Or Chrome would like to come out, double-catalog update, the version of the first copy to another directory, and then update the new copy of the next user to start when the direct launch of the new version.
For example, Chrome has the following directory structure:
Chrome
    + Application
        +35.0.1916.153
        +35.0.1916.114
         Chrome.exe
It uses the version number to do the directory name, update the new version each time the upgrade, the old version of the run in another directory is not affected. The next time you start the latest version of Chrome.exe always loaded the DLL to run just fine. Chrome.exe is a very small program, which is to detect the next version of the logic to load the latest version of the DLL, so that the simple procedure itself almost does not need to update.

In a word, Modern client upgrade process has been quite complex, including the support of the gray version of the new version of the heavy volume detection, HTTP download, MD5 integrity check, bsdiff / courgette binary patch update, dual directory iteration Upgrade and other technologies. 

Hope it can be helpful to you.

Best Regards,

Bob


这篇关于考虑使用Windows 10 Update Delivery Optimization之类的东西的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆