1       Windows Installer 概述

Windows Installer 是 Windows 操作系统的组件,它可以简化应用程序的安装过程。

通过应用安装过程期间集中定义的一组安装规则,Windows Installer 可以管理应用程序的安装和删除。还可以使用此项服务修改、修复或删除现有的应用程序。Windows Installer技术由用于 Windows 操作系统的 Windows Installer 服务以及包含有关应用程序设置和安装信息的程序包 (.msi) 文件格式组成。

Windows Installer 也是可扩展的软件管理系统。Windows Installer 管理软件组件的安装、添加和删除,监视文件复原,以及通过回滚方式维护基本的故障恢复。Windows Installer支持从多种来源安装和运行软件,并且开发人员可以自定义 Windows Installer 以安装自定义应用程序。

2       Windows Installer 的功能

使用 Windows Installer 和 .msi 程序包文件格式,软件安装与删除将更加可靠和具有弹性。Windows Installer 还提供更多安装选项。Windows Installer 执行以下任务:

2.1      安装失败后恢复原始计算机状态

Windows Installer 跟踪在应用程序安装过程中对系统所做的所有更改。如果安装失败,Windows Installer 能重新恢复系统,或者使系统返回到初始状态。

2.2      帮助阻止应用程序间冲突

Windows Installer 加强了安装规则,这有助于阻止现有应用程序在共享资源时产生冲突。当安装操作更新现有应用程序共享的动态链接库 (.dll) 时,或某个操作删除其他应用程序共享的动态链接库时,会导致这样的冲突。

2.3      安全地删除现有程序

Windows Installer 可以安全地卸载以前安装的任何程序。除被其他已安装软件共享使用的内容之外,它将删除所有关联的注册表项和应用程序文件。成功地安装应用程序之后,可在任何时候卸载。(删除不能和“返回”功能混淆,后者是在安装失败时将计算机恢复到初始状态)。

2.4      诊断和修复损坏的应用程序

应用程序可以查询 Windows Installer,以确定安装的应用程序是否具有丢失或损坏的文件。如果检测到任何丢失或损坏的文件,Windows Installer 通过重新复制那些丢失或损坏的文件修复该应用程序。

2.5      支持按照需要安装应用程序的功能

Windows Installer 可配置为最初只安装应用程序的最小子集。以后,当用户第一次访问需要其他组件的功能时,将自动安装其他组件。这称作“公布”。例如,Windows Installer 可以安装功能最少的 Microsoft Word。当用户第一次访问邮件合并功能时(在原始安装中未包括此功能),Windows Installer 将自动安装邮件合并组件。同样,Windows Installer 还可以清除应用程序中不使用的组件。例如,可以将 Windows Installer 配置为,如果邮件合并组件 60 天不用,则删除该组件。

2.6      支持无人参与的应用程序安装

安装程序包可配置成安装过程中无需与用户进行交互。在安装过程中,Windows Installer 可以向计算机查询桌面属性,包括确定应用程序是否以前都被 Windows Installer 安装过。

2.7      支持 32 位和 64 位的应用程序

32 位应用程序可以安装在 64 位的计算机上。

2.8      支持 Microsoft .NET Framework

Microsoft .NET Framework 是新的、可生成集成的、面向服务的应用程序的平台,这些应用程序从多种类型源中获得信息并与源交互,而不管正在使用的平台或者语言。.NET Framework 和公共语言运行库可提供一次编写、一次编译、任意位置运行的应用程序开发。具体地讲, .NET Framework 可以提供代码重新使用、代码规范化、资源管理、多语言开发、安全、部署和管理。

2.9      与并排组件集成

此功能通过允许将基于组件版本设计和测试的应用程序绑定到该版本组件,从而消除了 .dll 版本冲突,而不管使用该应用程序的计算机如何。并排组件支持同时执行每个组件的多个版本。

2.10与软件限制策略集成

此功能提供了防病毒支持,包括防止通过电子邮件和 Web 传播特洛伊木马病毒和蠕虫病毒。软件限制策略使执行简单点击、上下文活动频繁的用户感到安全。组策略使该策略作为受信的应用程序列表的一部分来执行,Windows Installer 使用这些软件限制策略允许的应用程序进行操作。

3       Windows Installer 技术

