最近需要制作软件安装包,需要附带VC运行时和.Net Framework的安装,但又不想让用户自己点下一步,所以就有了以下操作。

微软提供了一个程序叫msiexec.exe,位于C:\Windows\System32

msiexec提供了从命令行安装、修改Windows安装包等功能。常见的如.msi这样的安装包。

打开Powershell/cmd,输入

msiexec /?

可以看到详细的参数

这里主要介绍一下如何自动安装/卸载。如果需要更详细的使用,可以访问 https://docs.microsoft.com/zh-cn/windows/win32/msi/command-line-options?redirectedfrom=MSDN

安装 

msiexec /i "xxxxx.msi" /qr

/q是安静模式,无用户交互,/q后面再带上nbrf,可以设置软件安装界面的显示方式

/q[n|b|r|f]
设置用户界面级别
n - 无用户界面
b - 基本界面
r - 精简界面
f - 完整界面(默认值)

使用Powershell下载并安装MICROSOFT® REPORT VIEWER 2015 RUNTIME

#添加程序集
Add-Type -AssemblyName System.IO
Add-Type -AssemblyName System.IO.Compression
Add-Type -AssemblyName System.IO.Compression.FileSystem #下载地址
$DownloadUrl = "https://download.microsoft.com/download/A/1/2/A129F694-233C-4C7C-860F-F73139CF2E01/ENU/x86/ReportViewer.msi"
#下载到Temp目录
$TempPath = $env:TEMP
#下载的文件名
$FileName = "ReportViewer.msi"
#存储的完整文件路径
$FullPath = "$TempPath\$FileName" #Download
$client = New-Object System.Net.WebClient
"Now is downloading MICROSOFT® REPORT VIEWER 2015 RUNTIME"
$client.DownloadFile($DownloadUrl, $FullPath)
"Download success" #Install
msiexec.exe /i $FullPath /qr "Press any key to exit"
Read-Host

运行以后,如下

卸载

msiexec /x /package <Product.msi | ProductCode> /qr

可以指定msi安装包,也可以指定ProductCode,可以访问从注册表以下位置查找ProductCode。

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall

使用Powershell卸载MICROSOFT® REPORT VIEWER 2015 RUNTIME

  msiexec.exe /x "{3ECE8FC7-7020-4756-A71C-C345D4725B77}" /qr

如果是压缩包式的安装包,如 Microsoft Visual C++ 2015 Redistributable,

可以直接使用 vc_redist.x86.exe /?查看自动化安装的参数。

也可以使用Winrar等压缩软件,解压出msi安装包,继续使用msiexec.exe执行自动化安装。

这样就可以自动安装软件运行环境了。

注意:msiexec要以管理员权限运行,否则会弹出UAC对话框。要么就关闭UAC功能。

