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

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

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

   private void btnOk_Click(object sender, RoutedEventArgs e)
{
//获取当前程序执行的目录 this.tipMessage.Text = "正在更新补丁,可能会花费几分钟。。。"; ThreadPool.QueueUserWorkItem(delegate
{
string dir = Environment.CurrentDirectory;
Process proc = null;
try
{
string targetDir = string.Format(dir);
proc = new Process();
proc.StartInfo.WorkingDirectory = targetDir;
proc.StartInfo.FileName = "updateOffice2013.bat";
proc.Start();
proc.WaitForExit(); this.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
(ThreadStart)delegate()
{
this.tipMessage.Text = "更新完成";
});
}
catch (Exception ex)
{
this.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
(ThreadStart)delegate()
{
this.tipMessage.Text = "更新出错";
}); Console.WriteLine("Exception Occurred :{0},{1}", ex.Message, ex.StackTrace.ToString());
}
});
}

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

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

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

最终安装目录结构如下:

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

office 2013补丁包更新的更多相关文章

  1. Windows7SP1补丁包(Win7补丁汇总) 32位/64位版 更新截至2016年11月

    Windows7SP1(64位)补丁包(Win7补丁汇总)更新到本月最新.包含Windows7SP1中文版所有重要补丁,可离线安装,适用于Windows 7 SP1 64位 简体中文系统.包含Inte ...

  2. Office 2007 SP3 正试版补丁包下载

    这仅仅是下载补丁包.下载地址也是微软官网的.以下是MD5是我下载后校验的. 2007 Microsoft Office 套件 Service Pack 3 (SP3) 文件名: office2007s ...

  3. 自翻------Office 2013 RT 使用说明

    Office Home and Student 2013 RT Preview的更新 介绍 Microsoft已发布Microsoft Office Home and Student 2013 RT ...

  4. 如何查看SQL Server的版本、补丁包信息?以及如何鉴别是否需要升级自己的SQL Server?

    作为一个SQL Server的数据库管理人员,经常需要碰到的一个问题就是查看自己SQL Server属于哪个版本,是否安装了最新的修复补丁包,是否安装了最近的安全补丁.在此之前,我们可以通过以下SQL ...

  5. 另类Unity热更新大法:代码注入式补丁热更新

    对老项目进行热更新 项目用纯C#开发的? 眼看Unity引擎热火朝天,无数程序猿加入到了Unity开发的大本营. 一些老项目,在当时ulua/slua还不如今天那样的成熟,因此他们选择了全c#开发:也 ...

  6. VSTO学习笔记(十五)Office 2013 初体验

    原文:VSTO学习笔记(十五)Office 2013 初体验 Office 2013 近期发布了首个面向消费者的预览版本,我也于第一时间进行了更新试用.从此开始VSTO系列全面转向Office 201 ...

  7. Wix打包系列 (六)制作升级和补丁包

    原文:Wix打包系列 (六)制作升级和补丁包 前面我们已经知道怎么制作一个完整安装包了,但我们的软件往往不能一次性就满足客户的需要,当客户需要我们给软件进行升级的时候,我们应该怎么做呢? 在这之前,我 ...

  8. 如何使用Beyond Compare 对比差异文件【制作Patch(补丁包)文件】

    场景:研发部的代码从SVN变更至GIt,通过Jenkins每天自动生成程序包. 如需要获取单独的程序包更新,而不是整个程序包覆盖更新,这时候就需要用到Beyond Compare 对比工具 操作步骤1 ...

  9. windows离线补丁包下载路径-云盾安骑士

    我们有一台阿里云服务器,只有内网可以访问,无外网资源. 阿里云账户邮箱反复收到阿里云云盾的漏洞报警通知,推荐安装安骑士组件. 安骑士组件是收费服务.阿里云服务器,无法连上外网,无法自动安装补丁.需要将 ...

随机推荐

  1. js的继承实现

    1.原型链继承 1.创建父类对象2.创建子类函数对象3.将父类的实例对象赋值给子类的原型4.将子类的原型属性的构造函数设置为 子类本身 function Person(name) { this.nam ...

  2. yii2 查询构建器

    Query Builder $rows = (new \yii\db\Query()) ->select(['dyn_id', 'dyn_name']) ->from('zs_dynast ...

  3. C语言_scanf()和getchar() 使用[粗俗易懂]

    原文地址:http://blog.csdn.net/hao5743/article/details/6939661/,以下是我重新整理的以下. 问题描述一:[分析scanf()和getchar()读取 ...

  4. Angular CurrencyPipe货币管道关于人民币符号¥的问题

    做项目(Angular项目)时经常需要处理金额的显示,需要在金额前面加上¥,但又不想用简单在前面加"¥"这么不优雅的方式,于是想到了CurrencyPipe.毕竟,Currency ...

  5. LeetCode第五天

    leetcode 第五天 2018年1月6日 22.(566) Reshape the Matrix JAVA class Solution { public int[][] matrixReshap ...

  6. 【java学习笔记】正则表达式

    一.正则表达式 1.预定义字符集  . 表示任意一个字符 \d 表示任意一个数字 \w 表示任意一个单词字符(只能是数字.字母.下划线) \s 表示任意一个空白字符(\t\r\n\f\x0B) \D ...

  7. 追溯 React Hot Loader 的实现

    文:萝卜(沪江金融前端开发工程师) 本文原创,转载请注明作者及出处 如果你使用 React ,你可以在各个工程里面看到 Dan Abramov 的身影.他于 2015 年加入 facebook,是 R ...

  8. PCI和PCIE插槽有什么区别?

    PCI是Peripheral Component Interconnect(外设部件互连标准)的缩写,它是目前个人电脑中使用最为广泛的接口,几乎所有的主板产品上都带有这种插槽.PCI插槽也是主板带有最 ...

  9. 把mmapv1存储引擎存储的mongodb3.0数据库数据复制到WiredTiger存储引擎的mongodb3.2中

    mongodb3.0在mmapv1的存储引擎基础上添加了一个新的存储引擎WiredTiger.但是3.0的默认存储引擎依旧是mmapv1,因此我们项目之前也就用的默认方式. 但是mongodb更新实在 ...

  10. FusionCharts 3D帕累托图

    1.设计3D帕累托图的页面 Pareto3D.html: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN&q ...