Windows Installer 技术分为两部分(这两部分联合工作):客户端安装程序服务 (Msiexec.exe) 和软件包文件 (.msi file)。Windows Installer 使用包含在软件包文件中的信息来安装应用程序。以下讲述 Windows Installer 技术:

3.1      安装程序服务

Windows Installer 是一种允许操作系统管理安装过程的操作系统服务。

3.2      安装程序

Msiexec.exe 程序是 Windows Installer 的一个组件。该程序使用动态链接库 Msi.dll 读取程序包文件 (.msi)、应用转换 (.mst) 以及合并命令行选项。该安装程序执行所有与安装相关的任务:将文件复制到硬盘、修改注册表、创建桌面快捷方式以及必要时显示查询用户安装首选项的对话框。

在计算机上安装 Windows Installer 时,将修改操作系统的文件关联功能以便识别 .msi 文件类型。当用户双击带 .msi 扩展名的文件时,操作系统将 .msi 文件与 Windows Installer 关联并运行 Msiexec.exe 应用程序。

3.3      安装程序包文件

每个程序包 (.msi) 文件都包含关系型数据库,存储着通过多种安装方案安装(和卸载)程序所需的全部指令和数据。例如,程序包文件可以包含在已经安装应用程序的以前版本的情况下安装此应用程序的指令。程序包文件还可以包含在从未装过该应用程序的计算机上安装此应用程序的指令。

3.4      转换

可以通过将转换 (.mst) 应用到安装数据库来操纵安装过程。转换过程将更改数据库元素。例如,Windows Installer 可以使用转换文件更改应用程序的用户界面语言。Windows Installer 转换文件将修改安装时的安装程序包文件,因此能动态影响安装操作。

如果您在使用“组策略软件安装”,您应当注意除了在安装时,在分配和发布时,也将应用转换。在实际术语中,这表示在您单击“确定”之前需要确保程序包属性对话框的“修改”选项卡是按照所需方式设置的。如果您忽略了这一步操作并部署了转换错误的程序包,则需要删除软件并重新部署,或者用正确转换的版本升级该软件。

自定义转换,很像修补程序,始终保留在计算机的缓存中。只要 Windows Installer需要对安装程序包执行配置更改,这些转换就会应用到基本程序包文件。转换只能在初始安装时应用,而不能对已安装的应用程序应用。

4       使用Windows Installer

4.1      在所管理的环境中的 Windows Installer

Windows Installer 是 IntelliMirror 的主干,也是基于组策略的更改和配置管理技术的核心组件。通过使用 IntelliMirror 技术、组策略以及更改和配置管理,管理员可批准特定应用程序,指定在这些应用程序上的所有配置操作(安装、删除和修复)都在本地系统帐户下运行。管理员控制并管理文件系统和注册表,而 Windows Installer 执行用户启动的软件安装。只有管理员批准的应用程序才能以更高特权运行。有关 Windows Installer 的详细信息,请参阅使用 Windows Installer。

管理员使用 Active Directory、IntelliMirror 和组策略向企业内部的用户组或计算机组指派和发布应用程序。Active Directory 是一种安全的、分布式的、分区的、复制的目录服务,用来提供管理服务。这些服务包括企业内部资源定位以及将组策略用于 Active Directory 所管理对象的标准方法。有关 Active Directory 的详细信息,请参阅 Active Directory。

4.2      Msiexec(命令行选项)

4.2.1      安装或配置产品

语法

msiexec /i {Package | ProductCode}

参数

/i

安装或配置产品。

Package

指定 Windows 安装程序包文件的名称。

ProductCode

指定 Windows 安装程序包的全局唯一标识符 (GUID)。

备注

Windows Installer 命令行选项不区分大小写。

有关 Windows 安装程序命令行选项的详细信息,请参阅“相关主题”。

示例

要从 A:/Example.msi 安装某一产品,请键入:

msiexec /I A:/Example.msi

4.2.2   使用管理安装选项

语法

msiexec /a Package

参数

/a

应用管理安装选项。

Package

Windows 安装程序包文件的名称。

备注

Windows Installer 命令行选项不区分大小写。

有关 Windows 安装程序命令行选项的详细信息,请参阅“相关主题”。

4.2.3      修复产品

语法

msiexec /f [p][o][e][d][c][a][u][m][s][v]{Package | ProductCode}

参数

/f

