我正在尝试使用 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

根据 文档, ,返回码1619表示MSI包无法打开。但是,当我手动登录到机器并运行“\ as\share\p4vinst64.exe /S /V/qn”,安装工作完美无缺。

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

编辑:我应该注意,我还尝试使用文件资源在本地复制文件,然后从那里安装它。可悲的是,这也得到了同样的结果。

有帮助吗?

解决方案

丹尼尔在 Powershell.org 论坛能够帮我解决这个问题。

如果您执行以下命令,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
    }
} 

其他提示

好吧,这里会发生什么是安装了包装(尚未使用p4vinst64.exe测试!所以,不确定它为什么它不能作为错误打开包),但由于您没有指定生成的ProductID值,验证在安装结束时失败。这是您看到的错误。Package资源对于安装.exe软件包,甚至是MSIS,没有ProductID作为GUID。

可以使用WindowsProcess资源。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top