自定义提供程序将无法运行msiexec

时间:2017-08-19 21:08:45

标签: puppet

我创建了一个类型和提供程序来检查程序是否已安装,如果不是,则运行msiexec。运行代理程序时的输出显示程序为“ensure = absent”,但它不会启动msi安装。任何人都可以看到我的代码有什么问题吗?

事件查看器未显示正在运行的msi安装

我的自定义类型:

Puppet::Type.newtype(:custom) do
  @doc = "Custom type"
  ensurable

  newparam(:name) do
    desc "name of program."
  end

  newparam(:source) do
    desc "The full path to the file."
  end
end

我的提供者:

Puppet::Type.type(:custom).provide(:win) do
  desc "."

  def create
    exec "msiexec.exe /i " + @resource[:source] + " /quiet"
  end

  def destroy
  end

  def exists?
    begin
      exec "puppet resource package " + @resource[:name]
    rescue Puppet::ExecutionFailure => e
      false
    end
  end
end

我的清单

class mod {    
  custom { 'AppNameHere':
    ensure => present,
    source => 'Q:\\app.msi',
  }
}

1 个答案:

答案 0 :(得分:0)

在Windows上使用Puppet,没有shell。您需要为所有内容提供完整路径(绝对路径)。