Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PowerShell命令启动进程安装msi时,获取退出代码1603错误_Powershell_Windows Installer_Exit Code - Fatal编程技术网

使用PowerShell命令启动进程安装msi时,获取退出代码1603错误

使用PowerShell命令启动进程安装msi时,获取退出代码1603错误,powershell,windows-installer,exit-code,Powershell,Windows Installer,Exit Code,我们打算使用以下脚本在Windows服务器上安装MSI文件,并且能够在Windows服务器上安装MSI文件。下面的代码对某些MSI文件运行良好,但对其他文件则失败。获取出口代码为1603。如果我们进行干净的安装,它可以正常工作,但是在尝试重新安装时,我们得到了一个退出代码:1603错误。所有服务的所有配置设置都相同 如前所述,我们确认以下条件均不适用于我们的案例 Windows Installer正在尝试安装已安装在您电脑上的应用程序 您尝试安装Windows的文件夹 要安装的安装程序包已加密

我们打算使用以下脚本在Windows服务器上安装MSI文件,并且能够在Windows服务器上安装MSI文件。下面的代码对某些MSI文件运行良好,但对其他文件则失败。获取出口代码为1603。如果我们进行干净的安装,它可以正常工作,但是在尝试重新安装时,我们得到了一个退出代码:1603错误。所有服务的所有配置设置都相同

如前所述,我们确认以下条件均不适用于我们的案例

Windows Installer正在尝试安装已安装在您电脑上的应用程序

您尝试安装Windows的文件夹 要安装的安装程序包已加密

包含您试图安装Windows Installer软件包的文件夹的驱动器作为替代驱动器访问

系统帐户对您尝试将Windows Installer软件包安装到的文件夹没有完全控制权限。您注意到错误消息,因为Windows Installer服务使用系统帐户安装软件

代码:


如果使用MSI,则需要使用启动进程msiexec.exe-wait-nonewindow,而不是等待进程。如果你真的担心它永远运行,请考虑使用PopeS壳工作:

Start-Job -Name MyInstall -scriptBlock {
    Start-Process msiexec.exe -NoNewWindow -ArgumentList $MSIArguments
}
Wait-Job -Name MyInstall
然后检查作业Get job MyInstall的输出、状态消息、状态、错误,尤其是子作业

如果您的启动进程创建了尚未结束的子进程,那么您得到的错误可能是由于相互竞争的安装尝试造成的。尝试使用类似解决方案的方法保存详细的MSI日志:

$MSI = 'C:\path\to\msi.msi'
$DateStamp = get-date -Format yyyyMMddTHHmmss
$logFile = "$MSI-$DateStamp.log"
$MSIArguments = @(
    "/i"
    "`"$MSI`""
    "/qn"
    "/norestart"
    "/L*v"
    $logFile
)
Start-Process "msiexec.exe" -ArgumentList $MSIArguments -Wait -NoNewWindow

如果使用MSI,则需要使用启动进程msiexec.exe-wait-nonewindow,而不是等待进程。如果你真的担心它永远运行,请考虑使用PopeS壳工作:

Start-Job -Name MyInstall -scriptBlock {
    Start-Process msiexec.exe -NoNewWindow -ArgumentList $MSIArguments
}
Wait-Job -Name MyInstall
然后检查作业Get job MyInstall的输出、状态消息、状态、错误,尤其是子作业

如果您的启动进程创建了尚未结束的子进程,那么您得到的错误可能是由于相互竞争的安装尝试造成的。尝试使用类似解决方案的方法保存详细的MSI日志:

$MSI = 'C:\path\to\msi.msi'
$DateStamp = get-date -Format yyyyMMddTHHmmss
$logFile = "$MSI-$DateStamp.log"
$MSIArguments = @(
    "/i"
    "`"$MSI`""
    "/qn"
    "/norestart"
    "/L*v"
    $logFile
)
Start-Process "msiexec.exe" -ArgumentList $MSIArguments -Wait -NoNewWindow

-filePath$InstallerPath-ArgumentList$InstallCommand$InstallerPath和$InstallComand的值将有助于回答filePath$InstallerPath-ArgumentList$InstallCommand$InstallerPath和$InstallComand的值将有助于回答谢谢您的时间和回复。我会落实你的建议并尝试一下。谢谢你的时间和回复。我执行你的建议,并尝试一下。