office 2013补丁包更新

        总是有客户发现使用office 2013 下的插件有问题,这个问题出现在低版本上,所以要给office 2013打上补丁,打上后,运行插件ok,出现的bug解决掉了。那么给office打补丁包就成了解决此类bug的方案。如何给office打补丁包呢?

       360卫士可以扫描软件漏洞,然后在线下载并安装补丁包。这种方案固然好,但是有两个弊端。首先,客户机器上装360,客户不一定会修补漏洞,假如客户会操作,那么一次扫描,未必能够打完所有office 2013的补丁,有可能得多次扫描。然后,客户机器上没有360安全卫士,这时候,你不可能要求客户装360卫士。 
      在这种情况下,于是我就想到了,把补丁包下载下来,直接让客户装。问题是office 2013的补丁包着实很多,不可能在微软的网站上下载所有的,关键是太耗时间了。我想到用360安全卫士先扫描修补,看能不能直接拿到下载好的补丁包。结果发现360下的补丁包全部是cab格式的。这可能是补丁包安装后的副产品,我在360的补丁管理列表中,直接定位到了微软的下载页面上。后来,经过很长时间摸索,终于知道哪些补丁是很重要的补丁,把这几个关键的补丁打上就好了。在探索的过程中,曾几度陷入烦躁,沮丧当中。早知道,应该对探索充满信心,对结果有着乐观的态度,有助于问题及早解决。

      找到补丁包了,接下来就是如何批量安装了。一个一个点击安装绝非良策。那客户怎么忍受呢。于是,我用了批处理+C#程序,简化了整个安装过程,客户只需要轻轻一点,安装补丁的程序就开始运行了:

     

 1   private void btnOk_Click(object sender, RoutedEventArgs e)
 2         {
 3             //获取当前程序执行的目录
 4 
 5             this.tipMessage.Text = "正在更新补丁,可能会花费几分钟。。。";
 6 
 7             ThreadPool.QueueUserWorkItem(delegate
 8             {
 9                 string dir = Environment.CurrentDirectory;
10                 Process proc = null;
11                 try
12                 {
13                     string targetDir = string.Format(dir);
14                     proc = new Process();
15                     proc.StartInfo.WorkingDirectory = targetDir;
16                     proc.StartInfo.FileName = "updateOffice2013.bat";
17                     proc.Start();
18                     proc.WaitForExit();
19 
20 
21                     this.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
22                                 (ThreadStart)delegate()
23                                 {
24                                     this.tipMessage.Text = "更新完成";
25                                 });
26                 }
27                 catch (Exception ex)
28                 {
29                     this.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
30                                 (ThreadStart)delegate()
31                                 {
32                                     this.tipMessage.Text = "更新出错";
33                                 });
34 
35                     Console.WriteLine("Exception Occurred :{0},{1}", ex.Message, ex.StackTrace.ToString());
36                 }
37             });
38         }

用wpf写的小小的一段代码,关键的核心在于 updateOffice2013.bat 这个批处理文件,文件的内容很简单:

cd /d %~sdp0
for %%i in (*.exe) do %%i /q

第一句切换到批处理文件所在的目录,第二句循环执行exe文件 /q 参数表示静默安装,不要弹出对话框之类的东西。

最终安装目录结构如下:

注意:安装包是按版本顺序排序的,用户右键以管理员的权限运行 office2013Update.exe即可。

 

 

 

      

posted @ 2017-10-25 14:14  micDavid  阅读(5325)  评论(0编辑  收藏  举报