Puppet Windows package not seeing DisplayName in Registry?

478 views
Skip to first unread message

Reginald Choudari

unread,
Jun 7, 2013, 10:54:36 AM6/7/13
to puppet...@googlegroups.com
Hello,

I've got Package resource on my Windows machine that keeps creating itself even though the package has been properly installed.

I've got the name attribute set to the DisplayName found in the Registry for the package.

Every time the agent polls, I see in the Event Logs:

/Stage[main]/Mssql_rtwo_sptwo/Package[mssql2008r2sp2_exec]/ensure: created

This is what's in my manifest:

package { 'mssql2008r2sp2_exec':
    ensure          => installed,
    name            => 'SQL Server 2008 R2 SP2 Common Files',
    provider        => windows,
    source          => "C:\\puppet_temp\\${mssql_filename}",
    install_options => ['/quiet', '/IAcceptSQLServerLicenseTerms', '/allinstances'],
    require         => Exec['run_mssql2008r2sp2_artifact_extract_ps1'],
  }

I'm thinking there has got to be some weird bug/error with this ... Can anyone help?

Thanks in advance

Kevin D

unread,
Jun 10, 2013, 10:56:42 AM6/10/13
to puppet...@googlegroups.com
Reginal,

Does it work if you put the contents of the parameter 'name' into the title of the type:

package {'SQL Server 2008 R2 SP2 Common Files':
    ensure          => installed,

    provider        => windows,
    source          => "C:\\puppet_temp\\${mssql_filename}",
    install_options => ['/quiet', '/IAcceptSQLServerLicenseTerms', '/allinstances'],
    require         => Exec['run_mssql2008r2sp2_
artifact_extract_ps1'],
}

From http://docs.puppetlabs.com/windows/writing.html:

Identifying Packages

The title or name of the package must match the value of the DisplayName property in the registry, which is also the value displayed in Add/Remove Programs. Alternately, when a package name is not unique across versions (e.g. VMWare Tools, or where there are 32- and 64-bit versions with the same name), we provide the ability to specify the package’s PackageCode as the package name. This is a GUID that’s unique across all MSI builds. For instance:

Also, what are the results from this PowerShell command:

Get-WmiObject -class win32_product | Where-Object {$_.name.contains("SQL Server 2008")}

Josh Cooper

unread,
Jun 10, 2013, 12:15:32 PM6/10/13
to puppet...@googlegroups.com
Hi Reginald,



--
You received this message because you are subscribed to the Google Groups "Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to puppet-users...@googlegroups.com.
To post to this group, send email to puppet...@googlegroups.com.
Visit this group at http://groups.google.com/group/puppet-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Try running `puppet resource package` and see if the package you tried to installed is in the output, and that it's name matches exactly with the `name` parameter above.

Josh

--
Josh Cooper
Developer, Puppet Labs

Join us at PuppetConf 2013, August 22-23 in San Francisco - http://bit.ly/pupconf13
Register now and take advantage of the Early Bird discount - save 25%!

Reginald Choudari

unread,
Jun 12, 2013, 3:51:40 PM6/12/13
to puppet...@googlegroups.com
Tried renaming the title of the resource to what the name attribute was set to; no go.

After doing a 'puppet resource package' on the agent, I see a list of packages but the package listed here is not shown ... I confirmed that it is still showing 'ensure: created' in the event logs every puppet run.

Thanks

Josh Cooper

unread,
Jun 12, 2013, 5:23:50 PM6/12/13
to puppet...@googlegroups.com
On Wed, Jun 12, 2013 at 12:51 PM, Reginald Choudari <adnancho...@gmail.com> wrote:
Tried renaming the title of the resource to what the name attribute was set to; no go.

After doing a 'puppet resource package' on the agent, I see a list of packages but the package listed here is not shown ... I confirmed that it is still showing 'ensure: created' in the event logs every puppet run.

Thanks

Can you export the Uninstall registry key for that package? I want to see what the SystemComponent, etc values are.


On Friday, June 7, 2013 10:54:36 AM UTC-4, Reginald Choudari wrote:
Hello,

I've got Package resource on my Windows machine that keeps creating itself even though the package has been properly installed.

I've got the name attribute set to the DisplayName found in the Registry for the package.

Every time the agent polls, I see in the Event Logs:

/Stage[main]/Mssql_rtwo_sptwo/Package[mssql2008r2sp2_exec]/ensure: created

This is what's in my manifest:

package { 'mssql2008r2sp2_exec':
    ensure          => installed,
    name            => 'SQL Server 2008 R2 SP2 Common Files',
    provider        => windows,
    source          => "C:\\puppet_temp\\${mssql_filename}",
    install_options => ['/quiet', '/IAcceptSQLServerLicenseTerms', '/allinstances'],
    require         => Exec['run_mssql2008r2sp2_artifact_extract_ps1'],
  }

I'm thinking there has got to be some weird bug/error with this ... Can anyone help?

Thanks in advance

--
You received this message because you are subscribed to the Google Groups "Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to puppet-users...@googlegroups.com.
To post to this group, send email to puppet...@googlegroups.com.
Visit this group at http://groups.google.com/group/puppet-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Kevin D

unread,
Jun 13, 2013, 10:58:52 AM6/13/13
to puppet...@googlegroups.com
Can you also provide the output from this powershell command:


Get-WmiObject -class win32_product | Where-Object {$_.name.contains("SQL Server 2008")}

If a record for the installer isn't in the registry location "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" or the WMI Win32_Product class, the package may not have installed properly.  Can you install the package manually and get these values?

Reginald Choudari

unread,
Jun 13, 2013, 11:48:23 AM6/13/13
to puppet...@googlegroups.com
Kevin,

My apologies, I failed to mention that the record for the installer was outputted from the powershell command.

Thanks,
Reginald

Kevin D

unread,
Jun 13, 2013, 11:51:51 AM6/13/13
to puppet...@googlegroups.com
I don't think that I understand.

Can you please provide the output?

Reginald Choudari

unread,
Jun 13, 2013, 11:53:49 AM6/13/13
to puppet...@googlegroups.com
IdentifyingNumber : {FC835376-FF3B-4CAA-83E0-2148B3FB7C98}
Name              : SQL Server 2008 R2 SP2 Common Files
Vendor            : Microsoft Corporation
Version           : 10.52.4000.0
Caption           : SQL Server 2008 R2 SP2 Common Files

Reginald Choudari

unread,
Jun 13, 2013, 11:54:08 AM6/13/13
to puppet...@googlegroups.com
mssql2008r2sp2commonfiles.reg

Josh Cooper

unread,
Jun 15, 2013, 1:48:28 AM6/15/13
to puppet...@googlegroups.com
Unfortunately, Windows does not have an API for retrieving installed packages. So we scan the registry and apply heuristics to determine which packages to report on.

The overall goal has been for Puppet to report on the same set of packages that you see in Add/Remove Programs. Packages whose registry value SystemComponent=1 are hidden from ARP, so Puppet does the same, see https://github.com/puppetlabs/puppet/blob/master/lib/puppet/provider/package/windows/exe_package.rb#L34

Since Puppet never reports on SystemComponents, it will always think they are absent, and need to be installed each time it runs.

I'm thinking Puppet should not exclude SystemComponents? Are there any bad side effects if we included them?

Adnan Chowdhury

unread,
Jun 17, 2013, 2:53:50 PM6/17/13
to puppet...@googlegroups.com
I don't foresee any bad side-effects.


You received this message because you are subscribed to a topic in the Google Groups "Puppet Users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/puppet-users/ftvvO51bX1U/unsubscribe.

To unsubscribe from this group and all its topics, send an email to puppet-users...@googlegroups.com.

To post to this group, send email to puppet...@googlegroups.com.

Kevin D

unread,
Jun 17, 2013, 3:05:33 PM6/17/13
to puppet...@googlegroups.com
Josh,

You mentioned:

Unfortunately, Windows does not have an API for retrieving installed packages.

Does this include the WMI class Win32_Product?  Win32_product provides a limited set of information about all products installed using MSI/Windows Installer.  Although Windows Installer is a standard, not all compiled installers use this method.

-Kev


Josh Cooper

unread,
Jun 17, 2013, 4:37:21 PM6/17/13
to puppet...@googlegroups.com

--
You received this message because you are subscribed to the Google Groups "Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to puppet-users...@googlegroups.com.
To post to this group, send email to puppet...@googlegroups.com.

For more options, visit https://groups.google.com/groups/opt_out.
 
 

Win32_Product has issues. Simply enumerating the set of installed packages will cause a consistency check to be performed on all packages:

Josh Cooper

unread,
Jun 24, 2013, 12:47:30 PM6/24/13
to puppet...@googlegroups.com

Tomer Paz

unread,
May 27, 2014, 1:43:39 PM5/27/14
to puppet...@googlegroups.com
I know its quite late to respond on this (I have issued similar issue in another group and got a good answer pointing among other links to this thread)
having said that, are you sure there isn't a MS API for 'registered' MSI installations?
I used this script from MS online documentation: http://msdn.microsoft.com/en-us/library/aa369767%28v=vs.85%29.aspx
it sort of claim they have a simple API to exract info on all registered MSIs with windows installer.
I used the script and indeed it has shown All installed MSIs, without 'discriminating' our 'hidden' MSIs :)
that's how I realized there must be some dependency of Puppet windows package provider on the add/remove programs...

