zoukankan      html  css  js  c++  java
  • 通过命令行 自动安装msi

    有向客户机安装一个msi软件包,想采用自动安装方式。

    查看MSDN发现微软为Msi命令行的安装模式

    msi软件包静默安装方式为

    ***.msi /qn (不会显示任何窗口,直接在后台自动安装。)

    msi软件包所有安装参数如下:

    msiexec /Option <Required Parameter> [Optional Parameter]

    安装选项
     </package | /i> <Product.msi>
      安装或配置产品
     /a <Product.msi>
      管理安装 - 在网络上安装产品
     /j<u|m> <Product.msi> [/t <Transform List>] [/g <Language ID>]
      播发产品 - m 播发到所有用户,u 播发到当前用户
     </uninstall | /x> <Product.msi | ProductCode>
      卸载产品
    显示选项
     /quiet
      安静模式,无用户交互
     /passive
      无从参与模式 - 只显示进程栏
     /q[n|b|r|f]
      设置用户界面级别
      n - 无用户界面
      b - 基本界面
      r - 精简界面
      f - 完整界面(默认值)
     /help
      帮助信息
    重新启动选项
     /norestart
      安装完成后不重新启动
     /promptrestart
      提示用户重新启动(如果必要)
     /forcerestart
      安装后总是重新启动计算机
    日志选项
     /l[i|w|e|a|r|u|c|m|o|p|v|x|+|!|*] <LogFile>
      i - 状态消息
      w - 非致命警告
      e - 全部错误消息
      a - 操作的启动
      r - 操作特定记录
      u - 用户请求
      c - 初始界面参数
      m - 内存不足或致命退出信息
      o - 磁盘空间不足消息
      p - 终端属性
      v - 详细输出
      x - 额外调试信息
      + - 扩展到现有日志文件
      ! - 每一行刷新到日志
      * - 记录所有信息,除了 v 和 x 选项
     /log <LogFile>
      与 /l* <LogFile> 相同
    更新选项
     /update <Update1.msp>[;Update2.msp]
      应用更新
     /uninstall <PatchCodeGuid>[;Update2.msp] /package <Product.msi | ProductCode>
      删除产品的更新
    修复选项
     /f[p|e|c|m|s|o|d|a|u|v] <Product.msi | ProductCode>
      修复产品
      p - 仅当文件丢失时
      o - 如果文件丢失或安装了更旧的版本(默认值)
      e - 如果文件丢失或安装了相同或更旧的版本
      d - 如果文件丢失或安装了不同版本
      c - 如果文件丢失或较验和与计算的值不匹配
      a - 强制重新安装所有文件
      u - 所有必要的用户特定注册表项(默认值)
      m - 所有必要的计算机特定注册表项(默认值)
      s - 所有现有的快键方式(默认值)
      v - 从源运行并缓存本地数据包
    设置公共属性
     [PROPERTY=PropertyValue]

    有了以上的介绍,在调用CMD命令进行安装就变得轻松了。

             Process p = new Process();
    p.StartInfo.FileName = "cmd.exe"; //设定要运行的程序名
    p.StartInfo.UseShellExecute = false; //关闭Shell的使用
    p.StartInfo.RedirectStandardInput = true; //重定向标准输入
    p.StartInfo.RedirectStandardOutput = true; //重定向标准输出
    p.StartInfo.RedirectStandardError = true; //重定向错误输出
    p.StartInfo.CreateNoWindow = true; //隐藏CMD窗口

    p.Start(); //启动进程
    p.StandardInput.WriteLine("cd D:\\Programe\\Downloads");
    p.StandardInput.WriteLine(".net FrameWork4.0.msi /qn"); //待执行的命令
    p.StandardInput.WriteLine("exit"); //退出



  • 相关阅读:
    Spring bean的循环依赖以及解决方式
    在Java中为什么实现了Cloneable接口,就能调用Object的clone方法?
    Java-Objects类-deepEquals()和equals()详解
    Linux TCP状态TIME_WAIT 过多的处理
    mysql字符串区分大小写的问题
    java 类加载
    java native 理解
    Maven配置阿里镜像仓库
    Cannot find name ‘XX‘. Do you need to change your target library? Try changing the `lib` compiler
    Typescript Interfaces(接口)添加任意key值/内容
  • 原文地址:https://www.cnblogs.com/lingfengchencn/p/2375511.html
Copyright © 2011-2022 走看看