使用Powershell实现自动化安装/卸载程序的更多相关文章

  1. 帮同事写了几行代码,在 安装/卸载 程序里 注册/卸载 OCX控件

    写了个小控制台程序,这个程序用来注册 / 卸载OCX控件,用在Inno Setup做的安装卸载程序里. #include "stdafx.h" #include <windo ...

  2. WPF 自己动手来做安装卸载程序

    原文:WPF 自己动手来做安装卸载程序 前言 说起安装程序,这也许是大家比较遗忘的部分,那么做C/S是小伙伴们,难道你们的程序真的不需要一个炫酷的安装程序么? 声明在先 本文旨在教大家以自己的方式实现 ...

  3. 用Setup系列函数完成驱动卸载安装[驱动安装卸载程序]

    // InstallWDFDriver.cpp : Defines the entry point for the console application. // #include "std ...

  4. centos7 安装卸载程序rpm使用方法

    1.安装 rpm 包: ➢ 基本语法 rpm -ivh RPM 包全路径名称 2.卸载 rpm 包: ➢ 基本语法 rpm -e RPM 包的名称 ➢ 应用案例 删除 firefox 软件包 rpm ...

  5. Linux如何安装卸载软件

    Linux 中如何卸载已安装的软件. Linux软件的安装和卸载一直是困扰许多新用户的难题.在Windows中,我们可以使用软件自带的安装卸载程序或在控制面板中的“添加/删除程 序” 来实现.与其相类 ...

  6. PowerShell将Windows store应用程序安装为开发者模式

    原文: PowerShell将Windows store应用程序安装为开发者模式 在本地部署Windows 商店应用程序时,我们会遇到Add-AppDevPackage.ps1脚本,这个脚本和所在安装 ...

  7. inno安装卸载时检测程序是否正在运行卸载完成后自动打开网页-代码无效

    inno安装卸载时检测程序是否正在运行卸载完成后自动打开网页-代码无效 inno setup 安装卸载时检测程序是佛正在运行卸载完成后自动打开网页-代码无效 --------------------- ...

  8. Inno Setup 在安装程序开始前和卸载程序开始前,检查并关闭运行的进程

    (2011-12-29 11:54:56) 转载▼ 标签: innosetup it 分类: 开发工具经验累积 Inno Setup在安装程序前,如果有使用的进程在运行,会有错误提示,而使得Insta ...

  9. InnoSetup打包exe安装应用程序,并添加卸载图标 转

    http://blog.csdn.net/guoquanyou/article/details/7445773 InnoSetup真是一个非常棒的工具.给我的印象就是非常的精干.所以,该工具已经一步步 ...

随机推荐

  1. 条件随机场CRF原理介绍 以及Keras实现

    本文是对CRF基本原理的一个简明的介绍.当然,“简明”是相对而言中,要想真的弄清楚CRF,免不了要提及一些公式,如果只关心调用的读者,可以直接移到文末. 图示# 按照之前的思路,我们依旧来对比一下普通 ...

  2. exception java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

      1.情景展示 Java 报错信息如下: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 2.原因分析 首先,这是越界异常,但不是数组越 ...

  3. MP实战系列(十九)之批量新增

    批量操作在实际开发中也应用非常多,例如批量下发优惠券.批量添加用户等. 以MyBatis为例,通常实现批量操作,有这么几种方式? 第一,单条插入sql语句,进行for循环遍历,基准条件是根据前端传过的 ...

  4. jemalloc内存分配原理【转】

    原文:http://www.cnblogs.com/gaoxing/p/4253833.html 内存分配是面向虚拟内存的而言的,以页为单位进行管理的,页的大小一般为4kb,当在堆里创建一个对象时(小 ...

  5. INDY10 BASE64编码

    INDY10 BASE64编码 DELPHI自带的BASE64单元,在项目中使用发现非常没有效率,INDY10的好用. uses IdCoderMIME BASE64编码类:TIdEncoderMIM ...

  6. 引用fastclick.js或使用触屏监听 滑动屏幕报错:解决[Intervention] Unable to preventDefault inside passive event listener

    使用fastClick.js所产生的一些问题 开发h5活动页时想到移动端会有300ms的延迟,于是便打算用fastClick.js解决. 页面引入fastClick.js后,滑动H5页面的时候发现谷歌 ...

  7. boot2docker

    boot2docker 简介 boot2docker是解决非linux系统下运行Docker容器不方便的工具 官方介绍 Boot2Docker是在Windows操作系统上运行Docker的唯一方法,现 ...

  8. 【Eclipse】Eclipse如何导出java项目为jar包

    1.首先确定要导出的项目 从项目结构可以看出,笔者的项目是一个Dynamic Java Project.com/db下面有一个config的数据库配置文件.WEB-INF/lib文件夹下面有依赖的ja ...

  9. Windows 10 多用户同时远程登录

    win服务器版默认是支持多用户登陆的,甚至可以在主机上用不同用户自己远程登陆自己,如window server 2016. Win10 正常情况下是不允许用户同时远程的,即一个用户远程进来会把另一个用 ...

  10. 【转】深入理解javascript中的立即执行函数(function(){…})()

    javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法也是对javascript语言特性更进一步的深入理解. ( f ...