So, have I missed something? is the claim that MS API doesn't exist still in tact? (and I'm btw a *nix person, who unfortunately has to deal sometimes with MS stuff...)

I would love to have "ensure => ${version}" working for our hundreds of MSI components. Currently doesn't (puppet 3.6)

Thanks
To unsubscribe from this group and stop receiving emails from it, send an email to puppet-users+unsubscribe@googlegroups.com.

Josh Cooper

unread,
May 27, 2014, 2:02:40 PM5/27/14
to puppet...@googlegroups.com
On Tue, May 27, 2014 at 10:43 AM, Tomer Paz <tome...@gmail.com> wrote:
I know its quite late to respond on this (I have issued similar issue in another group and got a good answer pointing among other links to this thread)
having said that, are you sure there isn't a MS API for 'registered' MSI installations?
I used this script from MS online documentation: http://msdn.microsoft.com/en-us/library/aa369767%28v=vs.85%29.aspx
it sort of claim they have a simple API to exract info on all registered MSIs with windows installer.
I used the script and indeed it has shown All installed MSIs, without 'discriminating' our 'hidden' MSIs :)
that's how I realized there must be some dependency of Puppet windows package provider on the add/remove programs...

So, have I missed something? is the claim that MS API doesn't exist still in tact? (and I'm btw a *nix person, who unfortunately has to deal sometimes with MS stuff...)

The API will only tell you about MSI based packages, but not executable-based packages such as those created by InstallShield, NullSoft, Wise, Innosetup, etc. As a result, it's not a practical method for discovering installed packages.

Josh Cooper
Developer, Puppet Labs

Join us at PuppetConf 2014September 22-24 in San Francisco
Register by May 30th to take advantage of the Early Adopter discount save $349!
Reply all
Reply to author
Forward
0 new messages