运行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,删除它都可以使主安装正常完成,并可以按预期返回控制权,但是我想知道为什么这样做有效,因为我的测试样本非常有限。我想确保没有其他可能的解释。