启用下表中的一个或多个命令行选项。

 
命令 描述
p 只有文件丢失时才重新安装。
o 如果文件丢失或安装了旧版本,则重新安装。
e 如果文件丢失或安装了相同或更旧的版本,则重新安装。
d 如果文件丢失或安装了不同的版本,则重新安装。
c 如果文件丢失或存储的校验和不符合计算值,则重新安装。
a 强制重新安装所有文件。
u 重新写入全部所需的用户特定的注册表项。
m 重新写入全部所需的计算机特定的注册表项。
s 覆盖所有现有的快捷方式。
v 从资源运行或重新缓存本地程序包。

Package

Windows 安装程序包文件的名称。

ProductCode

Windows 安装程序包的全局唯一标识符 (GUID)。

备注

该选项将忽略从命令行键入的任何属性值。

该命令行选项的默认参数是 /fpecms

Windows Installer 命令行选项不区分大小写。

有关 Windows 安装程序命令行选项的详细信息,请参阅“相关主题”。

示例

要修复安装程序包,请键入:

msiexec /fpecms example.msi

4.2.4      卸载产品

语法

msiexec /x {Package | ProductCode}

参数

/x

卸载产品。

Package

Windows 安装程序包文件的名称。

ProductCode

Windows 安装程序包的全局唯一标识符 (GUID)。

备注

Windows Installer 命令行选项不区分大小写。

有关 Windows 安装程序命令行选项的详细信息,请参阅“相关主题”。

示例

要删除或卸载程序包,请键入:

msiexec /x Example.msi

4.2.5      公布产品

语法

msiexec /j [{u | m}] Package

