使用Powershell DSC软件包资源安装exe会获得返回码1619

问题描述 投票:7回答:2

我正在尝试使用Powershell DSC的Package资源来安装exe ...具体来说是Perforce的P4V。这是我的代码:

Configuration PerforceMachine
{
    Node "SERVERNAME"
    {
        Package P4V
        {
            Ensure = "Present"
            Name = "Perforce Visual Components"
            Path = "\\nas\share\p4vinst64.exe"
            ProductId = ''
            Arguments = "/S /V/qn" # args for silent mode
            LogPath = "$env:ProgramData\p4v_install.log"
        }
    }
}

运行此文件时,这是Powershell给我的错误:

PowerShell provider MSFT_PackageResource failed to execute Set-TargetResource functionality with error message: The return code 1619 was not expected. Configuration is likely not
correct
    + CategoryInfo          : InvalidOperation: (:) [], CimException
    + FullyQualifiedErrorId : ProviderOperationExecutionFailure
    + PSComputerName        : SERVERNAME

根据documentation,返回码1619表示无法打开MSI程序包。但是,当我手动登录到计算机并运行“ \\ nas \ share \ p4vinst64.exe / S / V / qn”时,安装将正常进行。

有人知道为什么这会失败吗?或者,有人可以告诉我如何解决此问题吗?我粘贴了从终端获得的所有错误信息,我的日志文件(p4v_install.log)是一个0字节的文件,并且事件查看器中没有事件。我不知道如何进一步解决它!

EDIT:我应该注意,我还尝试使用文件资源在本地复制文件,然后从那里安装它。不幸的是,结果还是一样。

powershell windows-installer p4v dsc
2个回答
7
投票

Powershell.org论坛上的Daniel能够为我解决这个问题。

如果您以LocalSystem执行,P4V InstallShield安装程序包装程序会将MSI文件放入错误的路径。

我设法开发了一种有效的配置,请参见下文。关键是这里的/ b开关,它将MSI文件放入定义的位置。我添加了ALLUSERS=1以使所有用户都可以看到快捷方式,并添加了REBOOT=ReallySuppress以免突然重新启动(否则会发生)。

Configuration PerforceMachine
{
    Package P4V
    {
        Ensure = "Present"
        Name = "Perforce Visual Components"
        Path = "C:\My\p4vinst64.exe"
        ProductId = ''
        Arguments = '/b"C:\Windows\Temp\PerforceClient" /S /V"/qn ALLUSERS=1 REBOOT=ReallySuppress"' # args for silent mode
    }
} 

1
投票

好吧,这里发生的是已经安装了软件包(尚未通过p4vinst64.exe进行测试!因此,不确定为什么说不能打开软件包作为错误),但是由于您未指定ProductID值,因此安装结束时验证失败。那是您看到的错误。 Package资源不适用于安装.exe软件包或什至没有ProductID表示为GUID的MSI。

© www.soinside.com 2019 - 2024. All rights reserved.