Windows Installer技术支持管理安装。用于启动管理安装的命令行为:'msiexec / a setup.msi'。我想了解这种安装的目的,并且在什么情况下有帮助?

#1 楼

在现实世界中,它根本没有那么多价值。 MSI是在一天中设计的,当时计算机通常具有2-20GB的硬盘驱动器。他们提出了所有这些“从源头运行”的广告方案,这些方案当时似乎很酷,但从未真正融入现实世界。

今天,/ a对我(设置开发人员)的作用是,是给我一种简单的方法来“提取” MSI并验证其内容。就是这样。

评论


+1。根据您提到的内容-如何从MSI删除相关的表(与管理和广告有关)?您看到任何后果吗?

– Anand Patel
2011年4月6日在11:44



我已经看到许多MSI(甚至来自Microsoft)都删除了对Advt的引用。对我来说,唯一的后果就是我无法(轻松地)提取内容。尽管有一些方法可以将其备份并以任何方式进行。

–克里斯托弗画家
2011年4月6日14:30

管理员安装对于企业大规模部署使用和补丁创建非常重要。我对此线程添加了更长的答案。

–斯坦因·奥斯穆尔
2011年4月22日在3:25

我似乎记得MSFT建议不要修补管理员安装。我知道在美国大陆航空我们有SMS,我通常会一次将完整安装一次推送到8000台计算机上。对于管理员安装,我们很少使用。

–克里斯托弗画家
2011年4月22日在3:56

除非有非常特殊的要求,否则没有人安装管理员补丁-尽管理论上很少能在实践中正常工作,但理论上这是可能的。

–斯坦因·奥斯穆尔
13年1月11日,7:23

#2 楼


管理安装:添加一些实际示例。

1)静默运行提取(无GUI):

msiexec.exe /A MySetup.msi TARGETDIR=D:\Extract\ /QN /L*V D:\Extract.log


2)交互式提取(提取程序的设置GUI):

msiexec.exe /A MySetup.msi 


快速参数说明:

- /A - run administrative installation sequence.
- /QN - run completely silently (alternatively: /QB! for semi-silent).
- /L*V "Extract.log" - create verbose log file.
- TARGETDIR - destination path for file extraction (top level folder).


3)某些setup.exe文件可以运行通过
setup.exe /a
进行管理员安装


Setup.exe命令行示例:从EXE提取MSI
Setup.exe和Update.exe命令行参数

设置文件提取,替代方法




msiexec.exe命令行:




Msiexec (command-line options)-MSDN概述。
这里是the Technet version


管理安装的目的

管理安装通常在大规模部署方案中最有用一次将软件安装在许多计算机上,例如,在拥有数千个工作台的大型银行中位置。实际上,对于此类部署方案而言,这非常关键。作为应用程序打包程序,您要做的第一件事是进行管理员安装以检查MSI文件的内容和结构。

管理安装中的操作

管理员安装本身仅从内部cab文件中提取文件,并调整MSI文件的媒体布局以使用提取的文件而不是内部cab文件进行安装。最终结果是一个整洁的文件夹层次结构,显示了文件在目标系统上的位置,并且MSI文件比原来的内部Cab文件要小。除提取操作外,该操作不会对目标系统进行任何更改,除非对MSI进行了定制设计,否则在几乎所有情况下这都是一个严重的设计错误。我最想知道的例外情况可能包括设置许可文件,或对处理文件进行后期处理以某种方式进行部署。我在现实生活中从未见过这样的构造,但是可以向管理安装中添加自定义操作。

管理安装的使用

在管理员安装后,可以将提取的文件放在可以从数千个工作站访问的网络共享上,并且可以从那里安装它。通常,这是通过专用部署软件(例如SCCM(以前为Microsoft SMS)或类似软件)完成的。但是,在某些情况下,用户也可以在工作站上手动触发安装。此网络共享安装的关键优势在于,工作站的自我修复操作以及后续的补丁和升级安装都可以访问原始源文件,因此安装成功完成。您可能已经体验到Microsoft Office突然会要求您插入安装CD,以便重新安装一些文件。除非资源在线可用,否则工作站也将发生这种情况。随着Microsoft在每台本地计算机上缓存越来越多的安装程序内容(Windows 7及更高版本,2018年1月更新),此源需求可能会在将来发生变化:有关此缓存的更多详细信息,请参见此答案:为什么MSI要求原始.msi文件才能继续与卸载?)。我要补充一点,您也可以将未提取的MSI文件放置在这样的位置,而无需通过管理映像将其解压缩,但是使用admin install允许单独下载任何文件(无需大量的cab下载)。对于庞大的MSI文件,这很重要,我更喜欢使用管理映像作为安装源,以使补丁程序更可靠-这是主观偏好,但这是由于实际经验所致。

管理安装和补丁程序

最后,MSI修补程序的创建通常需要为原始设置和新设置运行管理员安装。然后,根据新的和旧的安装程序文件夹之间的差异创建Windows Installer补丁文件。因此,管理员安装对于后续创建补丁文件至关重要。 Wise for Windows Installer就是这种情况,这是我发现的唯一一种可以在现实生活中创建真正可靠的补丁的产品(该产品现已停售,此处有一些详细信息:使用哪种安装产品?InstallShield,WiX,Wise,Advanced安装程序等)。再次基于广泛的实际测试,进行主观观察。

