7

我正在尝试使用 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 包。但是,当我手动登录机器并运行“ \\nas\share\p4vinst64.exe /S /V/qn ”时,安装工作完美无缺。

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

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

4

2 回答 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
    }
} 
于 2014-06-03T20:11:11.997 回答
1

好吧,这里发生的是包被安装(尚未使用 p4vinst64.exe 测试!所以,不知道为什么它说包无法打开作为错误)但由于您没有指定ProductID值,所以验证结束安装失败。那就是您看到的错误。该Package资源不适用于安装 .exe 包,甚至是没有 ProductID 表示为 GUID 的 MSI。

您可以改用该WindowsProcess资源。

于 2014-06-03T03:23:45.347 回答