msiexec {u | mPackage /t TransformList

msiexec {u | mPackage /g LanguageID

参数

/j

公布产品。

u

向当前用户公布。

m

向计算机的所有用户公布。

Package

指定 Windows 安装程序包文件。

/g LanguageID

标识语言。

/t TransformList

将变换应用到已公布的程序包。

备注

该选项将忽略从命令行键入的任何属性值。

如果要用高级特权安装应用程序,请使用 /jm

Windows Installer 命令行选项不区分大小写。

有关 Windows 安装程序命令行选项的详细信息,请参阅“相关主题”。

范例

要将程序包公布给计算机的所有用户,请键入:

msiexec /jm Example.msi

4.2.6      设置登录级别

语法

msiexec /L [i][w][e][a][r][u][c][m][p][v][+][!]LogFile.txt

参数

/L

指定日志文件的路径。

i

记录状态消息。

w

记录非严重警告。

e

记录所有错误消息。

a

记录启动操作。

r

记录操作特定的记录。

u

记录用户请求。

c

记录初始用户界面参数。

m

记录内存不足。

p

记录终端属性。

v

记录详细输出。要使用 v 选项,请指定 /L*v

+

添加到现有文件。

!

刷新日志的每一行。

*

记录除 v 选项外的所有信息。这是通配符。

LogFile .txt

文本日志文件的名称和路径。

备注

Windows Installer 命令行选项不区分大小写。

要在使用通配符标志的日志文件中包括 v 选项,请在命令提示符后键入 /L*v

Windows 安装程序日志文件选项也可以与卸载和修复过程一起使用。

有关 Windows 安装程序命令行选项的详细信息,请参阅“相关主题”。

示例

要安装程序包并创建包含状态、内存不足和错误消息等相关信息的日志文件,请使用下面的命令:

msiexec /i Example.msi /Lime logfile.txt

4.2.7      应用更新

语法

msiexec/pUpdatePackage

参数

/p

应用一项更新。

UpdatePackage

特定的更新。

备注

要将更新应用到管理安装程序包,请使用下面的语法:

msiexec/pUpdatePackage/aExample.msi

Windows Installer 命令行选项不区分大小写。

有关 Windows 安装程序命令行选项的详细信息,请参阅“相关主题”。

4.2.8      使用命令行安装转换

语法

msiexec /iPackageTRANSFORMS=TransformList

参数

/i

安装或配置产品。

Package

指定 Windows 安装程序包文件。

TRANSFORMS=

用于指定哪些转换 (.mst) 文件应该应用到程序包的属性。

TransformList

由分号分隔的路径列表。

备注

Windows Installer 命令行选项不区分大小写。

有关 Windows 安装程序命令行选项的详细信息,请参阅“相关主题”。

4.2.9      使用命令行通过转换安装并公布产品

语法

msiexec /iPackage/j[u][m/tTransformList

参数

/i

安装或配置产品。

Package

Windows 安装程序包文件的名称。

/j

公布产品。该选项忽略所有在命令行输入的属性值。

u

向当前用户公布。

m

向计算机的所有用户公布。

/t

将变换应用到已公布的程序包。

TransformList

由分号分隔的路径列表。

备注

Windows Installer 命令行选项不区分大小写。

有关 Windows 安装程序命令行选项的详细信息,请参阅“相关主题”。

4.2.10 设置用户界面级别

语法

msiexec /q{n|b|r|f|n+|b+|b-}

参数

/qn

不显示用户界面。

/qb

显示基本用户界面。

/qr

在安装结束时显示带模式对话框的简化用户界面。

/qf

结束时显示带模式对话框的完整用户界面。

/qn+

除了结束时显示模式对话框之外不显示用户界面。

/qb+

结束时显示带模式对话框的基本用户界面。

/qb-

显示不带模式对话框的基本用户界面。

备注

/qb+- 不是受支持的用户界面级别。如果用户取消安装,则不显示模式对话框。

Windows Installer 命令行选项不区分大小写。

有关 Windows 安装程序命令行选项的详细信息,请参阅“相关主题”。

示例

要在安装程序包 Example.msi 期间显示基本用户界面选项,请键入:

msiexec /qb Example.msi

4.2.11 显示 Windows 安装程序的版权信息

语法

msiexec {/?/h}

参数

/?|/h]

显示 Windows 安装程序版本和版权信息。

备注

Windows Installer 命令行选项不区分大小写。

有关 Windows 安装程序命令行选项的详细信息,请参阅“相关主题”。

4.2.12 调用系统 API DllRegisterServer 自注册在命令行跳过的模块

语法

msiexec /y Module

参数

/y

调用系统 API DllRegisterServer 自注册在命令行跳过的模块。

Module

指定模块的文件名。

警告

编辑注册表不当可能会严重损坏您的系统。在更改注册表之前,应备份计算机上任何有价值的数据。

备注

该选项只用于不能使用 .msi 文件注册表添加的注册信息。

Windows Installer 命令行选项不区分大小写。

有关 Windows 安装程序命令行选项的详细信息,请参阅“相关主题”。

范例

下例说明了如何使用 msiexec /y 命令:

msiexec /y my_file.dll

4.2.13 调用系统 API DllUnRegisterServer 取消注册在命令行跳过的模块

语法

msiexec/zModule

参数

/z

调用系统 API DllUnRegisterServer 取消注册在命令行跳过的模块。

Module

模块文件名。

备注

该选项只用于不能使用 .msi 文件注册表添加的注册信息。

Windows Installer 命令行选项不区分大小写。

有关 Windows 安装程序命令行选项的详细信息,请参阅“相关主题”。

范例

下例说明了如何使用 msiexec /z 命令:

msiexec /z my_file.dll

5       安装故障分析和解决方法

5.1      安装程序包不能正确安装。

原因:安装程序包已损坏。

解决方案:使用 Windows Installer 的修复选项修复安装程序包。

另请参阅:使用命令行修复程序包

5.2      完成安装之前安装过程终止。

原因:Windows Installer 不能读取安装程序包,或者计算机上的条件阻止了程序包的成功安装。

解决方案:Windows Installer 在 Windows 事件日志中创建项目。要查看该日志,请执行以下操作:

²        打开事件查看器。

²        查看 Windows Installer项中的应用程序日志。

5.3      升级安装时提示“安装程序无法安装XX,因为已经安装了该产品的其他版本。”

原因:安装包的内容已经发生了变化,但其Version 属性和UpgradeCode属性没有更改。

解决方案:制作新的安装包时,请更改安装包的Version和UpgradeCode,在使用vs.net 2003打包时,更改version的同时,UpgradeCode会自动更改。

5.4      升级安装时部分程序组件没有更新

原因:可能有2种

1           新的安装包将组件安装到不同的目录了

2           Windows Installer认为本地文件与安装包中的文件一致,无须更新。

解决方案:对于第一种原因,应该尽量避免,一旦发生,应该在新目录和旧目录同时放置新的组件,以确保组件被覆盖。对于第二种原因,发布新版本的软件时,对于更改过的组件,应该更改其版本(version属性)。

转载于:https://www.cnblogs.com/gman/p/3509405.html

Windows Installer (MSI) 详解 参数介绍相关推荐

  1. Windows XP服务详解

      Windows XP服务详解 微软的个人操作系统从Win98发展到WinXP,为什么突然变得那么消耗系统资源呢?以至于很多人都感觉WinXP只是高配置的电脑才能运行的操作系统,其实不然.WinXP ...

  2. 【Kafka】Kafka-配置参数详解-参数调优

    Kafka-配置参数详解-参数调优 kafka 目录_百度搜索为什么kafka使用磁盘而不是内存 - CSDN博客Kafka 配置说明 - 風吹云动 - 博客园kafka生产服务器配置 - OrcHo ...

  3. Windows权限设置详解

    Windows权限设置详解 随着动网论坛的广泛应用和动网上传漏洞的被发现以及SQL注入式***越来越多的被使用,WEBSHELL让防火墙形同虚设,一台即使打了所有微软补丁.只让80端口对外开放的WEB ...

  4. Windows API函数大全---附:windows运行命令详解

    1. API之网络函数             WNetAddConnection 创建同一个网络资源的永久性连接             WNetAddConnection2 创建同一个网络资源的连 ...

  5. Windows 纤程详解

    Windows 纤程详解 在Windows2000/XP中,纤程(fiber)相当于用户级别的线程或轻进程.纤程由Win32库函数支持,对核心是不可见的.纤程可以通过SwitchToFiber显示至另 ...

  6. 技术资料收藏:Windows系统文件中文详解

    技术资料收藏:Windows系统文件中文详解 A ↑ ACCESS.CHM - Windows帮助文件 ACCSTAT.EXE - 辅助状态指示器 ADVAPI32.DLL - 高级Win32应用程序 ...

  7. 优化Windows XP虚拟内存详解(转)

    优化Windows XP虚拟内存详解(转)[@more@] 什么是虚拟内存? 虚拟内存是Windows XP为作为内存使用的一部分硬盘空间.即便物理内存很大,虚拟内存也是必不可少的.虚拟内存在硬盘上其 ...

  8. 《Windows系统文件名详解(上)》

    WINDOWS应用 UNIX|LINUX office软件 其他内容 维修实例 其他 photoshop CorelDraw AutoCAD 其他 程序语言类 数据库类 网站建设 互联网应用 网络安全 ...

  9. windows xp 服务详解

    alerter -错误警报器,垃圾,关闭. application layer gateway service -给与第三者网络共享/防火墙支持的服务,有些防火墙/网络共享软件需要.占用1.5mb内存 ...

最新文章

  1. pythonscrapy爬虫_Python 爬虫:Scrapy 实例(二)
  2. java语言修饰符$_Java语言中的修饰符
  3. 守望者的逃离—贪心算法
  4. centos压缩和解压缩
  5. Android UI(四)云通讯录项目之云端更新进度条实现
  6. centos部署时间服务器
  7. 第二章:Improving On User Commands--22.显示不同时区的时间
  8. Bootstrap 警告框
  9. 一、数据类型和运算符——3-数据类型
  10. 扒一扒开源世界有哪些licenses?
  11. python自动下载图片_python简易爬虫来实现自动图片下载
  12. 技术支持好跳槽吗_计算机实施、IT技术支持、技术顾问、成功客户经理岗位怎么样?...
  13. 【图像压缩】基于matlab GUI FFT图像压缩【含Matlab源码 843期】
  14. 如何学习财务数据分析,有哪些好工具?
  15. mysql 初始化序列_GitHub - IMAUZS/seq: 基于mysql的序列号生成器
  16. 你在家看电视,家里的电视也在看你?
  17. oracle中imp命令详解,Oracle使用imp命令导入数据详解
  18. “开会” 引发的思考
  19. Dart中的构造函数
  20. Linux服务器安装云锁

热门文章

  1. 一个进程可以创建多少线程?
  2. Leetcode题库 5.最长回文子串(C++实现)
  3. Playfair加密算法(C 实现)
  4. 关于优酷开发SDK之setOnSeekCompleteListener
  5. java转换工具类_Java数据转换工具类
  6. linux+proc+原理,Linux内核中的Proc文件系统(一)
  7. Aptana:JavaScript开发利器
  8. 用Python操作Redis
  9. django第三天(路由基础和路由分配)
  10. COCOS2D-X 抖动效果 CCShake