如果从供应商处获得MSI和MSP(路径文件),也可以修补管理员安装。您提取MSI并使用MSP修补管理映像。然后,目标文件夹将包含较新的MSI和任何新文件(前提是管理补丁有效,但根据我的经验通常不会这样做)。

“从源代码运行”

Chris提到“从源代码运行”,这确实是一个无用且过时的概念,可以将安装中的某些文件保留在网络共享上并从那里直接访问。老实说,我已经多年没有尝试过此功能了。

很少使用此功能,但是我猜想在所有工作站都应该访问一组通用资源文件的情况下,它可能会很有用。避免大量重复。然后,可以通过如上所述的“管理员安装补丁”部署对资源文件的修复,而无需在工作站上重新安装任何工具(目前尚不清楚该工具的工作情况-缺少使用此功能可能是个提示)。

大型软件套件包含许多不同的模块,其中只有少数几个由不同的人使用,可以通过仅安装一些必需的功能并将其余的从源运行或首次使用进行安装,从而大大加快安装和使用速度。这样可以加快安装速度,并加快后续补丁程序的安装速度,并可能使潜在的不安全和不必要的二进制文件脱离系统。最后一点在锁定环境中可能很重要。但是,在现实生活中,我已经看到补丁会在补丁程序发布后将通告的功能更改为本地安装,这是非常奇怪和不希望的行为,但体验非常普遍。在实践中,我发现“源代码运行”或广告用途很少。通常最好将设置一分为二,一个用于客户端,一个用于服务器安装。


UPDATE:

这是该设置的新摘要问题:管理员安装及其用途(文件提取及更新)。另请阅读以下有关“ Windows 7及更高版本中MSI的更改缓存行为”的评论。

评论


抱歉,我不同意。这些天,我在一家财富35强公司工作,在森林中有300,000个客户(仅在“商店”中就拥有80,000个PC),我们什么都不会使用广告安装。我们也不使用AD GPO部署。我们使用SCCM进行数以百万计的部署,而“广告安装”对此不起作用。

–克里斯托弗画家
2013年1月4日13:24

除非强制,否则我们也不会使用补丁。与一系列安装相比,将一系列安装进行操作更加困难。同样,如果您修补了管理安装,则必须卸载并重新安装从中安装的计算机。它只是什么都买不到。

–克里斯托弗画家
13年1月4日在13:26

广告安装不常见,是的-行政安装不是。修补是垃圾,这里没有论据-但是可能需要先对卸载顺序中有错误的产品进行修补,然后再正确删除(较小的升级补丁,以避免在修补时触发卸载序列)。或者用于更新非常小的软件包(通常只有一个文件)。

–斯坦因·奥斯穆尔
13年1月11日在7:20

您能指导我了解真实的用例吗?我真的从未见过使用管理员安装。您的“管理安装的使用”部分讨论如何使用SCCM从管理安装点进行安装,并具有查找源文件的附加价值。我从未见过这样做。我们总是将完整的MSI放在分发点上,并直接从分发点进行安装。 SCCM客户端具有一个代理程序/操作(Windows Installer源列表更新),该代理程序/操作可管理此关系,从而为您带来所提及的好处,而无需首先进行管理员安装。

–克里斯托弗画家
2013年4月4日12:31



管理映像允许将单个文件下载以进行修复(和自我修复)操作到客户端,从而避免了下载大型MSI文件进行简单修复操作的需要。 CAB文件可能非常庞大-如果您在一次主要的部署操作中尝试更新数千台计算机,就不会问这对网络是否重要:-)。而且不要让我开始使用CAB文件和防病毒软件。管理映像对于创建补丁程序也至关重要。

–斯坦因·奥斯穆尔
13年4月4日在22:25



#3 楼

假设您需要在一定数量的计算机上安装产品X,并且还需要为X应用一些补丁。您可以这样做,而不是在每台计算机上应用一系列补丁:


为X创建管理映像
将补丁应用到管理映像
安装使用修补程序映像在每台计算机上使用X

它可以节省一些时间和精力,并且您会知道所有计算机都肯定处于相同的修补程序级别。

评论


如果安装程序进行了一些注册表更改,该怎么办?我注意到(使用ORCA)在管理安装过程中调用了非常有限的操作。据我所知,它不会在管理员安装过程中执行用于执行注册表项的操作。在您的答复中提到的情况下如何处理?

– Anand Patel
2011-4-7在4:27



管理员安装未安装产品。它正在创建未压缩的可安装映像。基本上,它是在现有安装程序中扩展cab文件。当您运行该安装程序时,它可以完成安装程序通常要做的所有事情,包括创建注册表项。

– Ed。
2011年4月7日在18:03

#4 楼

如果您有按用户设置的系统,并且该系统禁止通过以下方式进行用户安装:组策略,则用户将可以通过管理安装从在目标文件夹中创建的msi安装。
这是一种授权安装软件的方式。