安装程序行为:BAT与PS启动过程

时间:2020-06-28 15:16:41

标签: powershell batch-file start-process

运行Autodesk 3D Studio Max 2021的安装程序时,我看到一些奇怪的行为。 Autodesk安装程序的关键问题在于它实际上是一个分阶段的安装程序,您启动一​​个EXE,该EXE从一些XML文件中读取数据,然后启动许多其他的安装程序,包括EXE和MSI。

Autodesk提供了用于自动化的BAT文件,看起来像这样

chcp 65001
"\\px\Rollouts\ADSK\2021\3ds_Max_2021\Deployment\image\Installer.exe" -i deploy -q --offline_mode -o \\px\Rollouts\ADSK\2021\3ds_Max_2021\Deployment\image\Deployment.xml -m \\px\Rollouts\ADSK\2021\3ds_Max_2021\Deployment\image\{35156605-CE91-4AF6-8207-56211CB30369}\setup.xml
Echo Done
timeout /t 600

我添加了echo和timeout行,以验证控件何时返回BAT文件,因为它们没有使用Start / wait。

我也将安装从BAT迁移到了这样的PS1

$executable = '"\\px\Rollouts\ADSK\2021\3ds_Max_2021\Deployment\image\Installer.exe"'
$deploymentXML = '"\\px\Rollouts\ADSK\2021\3ds_Max_2021\Deployment\image\Deployment.xml"'
$setupXML = '"\\px\Rollouts\ADSK\2021\3ds_Max_2021\Deployment\image\{35156605-CE91-4AF6-8207-56211CB30369}\setup.xml"'

$argumentList = "-i deploy -q --offline_mode -o $deploymentXML -m $setupXML"

$exitCode = (Start-Process -FilePath $executable -Argumentlist $argumentList -Wait -ErrorAction Stop -PassThru).ExitCode

Write-Host "TaskExitCode: $exitCode"

从理论上讲这应该可行。当PowerShell等待安装完成时,安装程​​序将运行,完成后,控制权将返回到PowerShell,并显示消息。但是在永远不会发生的PowerShell中,控制永远不会返回到PowerShell。至少在Windows 10中。在Windows 7中,它可以正常工作。 BAT文件在两种情况下都可以正常工作。

主要安装中要安装的项目之一是名为Autodesk Desktop App的东西,它是一项运行并检查更新的服务。如果我从安装程序中删除了它(这是一个简单的XML编辑),则控制权返回到PowerShell,并且消息按预期显示,即使在Windows 10中也是如此。

所以,我的问题是,这Start-Process -wait可能正在等待由Start-Process调用的EXE安装和启动的服务吗?而且那只能在更高版本的Powershell中发生吗? 我已经测试了许多不同的产品,无论是否安装了Desktop App,删除它都可以使主安装正常完成,并可以按预期返回控制权,但是我想知道为什么这样做有效,因为我的测试样本非常有限。我想确保没有其他可能的解释。

0 个答案:

没有答案